DROP VIEW "public"."tech_vendor_detail_view";--> statement-breakpoint CREATE VIEW "public"."tech_vendor_detail_view" AS (select "id", "vendor_name", "vendor_code", "tax_id", "address", "country", "country_eng", "country_fab", "agent_name", "agent_phone", "agent_email", "phone", "email", "website", "status", "tech_vendor_type", "representative_name", "representative_email", "representative_phone", "representative_birth", "created_at", "updated_at", (SELECT COALESCE( json_agg( json_build_object( 'id', c.id, 'contactName', c.contact_name, 'contactPosition', c.contact_position, 'contactEmail', c.contact_email, 'contactPhone', c.contact_phone, 'isPrimary', c.is_primary ) ), '[]'::json ) FROM vendor_contacts c WHERE c.vendor_id = tech_vendors.id) as "contacts", (SELECT COALESCE( json_agg( json_build_object( 'id', a.id, 'fileName', a.file_name, 'filePath', a.file_path, 'attachmentType', a.attachment_type, 'createdAt', a.created_at ) ORDER BY a.attachment_type, a.created_at DESC ), '[]'::json ) FROM tech_vendor_attachments a WHERE a.vendor_id = tech_vendors.id) as "attachments", (SELECT COUNT(*) FROM tech_vendor_attachments a WHERE a.vendor_id = tech_vendors.id) as "attachment_count", (SELECT COUNT(*) FROM vendor_contacts c WHERE c.vendor_id = tech_vendors.id) as "contact_count", (SELECT COALESCE( json_agg( json_build_object( 'itemCode', i.item_code ) ), '[]'::json ) FROM tech_vendor_possible_items i LEFT JOIN items it ON i.item_code = it.item_code WHERE i.vendor_id = tech_vendors.id) as "possible_items", (SELECT COUNT(*) FROM tech_vendor_possible_items i WHERE i.vendor_id = tech_vendors.id) as "item_count" from "tech_vendors");