44 lines
1.8 KiB
MySQL
44 lines
1.8 KiB
MySQL
|
|
-- Devtest-only prerequisites for enabling supply-api IAM routes in the supply database.
|
||
|
|
-- Purpose:
|
||
|
|
-- 1. Create the minimum platform-side tables required by sql/postgresql/iam_schema_v1.sql.
|
||
|
|
-- 2. Avoid importing platform_core_schema_v1.sql wholesale, because its audit_events baseline
|
||
|
|
-- conflicts with supply-api/sql/postgresql/partition_strategy_v1.sql in the same schema.
|
||
|
|
|
||
|
|
BEGIN;
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS core_tenants (
|
||
|
|
id BIGINT PRIMARY KEY,
|
||
|
|
tenant_code VARCHAR(64) NOT NULL UNIQUE,
|
||
|
|
tenant_name VARCHAR(128) NOT NULL,
|
||
|
|
status VARCHAR(20) NOT NULL DEFAULT 'active'
|
||
|
|
CHECK (status IN ('active', 'suspended', 'disabled')),
|
||
|
|
plan_code VARCHAR(32) NOT NULL DEFAULT 'devtest',
|
||
|
|
billing_currency CHAR(3) NOT NULL DEFAULT 'USD',
|
||
|
|
timezone VARCHAR(64) NOT NULL DEFAULT 'Asia/Shanghai',
|
||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
created_by BIGINT,
|
||
|
|
updated_by BIGINT
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_core_tenants_status ON core_tenants (status);
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS iam_users (
|
||
|
|
id BIGINT PRIMARY KEY,
|
||
|
|
tenant_id BIGINT NOT NULL REFERENCES core_tenants(id),
|
||
|
|
email VARCHAR(256) NOT NULL,
|
||
|
|
display_name VARCHAR(128),
|
||
|
|
role_code VARCHAR(32) NOT NULL DEFAULT 'developer',
|
||
|
|
status VARCHAR(20) NOT NULL DEFAULT 'active'
|
||
|
|
CHECK (status IN ('active', 'locked', 'disabled')),
|
||
|
|
last_login_at TIMESTAMPTZ,
|
||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
UNIQUE (tenant_id, email)
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_iam_users_tenant_role ON iam_users (tenant_id, role_code);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_iam_users_tenant_status ON iam_users (tenant_id, status);
|
||
|
|
|
||
|
|
COMMIT;
|