173 lines
5.6 KiB
SQL
173 lines
5.6 KiB
SQL
-- Optional reference schema for PostgreSQL (JPA ddl-auto=update is enabled by default)
|
|
|
|
create table if not exists sys_tenants (
|
|
id uuid primary key,
|
|
tenant_id varchar(100) not null unique,
|
|
name varchar(255) not null,
|
|
active boolean not null,
|
|
created_at timestamp with time zone not null
|
|
);
|
|
|
|
create table if not exists sec_permissions (
|
|
id uuid primary key,
|
|
tenant_id varchar(100) not null,
|
|
code varchar(100) not null,
|
|
name varchar(255) not null,
|
|
created_at timestamp with time zone,
|
|
updated_at timestamp with time zone,
|
|
created_by varchar(255),
|
|
updated_by varchar(255),
|
|
constraint sec_uk_permissions_tenant_code unique (tenant_id, code)
|
|
);
|
|
|
|
create table if not exists sec_roles (
|
|
id uuid primary key,
|
|
tenant_id varchar(100) not null,
|
|
code varchar(100) not null,
|
|
name varchar(255) not null,
|
|
created_at timestamp with time zone,
|
|
updated_at timestamp with time zone,
|
|
created_by varchar(255),
|
|
updated_by varchar(255),
|
|
constraint sec_uk_roles_tenant_code unique (tenant_id, code)
|
|
);
|
|
|
|
create table if not exists sec_users (
|
|
id uuid primary key,
|
|
tenant_id varchar(100) not null,
|
|
username varchar(100) not null,
|
|
password varchar(255),
|
|
auth_source varchar(20) not null default 'LOCAL',
|
|
ldap_dn varchar(512),
|
|
enabled boolean not null,
|
|
created_at timestamp with time zone,
|
|
updated_at timestamp with time zone,
|
|
created_by varchar(255),
|
|
updated_by varchar(255),
|
|
constraint sec_uk_users_tenant_username unique (tenant_id, username)
|
|
);
|
|
|
|
create table if not exists sec_user_roles (
|
|
user_id uuid not null references sec_users(id),
|
|
role_id uuid not null references sec_roles(id),
|
|
primary key (user_id, role_id)
|
|
);
|
|
|
|
create table if not exists sec_role_permissions (
|
|
role_id uuid not null references sec_roles(id),
|
|
permission_id uuid not null references sec_permissions(id),
|
|
primary key (role_id, permission_id)
|
|
);
|
|
|
|
create table if not exists sec_user_ui_preferences (
|
|
id uuid primary key,
|
|
tenant_id varchar(100) not null,
|
|
user_id uuid not null references sec_users(id),
|
|
preference_key varchar(255) not null,
|
|
value_json text not null,
|
|
created_at timestamp with time zone,
|
|
updated_at timestamp with time zone,
|
|
created_by varchar(255),
|
|
updated_by varchar(255),
|
|
constraint sec_uk_user_ui_preferences unique (tenant_id, user_id, preference_key)
|
|
);
|
|
create index if not exists sec_idx_user_ui_preferences_tenant_user_updated on sec_user_ui_preferences (tenant_id, user_id, updated_at);
|
|
create index if not exists sec_idx_user_ui_preferences_tenant_user on sec_user_ui_preferences (tenant_id, user_id);
|
|
create index if not exists sec_idx_user_ui_preferences_user on sec_user_ui_preferences (user_id);
|
|
|
|
create table if not exists sec_refresh_tokens (
|
|
id uuid primary key,
|
|
tenant_id varchar(100) not null,
|
|
user_id uuid not null references sec_users(id),
|
|
token varchar(512) not null unique,
|
|
expires_at timestamp with time zone not null,
|
|
revoked boolean not null,
|
|
created_at timestamp with time zone,
|
|
updated_at timestamp with time zone,
|
|
created_by varchar(255),
|
|
updated_by varchar(255)
|
|
);
|
|
|
|
create table if not exists sys_system_modules (
|
|
id uuid primary key,
|
|
tenant_id varchar(100) not null,
|
|
code varchar(100) not null,
|
|
name varchar(255) not null,
|
|
enabled boolean not null,
|
|
created_at timestamp with time zone,
|
|
updated_at timestamp with time zone,
|
|
created_by varchar(255),
|
|
updated_by varchar(255),
|
|
constraint sys_uk_system_modules_tenant_code unique (tenant_id, code)
|
|
);
|
|
|
|
create table if not exists sys_approval_requests (
|
|
id uuid primary key,
|
|
tenant_id varchar(100) not null,
|
|
resource_type varchar(255) not null,
|
|
resource_id varchar(255) not null,
|
|
payload text,
|
|
status varchar(50) not null,
|
|
required_steps integer not null,
|
|
current_step integer not null,
|
|
maker_username varchar(255) not null,
|
|
created_at timestamp with time zone,
|
|
updated_at timestamp with time zone,
|
|
created_by varchar(255),
|
|
updated_by varchar(255)
|
|
);
|
|
|
|
create table if not exists sys_approval_steps (
|
|
id uuid primary key,
|
|
tenant_id varchar(100) not null,
|
|
request_id uuid not null references sys_approval_requests(id),
|
|
step_order integer not null,
|
|
checker_role varchar(255) not null,
|
|
status varchar(50) not null,
|
|
created_at timestamp with time zone,
|
|
updated_at timestamp with time zone,
|
|
created_by varchar(255),
|
|
updated_by varchar(255)
|
|
);
|
|
|
|
create table if not exists sys_approval_history (
|
|
id uuid primary key,
|
|
tenant_id varchar(100) not null,
|
|
request_id uuid not null references sys_approval_requests(id),
|
|
action varchar(50) not null,
|
|
actor_username varchar(255) not null,
|
|
notes text,
|
|
created_at timestamp with time zone,
|
|
updated_at timestamp with time zone,
|
|
created_by varchar(255),
|
|
updated_by varchar(255)
|
|
);
|
|
|
|
create table if not exists sys_audit_trails (
|
|
id uuid primary key,
|
|
tenant_id varchar(100) not null,
|
|
correlation_id varchar(100),
|
|
actor varchar(255) not null,
|
|
action varchar(100) not null,
|
|
domain varchar(100),
|
|
resource_type varchar(100),
|
|
resource_id varchar(255),
|
|
outcome varchar(20) not null,
|
|
http_method varchar(20),
|
|
request_path varchar(500),
|
|
client_ip varchar(80),
|
|
error_message varchar(1000),
|
|
details text,
|
|
before_state text,
|
|
after_state text,
|
|
created_at timestamp with time zone,
|
|
updated_at timestamp with time zone,
|
|
created_by varchar(255),
|
|
updated_by varchar(255)
|
|
);
|
|
|
|
create index if not exists sys_idx_audit_tenant_created_on on sys_audit_trails (tenant_id, created_at);
|
|
create index if not exists sys_idx_audit_correlation on sys_audit_trails (correlation_id);
|
|
create index if not exists sys_idx_audit_actor on sys_audit_trails (actor);
|
|
create index if not exists sys_idx_audit_action on sys_audit_trails (action);
|