Snippet content copied to clipboard.
Are you sure to delete this snippet? No, don't delete
  1. drop function if exists search_gids(text);
  2. create function search_gids(term text) returns table(ItemType text, GID int, Label text, Placement2 text, Provisioner text, Config text)
  3. language plpgsql
  4. as $$
  5. begin
  6. term := '%' || lower(term) || '%';
  7. return query
  8. Select
  9. 'Category1' as ItemType, Category1.GID as GID, Category1.Placement1 as Label,
  10. GID.Placement2 as Placement2, Vendor1.Provisioner as Provisioner, Vendor2.Config as Config
  11. From Category1
  12. JOIN GID ON GID.GID = Category1.GID
  13. LEFT OUTER JOIN Vendor1 ON Vendor1.ID = Category1.Provisioner
  14. LEFT OUTER JOIN Vendor2 ON Vendor2.ID = Category1.Config
  15. WHERE lower(Category1.Placement1) LIKE term OR lower(GID.Placement2) LIKE term
  16. union
  17. Select
  18. 'Category2' as ItemType, Category2.GID as GID, Category2.Placement1 as Label,
  19. GID.Placement2 as Placement2, Category2Provisioner.Category2Provisioner as Provisioner,
  20. Category2Config.Config as Config
  21. From Category2
  22. JOIN GID ON GID.GID = Category2.GID
  23. LEFT OUTER JOIN Category2Provisioner ON Category2Provisioner.ID = Category2.Provisioner
  24. LEFT OUTER JOIN Category2Config ON Category2Config.ID = Category2.Config
  25. WHERE lower(Category2.Placement1) LIKE term OR lower(GID.Placement2) LIKE term
  26. union
  27. Select
  28. 'Category3' as ItemType, Category3.GID as GID, Category3.Placement1 as Label,
  29. GID.Placement2 as Placement2, Category3Provisioner.Provisioner as Provisioner,
  30. Category3Config.Config as Config
  31. From Category3
  32. JOIN GID ON GID.GID = Category3.GID
  33. LEFT OUTER JOIN Category3Provisioner ON Category3Provisioner.ID = Category3.Provisioner
  34. LEFT OUTER JOIN Category3Config ON Category3Config.ID = Category3.Config
  35. WHERE lower(Category3.Placement1) LIKE term OR lower(GID.Placement2) LIKE term
  36. union
  37. Select
  38. 'Category4' as ItemType, Category4.GID as GID, Category4.Placement1 as Label,
  39. GID.Placement2 as Placement2, Category4Provisioner.Provisioner as Provisioner,
  40. Category4.Config as Config
  41. From Category4
  42. JOIN GID ON GID.GID = Category4.GID
  43. LEFT OUTER JOIN Category4Provisioner ON Category4Provisioner.ID = Category4.Provisioner
  44. WHERE lower(Category4.Placement1) LIKE term OR lower(GID.Placement2) LIKE term;
  45. end; $$

Edit this Snippet