69 lines
2.8 KiB
MySQL
69 lines
2.8 KiB
MySQL
|
|
-- Compatibility bootstrap for empty production databases.
|
||
|
|
-- Run after scripts/init-db.sql and before/after scripts/seed.sql.
|
||
|
|
|
||
|
|
BEGIN;
|
||
|
|
|
||
|
|
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS user_role_assignments (
|
||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
|
|
user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||
|
|
role_id UUID NOT NULL REFERENCES roles(id) ON DELETE CASCADE,
|
||
|
|
status VARCHAR(50) NOT NULL DEFAULT 'PENDING',
|
||
|
|
approved_at TIMESTAMPTZ,
|
||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
|
|
UNIQUE(user_id, role_id)
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_user_role_assignments_user_id
|
||
|
|
ON user_role_assignments(user_id);
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS role_sidebar_configs (
|
||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
|
|
role_id UUID NOT NULL REFERENCES roles(id) ON DELETE CASCADE,
|
||
|
|
audience VARCHAR(50) NOT NULL,
|
||
|
|
config_json JSONB NOT NULL,
|
||
|
|
version INTEGER NOT NULL DEFAULT 1,
|
||
|
|
is_active BOOLEAN NOT NULL DEFAULT true,
|
||
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_active_role_sidebar_per_role_audience
|
||
|
|
ON role_sidebar_configs(role_id, audience) WHERE is_active = true;
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS role_runtime_configs (
|
||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
|
|
role_id UUID NOT NULL REFERENCES roles(id) ON DELETE CASCADE,
|
||
|
|
config_json JSONB NOT NULL,
|
||
|
|
version INTEGER NOT NULL DEFAULT 1,
|
||
|
|
is_active BOOLEAN NOT NULL DEFAULT true,
|
||
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_active_role_runtime_per_role
|
||
|
|
ON role_runtime_configs(role_id) WHERE is_active = true;
|
||
|
|
|
||
|
|
INSERT INTO user_role_assignments (id, user_id, role_id, status, approved_at, created_at)
|
||
|
|
SELECT id, user_id, role_id, status, approved_at, created_at
|
||
|
|
FROM user_roles
|
||
|
|
ON CONFLICT (user_id, role_id) DO NOTHING;
|
||
|
|
|
||
|
|
INSERT INTO role_sidebar_configs (id, role_id, audience, config_json, version, is_active, updated_at)
|
||
|
|
SELECT id, role_id, audience, config_json, version, is_active, updated_at
|
||
|
|
FROM dashboard_configs
|
||
|
|
ON CONFLICT DO NOTHING;
|
||
|
|
|
||
|
|
INSERT INTO role_runtime_configs (id, role_id, config_json, version, is_active, updated_at)
|
||
|
|
SELECT id, role_id, config_json, version, is_active, updated_at
|
||
|
|
FROM runtime_configs
|
||
|
|
ON CONFLICT DO NOTHING;
|
||
|
|
|
||
|
|
INSERT INTO pricing_packages (name, role_key, package_type, tracecoins_amount, price_inr, description, is_active)
|
||
|
|
VALUES
|
||
|
|
('Starter Credits', 'COMPANY', 'TRACECOIN_BUNDLE', 100, 49900, 'Starter company credit bundle for demo purchases.', true),
|
||
|
|
('Growth Credits', 'COMPANY', 'TRACECOIN_BUNDLE', 300, 129900, 'Growth company credit bundle for regular hiring.', true),
|
||
|
|
('Scale Credits', 'COMPANY', 'TRACECOIN_BUNDLE', 750, 299900, 'Scale company credit bundle for higher-volume recruitment.', true)
|
||
|
|
ON CONFLICT DO NOTHING;
|
||
|
|
|
||
|
|
COMMIT;
|