Skip to content

Views

pharmacy_subscription_status

Created in migration 03_visibility_filters.md, this view computes whether a pharmacy is visible to customers.

CREATE OR REPLACE VIEW public.pharmacy_subscription_status AS
SELECT
  s.id AS pharmacy_id,
  s.store_name,
  s.approval_status,
  ps.id AS subscription_id,
  ps.status AS subscription_status,
  ps.subscription_type,
  ps.subscription_start_date,
  ps.subscription_end_date,
  CASE
    WHEN ps.status = 'active' AND ps.subscription_end_date >= NOW() THEN true
    ELSE false
  END AS is_visible
FROM sellers s
LEFT JOIN LATERAL (
  SELECT * FROM pharmacy_subscriptions
  WHERE pharmacy_id = s.id
  ORDER BY created_at DESC
  LIMIT 1
) ps ON true
WHERE s.approval_status = 'approved';

This view is consumed by the Flutter app's fetchNearbyPharmacies and fetchAllPharmacies to filter out non-subscribed pharmacies.