chatbot_api_catalog_images.sql 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. -- chatbot_api.catalog_images
  2. -- Returns product image URLs for a given model pattern.
  3. -- base_url is read from public.config where item = 'File_Url'.
  4. -- full_url = base_url || apppicture_path
  5. CREATE OR REPLACE FUNCTION chatbot_api.catalog_images(
  6. p_model TEXT,
  7. p_limit INT DEFAULT 10
  8. )
  9. RETURNS JSON
  10. LANGUAGE sql
  11. STABLE
  12. AS $$
  13. SELECT json_build_object(
  14. 'base_url', (
  15. SELECT item_value FROM public.config WHERE item = 'File_Url' LIMIT 1
  16. ),
  17. 'images', COALESCE(
  18. (
  19. SELECT json_agg(row)
  20. FROM (
  21. SELECT json_build_object(
  22. 'model', c.model,
  23. 'apppicture_path', spp.apppicture_path,
  24. 'full_url', (
  25. SELECT item_value FROM public.config WHERE item = 'File_Url' LIMIT 1
  26. ) || spp.apppicture_path
  27. ) AS row
  28. FROM shop.shop_product_picture spp
  29. JOIN shop.shop_product sp ON spp.product_id = sp.product_id
  30. JOIN public.catalog c ON sp.caf_serial_no = c.serial_no
  31. WHERE c.model ILIKE '%' || p_model || '%'
  32. AND spp.apppicture_path IS NOT NULL
  33. LIMIT p_limit
  34. ) sub
  35. ),
  36. '[]'::json
  37. )
  38. );
  39. $$;
  40. GRANT EXECUTE ON FUNCTION chatbot_api.catalog_images(TEXT, INT) TO chatbot_readonly;