-- ============================================================================= -- DEVELOPMENT SEED DATA -- ============================================================================= -- WARNING: DO NOT RUN IN PRODUCTION! -- ============================================================================= -- ============================================================================= -- Temporarily disable RLS inside the seed script -- ============================================================================= ALTER TABLE tenants DISABLE ROW LEVEL SECURITY; ALTER TABLE users DISABLE ROW LEVEL SECURITY; ALTER TABLE contracts DISABLE ROW LEVEL SECURITY; ALTER TABLE deliverables DISABLE ROW LEVEL SECURITY; ALTER TABLE milestones DISABLE ROW LEVEL SECURITY; ALTER TABLE comments DISABLE ROW LEVEL SECURITY; ALTER TABLE attachments DISABLE ROW LEVEL SECURITY; ALTER TABLE audit_logs DISABLE ROW LEVEL SECURITY; ALTER TABLE analytics_events DISABLE ROW LEVEL SECURITY; ALTER TABLE notifications DISABLE ROW LEVEL SECURITY; -- ============================================================================= BEGIN; -- ============================================================================= -- Create test tenants -- ============================================================================= -- Permanent tenant 1: ACME Corporation INSERT INTO tenants (id, name, type) VALUES ('10000000-0000-0000-0000-000000000001', 'ACME Corporation', 'permanent'); -- Permanent tenant 2: TechStart Inc INSERT INTO tenants (id, name, type) VALUES ('20000000-0000-0000-0000-000000000002', 'TechStart Inc', 'permanent'); -- Temporary tenant (project workspace) INSERT INTO tenants (id, name, type, parent_tenant_id, expires_at) VALUES ('30000000-0000-0000-0000-000000000003', 'ACME-Website-Project', 'temporary', '10000000-0000-0000-0000-000000000001', NOW() + INTERVAL '6 months'); -- ============================================================================= -- Create test users -- ============================================================================= -- ACME Corporation users -- Password for all: "password123" (hashed with bcrypt cost 12) INSERT INTO users (id, tenant_id, email, password_hash, name, role) VALUES -- Admin ('11000000-0000-0000-0000-000000000001', '10000000-0000-0000-0000-000000000001', 'admin@acme.com', '$2a$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewY5GyYKU.PN5Hyu', 'Alice Admin', 'admin'), -- Vendor ('11000000-0000-0000-0000-000000000002', '10000000-0000-0000-0000-000000000001', 'vendor@acme.com', '$2a$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewY5GyYKU.PN5Hyu', 'Bob Vendor', 'vendor'), -- Consumer ('11000000-0000-0000-0000-000000000003', '10000000-0000-0000-0000-000000000001', 'consumer@acme.com', '$2a$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewY5GyYKU.PN5Hyu', 'Charlie Consumer', 'consumer'); -- TechStart Inc users INSERT INTO users (id, tenant_id, email, password_hash, name, role) VALUES ('21000000-0000-0000-0000-000000000001', '20000000-0000-0000-0000-000000000002', 'admin@techstart.com', '$2a$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewY5GyYKU.PN5Hyu', 'Diana Director', 'admin'); -- ============================================================================= -- Create test contracts -- ============================================================================= INSERT INTO contracts ( id, tenant_id, vendor_id, consumer_id, title, description, status, start_date, end_date, total_amount, created_by ) VALUES -- Active contract ('c1000000-0000-0000-0000-000000000001', '10000000-0000-0000-0000-000000000001', '11000000-0000-0000-0000-000000000002', '11000000-0000-0000-0000-000000000003', 'Website Redesign Project', 'Complete overhaul of company website with modern design and responsive layout.', 'active', CURRENT_DATE - INTERVAL '1 month', CURRENT_DATE + INTERVAL '5 months', 50000.00, '11000000-0000-0000-0000-000000000003'), -- Draft contract ('c2000000-0000-0000-0000-000000000002', '10000000-0000-0000-0000-000000000001', '11000000-0000-0000-0000-000000000002', '11000000-0000-0000-0000-000000000003', 'Mobile App Development', 'Native mobile application for iOS and Android platforms.', 'draft', CURRENT_DATE + INTERVAL '1 month', CURRENT_DATE + INTERVAL '7 months', 75000.00, '11000000-0000-0000-0000-000000000003'); -- ============================================================================= -- Create test deliverables -- ============================================================================= INSERT INTO deliverables ( id, tenant_id, contract_id, title, description, sequence_number, status, deadline ) VALUES -- Website project deliverables ('d1000000-0000-0000-0000-000000000001', '10000000-0000-0000-0000-000000000001', 'c1000000-0000-0000-0000-000000000001', 'Homepage Design', 'Design mockups for the homepage including desktop and mobile views.', 1, 'approved', CURRENT_DATE - INTERVAL '2 weeks'), ('d2000000-0000-0000-0000-000000000002', '10000000-0000-0000-0000-000000000001', 'c1000000-0000-0000-0000-000000000001', 'Backend API Development', 'RESTful API for content management and user authentication.', 2, 'in_progress', CURRENT_DATE + INTERVAL '1 month'), ('d3000000-0000-0000-0000-000000000003', '10000000-0000-0000-0000-000000000001', 'c1000000-0000-0000-0000-000000000001', 'Frontend Implementation', 'React-based frontend with responsive design.', 3, 'pending', CURRENT_DATE + INTERVAL '2 months'); -- ============================================================================= -- Create test milestones -- ============================================================================= INSERT INTO milestones ( id, tenant_id, deliverable_id, title, type, condition_value, amount, status ) VALUES -- Homepage milestones ('10000000-0000-4000-8000-000000000101', '10000000-0000-0000-0000-000000000001', 'd1000000-0000-0000-0000-000000000001', 'Design approval', 'fixed_date', (CURRENT_DATE - INTERVAL '2 weeks')::TEXT, 5000.00, 'completed'), -- Backend milestones ('20000000-0000-4000-8000-000000000102', '10000000-0000-0000-0000-000000000001', 'd2000000-0000-0000-0000-000000000002', 'API endpoints complete', 'duration_from_start', '30', 15000.00, 'in_progress'); -- ============================================================================= -- Create test comments -- ============================================================================= INSERT INTO comments ( id, tenant_id, entity_type, entity_id, content, user_id ) VALUES ('30000000-0000-4000-8000-000000000201', '10000000-0000-0000-0000-000000000001', 'contract', 'c1000000-0000-0000-0000-000000000001', 'Looking forward to starting this project!', '11000000-0000-0000-0000-000000000003'), ('30000000-0000-4000-8000-000000000202', '10000000-0000-0000-0000-000000000001', 'deliverable', 'd1000000-0000-0000-0000-000000000001', 'Great work on the designs! Approved.', '11000000-0000-0000-0000-000000000003'); COMMIT; -- ============================================================================= -- Re-enable RLS after the seed script -- ============================================================================= ALTER TABLE tenants ENABLE ROW LEVEL SECURITY; ALTER TABLE users ENABLE ROW LEVEL SECURITY; ALTER TABLE contracts ENABLE ROW LEVEL SECURITY; ALTER TABLE deliverables ENABLE ROW LEVEL SECURITY; ALTER TABLE milestones ENABLE ROW LEVEL SECURITY; ALTER TABLE comments ENABLE ROW LEVEL SECURITY; ALTER TABLE attachments ENABLE ROW LEVEL SECURITY; ALTER TABLE audit_logs ENABLE ROW LEVEL SECURITY; ALTER TABLE analytics_events ENABLE ROW LEVEL SECURITY; ALTER TABLE notifications ENABLE ROW LEVEL SECURITY; -- =============================================================================