Initial commit
This commit is contained in:
commit
2fa110e760
28 changed files with 2346 additions and 0 deletions
43
migrations/20240608163806_initial.sql
Normal file
43
migrations/20240608163806_initial.sql
Normal file
|
@ -0,0 +1,43 @@
|
|||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE TABLE IF NOT EXISTS users
|
||||
(
|
||||
id serial NOT NULL,
|
||||
username VARCHAR(70) UNIQUE NOT NULL,
|
||||
hashed_pwd VARCHAR(60) NOT NULL,
|
||||
email VARCHAR(70) UNIQUE,
|
||||
role INT NOT NULL,
|
||||
expires_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
|
||||
PRIMARY KEY (id),
|
||||
CHECK (length(username) != 0 AND username = lower(username)),
|
||||
CHECK (length(email) != 0 AND email = lower(email)),
|
||||
CHECK (lower(username) != lower(email)),
|
||||
CHECK (length(hashed_pwd) != 0),
|
||||
CHECK (role BETWEEN 0 AND 3)
|
||||
);
|
||||
|
||||
CREATE INDEX ON users (id);
|
||||
CREATE INDEX ON users (username);
|
||||
CREATE INDEX ON users (email);
|
||||
|
||||
CREATE FUNCTION usr_upd_trg_fn() RETURNS TRIGGER
|
||||
LANGUAGE plpgsql AS
|
||||
$$
|
||||
BEGIN
|
||||
NEW.updated_at = NOW();
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$;
|
||||
|
||||
CREATE TRIGGER usr_upd_trg
|
||||
BEFORE UPDATE
|
||||
ON users
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE usr_upd_trg_fn();
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
DROP TABLE IF EXISTS users;
|
Loading…
Add table
Add a link
Reference in a new issue