40 lines
1.3 KiB
SQL
40 lines
1.3 KiB
SQL
-- SQL dump generated using DBML (dbml.dbdiagram.io)
|
|
-- Database: PostgreSQL
|
|
-- Generated at: 2025-11-30T03:13:20.470Z
|
|
|
|
CREATE TABLE "users" (
|
|
"username" varchar PRIMARY KEY,
|
|
"role" varchar NOT NULL DEFAULT 'member',
|
|
"hashed_password" varchar NOT NULL,
|
|
"full_name" varchar NOT NULL,
|
|
"email" varchar UNIQUE NOT NULL,
|
|
"is_email_verified" bool NOT NULL DEFAULT false,
|
|
"password_changed_at" timestamptz NOT NULL DEFAULT '0001-01-01',
|
|
"created_at" timestamptz NOT NULL DEFAULT (now())
|
|
);
|
|
|
|
CREATE TABLE "verify_emails" (
|
|
"id" bigserial PRIMARY KEY,
|
|
"username" varchar NOT NULL,
|
|
"email" varchar NOT NULL,
|
|
"secret_code" varchar NOT NULL,
|
|
"is_used" bool NOT NULL DEFAULT false,
|
|
"created_at" timestamptz NOT NULL DEFAULT (now()),
|
|
"expired_at" timestamptz NOT NULL DEFAULT (now() + interval '15 minutes')
|
|
);
|
|
|
|
CREATE TABLE "sessions" (
|
|
"id" uuid PRIMARY KEY,
|
|
"username" varchar NOT NULL,
|
|
"refresh_token" varchar NOT NULL,
|
|
"user_agent" varchar NOT NULL,
|
|
"client_ip" varchar NOT NULL,
|
|
"is_blocked" boolean NOT NULL DEFAULT false,
|
|
"expires_at" timestamptz NOT NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT (now())
|
|
);
|
|
|
|
ALTER TABLE "verify_emails" ADD FOREIGN KEY ("username") REFERENCES "users" ("username");
|
|
|
|
ALTER TABLE "sessions" ADD FOREIGN KEY ("username") REFERENCES "users" ("username");
|