Add demo account seed migration for App Store review.
Seeds demo@example.com with sample clients, business, and invoices via the Drizzle journal. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,172 @@
|
||||
-- App Store review demo account: demo@example.com / demo123
|
||||
DO $$
|
||||
DECLARE
|
||||
demo_user_id varchar(255) := 'a0000000-0000-4000-8000-000000000001';
|
||||
demo_account_id text := 'a0000000-0000-4000-8000-000000000010';
|
||||
demo_business_id varchar(255) := 'a0000000-0000-4000-8000-000000000020';
|
||||
demo_client_acme varchar(255) := 'a0000000-0000-4000-8000-000000000030';
|
||||
demo_client_bright varchar(255) := 'a0000000-0000-4000-8000-000000000031';
|
||||
demo_invoice_draft varchar(255) := 'a0000000-0000-4000-8000-000000000040';
|
||||
demo_invoice_sent varchar(255) := 'a0000000-0000-4000-8000-000000000041';
|
||||
demo_invoice_paid varchar(255) := 'a0000000-0000-4000-8000-000000000042';
|
||||
demo_password_hash text := '$2b$12$90U31okgkhOwSQD5RDqHwO0QpcC.pkKsqKb1IPnHfKUZm/2A9hzs6';
|
||||
BEGIN
|
||||
IF EXISTS (SELECT 1 FROM "beenvoice_user" WHERE "email" = 'demo@example.com') THEN
|
||||
RETURN;
|
||||
END IF;
|
||||
|
||||
INSERT INTO "beenvoice_user" (
|
||||
"id", "name", "email", "emailVerified", "password", "role"
|
||||
) VALUES (
|
||||
demo_user_id,
|
||||
'Demo User',
|
||||
'demo@example.com',
|
||||
true,
|
||||
demo_password_hash,
|
||||
'user'
|
||||
);
|
||||
|
||||
INSERT INTO "beenvoice_account" (
|
||||
"id", "userId", "accountId", "providerId", "password"
|
||||
) VALUES (
|
||||
demo_account_id,
|
||||
demo_user_id,
|
||||
demo_user_id,
|
||||
'credential',
|
||||
demo_password_hash
|
||||
);
|
||||
|
||||
INSERT INTO "beenvoice_business" (
|
||||
"id", "name", "nickname", "email", "phone", "addressLine1", "city", "state",
|
||||
"postalCode", "country", "isDefault", "createdById"
|
||||
) VALUES (
|
||||
demo_business_id,
|
||||
'Demo Studio LLC',
|
||||
'Demo Studio',
|
||||
'hello@demostudio.example',
|
||||
'(555) 010-2000',
|
||||
'100 Market Street',
|
||||
'San Francisco',
|
||||
'CA',
|
||||
'94105',
|
||||
'United States',
|
||||
true,
|
||||
demo_user_id
|
||||
);
|
||||
|
||||
INSERT INTO "beenvoice_client" (
|
||||
"id", "name", "email", "phone", "defaultHourlyRate", "currency", "createdById"
|
||||
) VALUES
|
||||
(
|
||||
demo_client_acme,
|
||||
'Acme Corporation',
|
||||
'billing@acme.example',
|
||||
'(555) 010-3001',
|
||||
150,
|
||||
'USD',
|
||||
demo_user_id
|
||||
),
|
||||
(
|
||||
demo_client_bright,
|
||||
'Bright Labs',
|
||||
'ap@brightlabs.example',
|
||||
'(555) 010-3002',
|
||||
125,
|
||||
'USD',
|
||||
demo_user_id
|
||||
);
|
||||
|
||||
INSERT INTO "beenvoice_invoice" (
|
||||
"id", "invoiceNumber", "invoicePrefix", "businessId", "clientId",
|
||||
"issueDate", "dueDate", "status", "totalAmount", "taxRate", "notes", "currency", "createdById"
|
||||
) VALUES
|
||||
(
|
||||
demo_invoice_draft,
|
||||
'INV-DEMO-001',
|
||||
'#',
|
||||
demo_business_id,
|
||||
demo_client_acme,
|
||||
NOW() - INTERVAL '5 days',
|
||||
NOW() + INTERVAL '25 days',
|
||||
'draft',
|
||||
1500,
|
||||
0,
|
||||
'Website redesign — phase 1',
|
||||
'USD',
|
||||
demo_user_id
|
||||
),
|
||||
(
|
||||
demo_invoice_sent,
|
||||
'INV-DEMO-002',
|
||||
'#',
|
||||
demo_business_id,
|
||||
demo_client_bright,
|
||||
NOW() - INTERVAL '20 days',
|
||||
NOW() - INTERVAL '5 days',
|
||||
'sent',
|
||||
2500,
|
||||
0,
|
||||
'Mobile app consulting',
|
||||
'USD',
|
||||
demo_user_id
|
||||
),
|
||||
(
|
||||
demo_invoice_paid,
|
||||
'INV-DEMO-003',
|
||||
'#',
|
||||
demo_business_id,
|
||||
demo_client_acme,
|
||||
NOW() - INTERVAL '45 days',
|
||||
NOW() - INTERVAL '15 days',
|
||||
'paid',
|
||||
3200,
|
||||
0,
|
||||
'API integration project',
|
||||
'USD',
|
||||
demo_user_id
|
||||
);
|
||||
|
||||
INSERT INTO "beenvoice_invoice_item" (
|
||||
"id", "invoiceId", "date", "description", "hours", "rate", "amount", "position"
|
||||
) VALUES
|
||||
(
|
||||
'a0000000-0000-4000-8000-000000000050',
|
||||
demo_invoice_draft,
|
||||
NOW() - INTERVAL '5 days',
|
||||
'UX wireframes and design system',
|
||||
10,
|
||||
150,
|
||||
1500,
|
||||
0
|
||||
),
|
||||
(
|
||||
'a0000000-0000-4000-8000-000000000051',
|
||||
demo_invoice_sent,
|
||||
NOW() - INTERVAL '20 days',
|
||||
'Sprint planning and implementation',
|
||||
20,
|
||||
125,
|
||||
2500,
|
||||
0
|
||||
),
|
||||
(
|
||||
'a0000000-0000-4000-8000-000000000052',
|
||||
demo_invoice_paid,
|
||||
NOW() - INTERVAL '45 days',
|
||||
'Backend API work',
|
||||
16,
|
||||
150,
|
||||
2400,
|
||||
0
|
||||
),
|
||||
(
|
||||
'a0000000-0000-4000-8000-000000000053',
|
||||
demo_invoice_paid,
|
||||
NOW() - INTERVAL '44 days',
|
||||
'Deployment and documentation',
|
||||
5.33,
|
||||
150,
|
||||
800,
|
||||
1
|
||||
);
|
||||
END $$;
|
||||
@@ -99,6 +99,13 @@
|
||||
"when": 1781194385000,
|
||||
"tag": "0013_invoice_public_token_expiry",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"version": "7",
|
||||
"when": 1781300000000,
|
||||
"tag": "0014_seed_demo_account",
|
||||
"breakpoints": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user