mirror of
https://git.meshkee.com/Meshkee/backend.git
synced 2026-08-11 22:30:59 +04:30
Add business-scoped invoices billed to users.
Introduce invoices.user_id, business template/invoice APIs, and tenant-domain public URLs so business dashboards can issue invoices without platform-scope template mismatches. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Cursor
parent
e59db25814
commit
5734a73c9c
@@ -0,0 +1,46 @@
|
||||
-- Invoices bill a User (not a Business). business_id remains tenant/context.
|
||||
|
||||
ALTER TABLE invoices
|
||||
ADD COLUMN IF NOT EXISTS user_id BIGINT;
|
||||
|
||||
-- Backfill: business owner, else any business_users row for that business
|
||||
UPDATE invoices i
|
||||
SET user_id = COALESCE(
|
||||
(
|
||||
SELECT bu.user_id
|
||||
FROM business_users bu
|
||||
WHERE bu.business_id = i.business_id
|
||||
AND bu.is_owner = TRUE
|
||||
ORDER BY bu.user_id
|
||||
LIMIT 1
|
||||
),
|
||||
(
|
||||
SELECT bu.user_id
|
||||
FROM business_users bu
|
||||
WHERE bu.business_id = i.business_id
|
||||
ORDER BY bu.user_id
|
||||
LIMIT 1
|
||||
)
|
||||
)
|
||||
WHERE i.user_id IS NULL;
|
||||
|
||||
-- Drop any invoices that still have no resolvable user (orphan businesses)
|
||||
DELETE FROM invoices WHERE user_id IS NULL;
|
||||
|
||||
ALTER TABLE invoices
|
||||
ALTER COLUMN user_id SET NOT NULL;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE invoices
|
||||
ADD CONSTRAINT invoices_user_id_fkey
|
||||
FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE RESTRICT;
|
||||
EXCEPTION
|
||||
WHEN duplicate_object THEN NULL;
|
||||
END $$;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_invoices_user_created
|
||||
ON invoices (user_id, created_at DESC);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_invoices_issuer_business_created
|
||||
ON invoices (issuer_business_id, created_at DESC)
|
||||
WHERE issuer_business_id IS NOT NULL;
|
||||
Reference in New Issue
Block a user