(Feat): Initial Commit
Some checks failed
Build & Test / build-test (push) Has been cancelled
Build & Test / swagger-codegen-cli (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled

This commit is contained in:
2026-07-03 19:41:31 +05:30
commit 7e940c83a7
461 changed files with 45002 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
-- +migrate Up
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
-- +migrate Down
DROP EXTENSION IF EXISTS "uuid-ossp";

View File

@@ -0,0 +1,9 @@
-- +migrate Up
CREATE TYPE user_scope AS ENUM (
'app',
'cms'
);
-- +migrate Down
DROP TYPE IF EXISTS user_scope;

View File

@@ -0,0 +1,19 @@
-- +migrate Up
CREATE TABLE users (
id uuid NOT NULL DEFAULT uuid_generate_v4 (),
username varchar(255),
"password" text,
is_active bool NOT NULL,
-- TODO: use user_scope enum as "scopes user_scope[]" when supported
-- https://github.com/volatiletech/sqlboiler/issues/739
scopes text[] NOT NULL,
last_authenticated_at timestamptz,
created_at timestamptz NOT NULL,
updated_at timestamptz NOT NULL,
CONSTRAINT users_pkey PRIMARY KEY (id),
CONSTRAINT users_username_key UNIQUE (username)
);
-- +migrate Down
DROP TABLE IF EXISTS users;

View File

@@ -0,0 +1,15 @@
-- +migrate Up
CREATE TABLE app_user_profiles (
user_id uuid NOT NULL,
legal_accepted_at timestamptz,
created_at timestamptz NOT NULL,
updated_at timestamptz NOT NULL,
CONSTRAINT app_user_profiles_pkey PRIMARY KEY (user_id)
);
ALTER TABLE app_user_profiles
ADD CONSTRAINT app_user_profiles_user_id_fkey FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE CASCADE ON DELETE CASCADE;
-- +migrate Down
DROP TABLE IF EXISTS app_user_profiles;

View File

@@ -0,0 +1,18 @@
-- +migrate Up
CREATE TABLE access_tokens (
token uuid NOT NULL DEFAULT uuid_generate_v4 (),
valid_until timestamptz NOT NULL,
user_id uuid NOT NULL,
created_at timestamptz NOT NULL,
updated_at timestamptz NOT NULL,
CONSTRAINT access_tokens_pkey PRIMARY KEY (token)
);
CREATE INDEX idx_access_tokens_fk_user_uid ON access_tokens USING btree (user_id);
ALTER TABLE access_tokens
ADD CONSTRAINT access_tokens_user_id_fkey FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE CASCADE ON DELETE CASCADE;
-- +migrate Down
DROP TABLE IF EXISTS access_tokens;

View File

@@ -0,0 +1,17 @@
-- +migrate Up
CREATE TABLE refresh_tokens (
token uuid NOT NULL DEFAULT uuid_generate_v4 (),
user_id uuid NOT NULL,
created_at timestamptz NOT NULL,
updated_at timestamptz NOT NULL,
CONSTRAINT refresh_tokens_pkey PRIMARY KEY (token)
);
CREATE INDEX idx_refresh_tokens_fk_user_uid ON refresh_tokens USING btree (user_id);
ALTER TABLE refresh_tokens
ADD CONSTRAINT refresh_tokens_user_id_fkey FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE CASCADE ON DELETE CASCADE;
-- +migrate Down
DROP TABLE IF EXISTS refresh_tokens;

View File

@@ -0,0 +1,18 @@
-- +migrate Up
CREATE TABLE password_reset_tokens (
token uuid NOT NULL DEFAULT uuid_generate_v4 (),
valid_until timestamptz NOT NULL,
user_id uuid NOT NULL,
created_at timestamptz NOT NULL,
updated_at timestamptz NOT NULL,
CONSTRAINT password_reset_tokens_pkey PRIMARY KEY (token)
);
CREATE INDEX idx_password_reset_tokens_fk_user_uid ON password_reset_tokens USING btree (user_id);
ALTER TABLE password_reset_tokens
ADD CONSTRAINT password_reset_tokens_user_id_fkey FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE CASCADE ON DELETE CASCADE;
-- +migrate Down
DROP TABLE IF EXISTS password_reset_tokens;

View File

@@ -0,0 +1,29 @@
-- +migrate Up
CREATE TYPE provider_type AS ENUM (
'fcm',
'apn'
);
CREATE TABLE push_tokens (
id uuid NOT NULL DEFAULT uuid_generate_v4 (),
token text NOT NULL,
provider provider_type NOT NULL,
user_id uuid NOT NULL,
created_at timestamptz NOT NULL,
updated_at timestamptz NOT NULL,
CONSTRAINT push_tokens_pkey PRIMARY KEY (id),
CONSTRAINT push_tokens_token_key UNIQUE (token)
);
CREATE INDEX idx_push_tokens_fk_user_id ON push_tokens USING btree (user_id);
CREATE INDEX idx_push_tokens_token ON push_tokens USING btree (token);
ALTER TABLE push_tokens
ADD CONSTRAINT push_tokens_user_id_fkey FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE CASCADE ON DELETE CASCADE;
-- +migrate Down
DROP TABLE IF EXISTS push_tokens;
DROP TYPE IF EXISTS provider_type;

View File

@@ -0,0 +1,6 @@
-- +migrate Up
CREATE SEQUENCE seq_health;
-- +migrate Down
DROP SEQUENCE IF EXISTS seq_health;

View File

@@ -0,0 +1,24 @@
-- +migrate Up
CREATE TABLE confirmation_tokens (
token uuid NOT NULL DEFAULT uuid_generate_v4 (),
valid_until timestamptz NOT NULL,
user_id uuid NOT NULL,
created_at timestamptz NOT NULL,
updated_at timestamptz NOT NULL,
CONSTRAINT confirmation_tokens_pkey PRIMARY KEY (token)
);
CREATE INDEX idx_confirmation_tokens_fk_user_uid ON confirmation_tokens USING btree (user_id);
ALTER TABLE confirmation_tokens
ADD CONSTRAINT confirmation_tokens_user_id_fkey FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE users
ADD COLUMN requires_confirmation boolean NOT NULL DEFAULT FALSE;
-- +migrate Down
ALTER TABLE users
DROP COLUMN requires_confirmation;
DROP TABLE IF EXISTS confirmation_tokens;

6
migrations/README.md Normal file
View File

@@ -0,0 +1,6 @@
# `/migrations`
Our database migrations are plain SQL and managed via `sql-migrate`, see:
* https://github.com/rubenv/sql-migrate#usage
* https://github.com/rubenv/sql-migrate#writing-migrations