You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.7 KiB
PL/PgSQL
44 lines
1.7 KiB
PL/PgSQL
BEGIN;
|
|
|
|
CREATE TABLE public.roles
|
|
(
|
|
id bigserial PRIMARY KEY,
|
|
name varchar(32) COLLATE pg_catalog."default" NOT NULL,
|
|
|
|
created_at TIMESTAMPTZ DEFAULT Now() NOT NULL,
|
|
updated_at TIMESTAMPTZ NULL,
|
|
deleted_at TIMESTAMPTZ NULL
|
|
);
|
|
CREATE UNIQUE INDEX name_idx ON public.roles (name) WHERE (deleted_at IS NULL);
|
|
|
|
CREATE TABLE public.users
|
|
(
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
username varchar(255) COLLATE pg_catalog."default" NOT NULL,
|
|
password varchar(255) COLLATE pg_catalog."default" NOT NULL,
|
|
email varchar(255) COLLATE pg_catalog."default" NOT NULL,
|
|
|
|
created_at TIMESTAMPTZ DEFAULT Now() NOT NULL,
|
|
updated_at TIMESTAMPTZ NULL,
|
|
deleted_at TIMESTAMPTZ NULL
|
|
);
|
|
CREATE UNIQUE INDEX username_idx ON public.users (username) WHERE (deleted_at IS NULL);
|
|
CREATE UNIQUE INDEX email_idx ON public.users (email) WHERE (deleted_at IS NULL);
|
|
|
|
CREATE TABLE public.users_roles
|
|
(
|
|
user_id UUID NOT NULL,
|
|
role_id BIGINT NOT NULL,
|
|
|
|
UNIQUE(role_id, user_id),
|
|
FOREIGN KEY(user_id) REFERENCES public.users(id) ON DELETE CASCADE,
|
|
FOREIGN KEY(role_id) REFERENCES public.roles(id) ON DELETE CASCADE
|
|
);
|
|
CREATE INDEX user_id_idx ON users_roles (user_id);
|
|
CREATE INDEX role_id_idx ON users_roles (role_id);
|
|
|
|
INSERT INTO roles (name) VALUES ('service'), ('user'), ('admin'), ('superadmin');
|
|
|
|
INSERT INTO users (id, username, password, email) VALUES ('2e4d8ed5-934d-4cd2-84fb-bd650d3a1ded', 'admin', '$argon2id$v=19$m=131072,t=4,p=4$sMaZvvQn2uWrISQICSbBqQ$L9tNlTTs4ldx0Ry+8Ctu8trSN27Q5iY68iWLjtprOfY', 'admin@wz2100.net');
|
|
INSERT INTO users_roles (user_id, role_id) VALUES ('2e4d8ed5-934d-4cd2-84fb-bd650d3a1ded', 2), ('2e4d8ed5-934d-4cd2-84fb-bd650d3a1ded', 3), ('2e4d8ed5-934d-4cd2-84fb-bd650d3a1ded', 4);
|
|
COMMIT; |