feat(project): init
This commit is contained in:
36
init.sql
Normal file
36
init.sql
Normal file
@@ -0,0 +1,36 @@
|
||||
-- 1. 创建 iam_service 专用用户
|
||||
CREATE USER iam_service_user WITH PASSWORD 'iam_service_password';
|
||||
|
||||
-- 2. 创建 iam_service 专用数据库
|
||||
CREATE DATABASE iam_service_db OWNER iam_service_user;
|
||||
|
||||
-- 3. 赋予权限(确保它能在 iam_service_db 库里创建 Schema)
|
||||
GRANT ALL PRIVILEGES ON DATABASE iam_service_db TO iam_service_user;
|
||||
|
||||
-- 进入 iam_service_db
|
||||
|
||||
-- 1. 启用 UUID 扩展
|
||||
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
||||
|
||||
-- 2. 租户表
|
||||
CREATE TABLE tenants (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
name VARCHAR(255) NOT NULL,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 3. 用户表 (多租户核心)
|
||||
CREATE TABLE users (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
tenant_id UUID NOT NULL REFERENCES tenants(id),
|
||||
email VARCHAR(255) NOT NULL,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 4. 关键:创建联合唯一索引
|
||||
-- 允许不同租户拥有相同的 email,但同一租户内 email 必须唯一
|
||||
CREATE UNIQUE INDEX idx_users_tenant_email ON users(tenant_id, email);
|
||||
|
||||
-- 5. 初始化一个测试租户 (方便后续测试)
|
||||
INSERT INTO tenants (id, name) VALUES ('11111111-1111-1111-1111-111111111111', 'Default Corp');
|
||||
Reference in New Issue
Block a user