nxtgauge-backend-rust/crates/db/migrations/20260721060000_create_tax_rules_and_reviews.up.sql

32 lines
1.4 KiB
MySQL
Raw Normal View History

fix: audit_logs, tax_rules, reviews tables never existed; fix wrong column in review creation Finished the sweep of every table referenced by live Rust code but not created by any active migration: - audit_logs / audit_log_changes — backs wallet::audit() (crates/wallet), called from every admin Tracecoin balance adjustment (apps/payments/src/admin.rs::adjust_credits). actor_type defaulted since the only caller doesn't supply it. - tax_rules — backs the admin tax-rule CRUD in apps/payments/src/admin.rs. init-db.sql has a differently-named version (title/percentage/ applicable_to); schema here matches the live code's actual columns (name/tax_rate/applies_to). - reviews — backs the professional review/rating system (apps/users/src/handlers/reviews.rs). Also fixed a real bug found while building the reviews schema: admin_create_review's customer-lookup subquery selected `lead_requests.user_id`, a column that has never existed (it's `customer_user_id`) — would have failed on the very first review creation attempt now that lead_requests actually exists. Checked every other previously-flagged table (permissions, orders, external_roles, internal_roles, kb_*, notification_*, order_items, portfolio_images, smtp_configs, dashboard_widgets, verification_documents) against actual Rust usage — none of them are referenced by a real SQL query (grep hits were all Rust variable/type names), so nothing to fix there. Full migration-chain sweep confirms zero remaining "references a table before it's created" issues.
2026-07-21 03:05:14 +05:30
-- tax_rules backs apps/payments/src/admin.rs's admin tax-rule CRUD. Never
-- created by any active migration; init-db.sql has a differently-named
-- version (title/percentage/applicable_to) that doesn't match what the live
-- code reads/writes (name/tax_rate/applies_to) — schema below matches the
-- Rust code exactly.
CREATE TABLE IF NOT EXISTS tax_rules (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name VARCHAR(255) NOT NULL,
tax_type VARCHAR(50) NOT NULL,
tax_rate NUMERIC(5,2) NOT NULL,
applies_to VARCHAR(50),
is_active BOOLEAN NOT NULL DEFAULT true,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
-- reviews backs apps/users/src/handlers/reviews.rs (professional review/
-- rating system, sourced from completed lead_requests). Same story — only
-- ever existed in scripts/init-db.sql, never applied.
CREATE TABLE IF NOT EXISTS reviews (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
lead_request_id UUID REFERENCES lead_requests(id) ON DELETE SET NULL,
customer_id UUID,
professional_id UUID,
rating SMALLINT NOT NULL,
comment TEXT,
is_published BOOLEAN NOT NULL DEFAULT true,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_reviews_professional_id ON reviews(professional_id);
CREATE INDEX IF NOT EXISTS idx_reviews_customer_id ON reviews(customer_id);