2023-01-19 07:27:01 -05:00
|
|
|
/* init_order = 1 */
|
|
|
|
|
2022-05-06 03:38:38 -05:00
|
|
|
create type users_password_encryption_method as enum ('Argon2i');
|
2021-07-03 06:13:05 -05:00
|
|
|
|
2021-07-02 08:09:08 -05:00
|
|
|
create table users (
|
2023-01-19 07:27:01 -05:00
|
|
|
tenant_id varchar(21) not null
|
|
|
|
references tenants (id) on update cascade on delete cascade,
|
2022-04-18 02:27:58 -05:00
|
|
|
id varchar(12) not null,
|
2021-07-04 04:38:37 -05:00
|
|
|
username varchar(128) unique,
|
2021-07-02 08:09:08 -05:00
|
|
|
primary_email varchar(128) unique,
|
|
|
|
primary_phone varchar(128) unique,
|
|
|
|
password_encrypted varchar(128),
|
2022-02-24 05:01:17 -05:00
|
|
|
password_encryption_method users_password_encryption_method,
|
2022-02-14 03:03:13 -05:00
|
|
|
name varchar(128),
|
2022-06-17 04:04:04 -05:00
|
|
|
avatar varchar(2048),
|
2022-05-26 04:44:32 -05:00
|
|
|
application_id varchar(21),
|
2022-02-08 23:55:06 -05:00
|
|
|
identities jsonb /* @use Identities */ not null default '{}'::jsonb,
|
2022-02-27 22:22:48 -05:00
|
|
|
custom_data jsonb /* @use ArbitraryObject */ not null default '{}'::jsonb,
|
2022-11-03 21:10:01 -05:00
|
|
|
is_suspended boolean not null default false,
|
2022-05-05 03:22:43 -05:00
|
|
|
last_sign_in_at timestamptz,
|
2022-09-29 02:32:43 -05:00
|
|
|
created_at timestamptz not null default (now()),
|
2021-07-02 08:09:08 -05:00
|
|
|
primary key (id)
|
|
|
|
);
|
2022-09-29 02:32:43 -05:00
|
|
|
|
2023-01-19 07:27:01 -05:00
|
|
|
create index users__id
|
|
|
|
on users (tenant_id, id);
|
|
|
|
|
|
|
|
create index users__name
|
|
|
|
on users (tenant_id, name);
|
2023-01-28 06:26:29 -05:00
|
|
|
|
|
|
|
create trigger set_tenant_id before insert on users
|
|
|
|
for each row execute procedure set_tenant_id();
|