38 lines
1.3 KiB
SQL
38 lines
1.3 KiB
SQL
CREATE TABLE users (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
first_name VARCHAR(255) NOT NULL,
|
|
last_name VARCHAR(255) NOT NULL,
|
|
email VARCHAR(255) UNIQUE NOT NULL,
|
|
phone_number VARCHAR(20) UNIQUE NOT NULL,
|
|
password BYTEA NOT NULL,
|
|
role VARCHAR(50) NOT NULL,
|
|
verified BOOLEAN DEFAULT FALSE,
|
|
created_at TIMESTAMPTZ ,
|
|
updated_at TIMESTAMPTZ ,
|
|
CONSTRAINT unique_email_phone UNIQUE (email, phone_number)
|
|
);
|
|
CREATE TABLE refresh_tokens (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
user_id BIGINT NOT NULL,
|
|
token TEXT NOT NULL UNIQUE,
|
|
expires_at TIMESTAMPTZ NOT NULL,
|
|
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
|
revoked BOOLEAN DEFAULT FALSE NOT NULL,
|
|
CONSTRAINT unique_token UNIQUE (token)
|
|
);
|
|
----------------------------------------------seed data-------------------------------------------------------------
|
|
-------------------------------------- DO NOT USE IN PRODUCTION-------------------------------------------------
|
|
|
|
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
|
|
|
INSERT INTO users (first_name, last_name, email, phone_number, password, role, created_at, updated_at)
|
|
VALUES (
|
|
'John',
|
|
'Doe',
|
|
'john.doe@example.com',
|
|
'1234567890',
|
|
crypt('password123', gen_salt('bf'))::bytea,
|
|
'user',
|
|
CURRENT_TIMESTAMP,
|
|
CURRENT_TIMESTAMP
|
|
); |