From 54876180193a381463fe39d5a62b0a14465ecebe Mon Sep 17 00:00:00 2001 From: vallyenfail Date: Sat, 17 Jan 2026 23:40:43 +0300 Subject: [PATCH] add service --- migrations/00001_create_users.sql | 4 ++-- migrations/00002_create_sessions.sql | 6 +++--- migrations/00003_create_invite_codes.sql | 6 +++--- migrations/00004_create_mailing_status.sql | 5 +++-- migrations/00005_create_requests_for_suppliers.sql | 6 +++--- migrations/00006_create_suppliers.sql | 4 ++-- migrations/00007_create_request_token_usage.sql | 4 ++-- migrations/00008_add_balance_check_constraint.sql | 7 +------ 8 files changed, 19 insertions(+), 23 deletions(-) diff --git a/migrations/00001_create_users.sql b/migrations/00001_create_users.sql index c236e3f..64e498e 100644 --- a/migrations/00001_create_users.sql +++ b/migrations/00001_create_users.sql @@ -1,5 +1,5 @@ -- +goose Up -CREATE TABLE users ( +CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, email TEXT NOT NULL, email_hash TEXT NOT NULL UNIQUE, @@ -14,7 +14,7 @@ CREATE TABLE users ( created_at TIMESTAMP DEFAULT now() ); -CREATE INDEX idx_users_email_hash ON users(email_hash); +CREATE INDEX IF NOT EXISTS idx_users_email_hash ON users(email_hash); -- +goose Down DROP TABLE users; diff --git a/migrations/00002_create_sessions.sql b/migrations/00002_create_sessions.sql index 4eb733d..9f84716 100644 --- a/migrations/00002_create_sessions.sql +++ b/migrations/00002_create_sessions.sql @@ -1,5 +1,5 @@ -- +goose Up -CREATE TABLE sessions ( +CREATE TABLE IF NOT EXISTS sessions ( id SERIAL PRIMARY KEY, user_id INT NOT NULL REFERENCES users(id) ON DELETE CASCADE, access_token TEXT NOT NULL, @@ -11,8 +11,8 @@ CREATE TABLE sessions ( revoked_at TIMESTAMP ); -CREATE INDEX idx_sessions_refresh ON sessions(refresh_token); -CREATE INDEX idx_sessions_user_id ON sessions(user_id); +CREATE INDEX IF NOT EXISTS idx_sessions_refresh ON sessions(refresh_token); +CREATE INDEX IF NOT EXISTS idx_sessions_user_id ON sessions(user_id); -- +goose Down DROP TABLE sessions; diff --git a/migrations/00003_create_invite_codes.sql b/migrations/00003_create_invite_codes.sql index 5f5085a..c589bde 100644 --- a/migrations/00003_create_invite_codes.sql +++ b/migrations/00003_create_invite_codes.sql @@ -1,5 +1,5 @@ -- +goose Up -CREATE TABLE invite_codes ( +CREATE TABLE IF NOT EXISTS invite_codes ( id SERIAL PRIMARY KEY, user_id INT NOT NULL REFERENCES users(id) ON DELETE CASCADE, code BIGINT NOT NULL UNIQUE, @@ -10,8 +10,8 @@ CREATE TABLE invite_codes ( expires_at TIMESTAMP NOT NULL ); -CREATE INDEX idx_invite_codes_code ON invite_codes(code); -CREATE INDEX idx_invite_codes_user_id ON invite_codes(user_id); +CREATE INDEX IF NOT EXISTS idx_invite_codes_code ON invite_codes(code); +CREATE INDEX IF NOT EXISTS idx_invite_codes_user_id ON invite_codes(user_id); -- +goose Down DROP TABLE invite_codes; diff --git a/migrations/00004_create_mailing_status.sql b/migrations/00004_create_mailing_status.sql index 627205c..709ddaf 100644 --- a/migrations/00004_create_mailing_status.sql +++ b/migrations/00004_create_mailing_status.sql @@ -1,5 +1,5 @@ -- +goose Up -CREATE TABLE mailing_status ( +CREATE TABLE IF NOT EXISTS mailing_status ( id SERIAL PRIMARY KEY, status_name TEXT NOT NULL UNIQUE ); @@ -8,7 +8,8 @@ INSERT INTO mailing_status (status_name) VALUES ('pending'), ('in_progress'), ('completed'), - ('failed'); + ('failed') +ON CONFLICT (status_name) DO NOTHING; -- +goose Down DROP TABLE mailing_status; diff --git a/migrations/00005_create_requests_for_suppliers.sql b/migrations/00005_create_requests_for_suppliers.sql index c3f8040..b61ed4e 100644 --- a/migrations/00005_create_requests_for_suppliers.sql +++ b/migrations/00005_create_requests_for_suppliers.sql @@ -1,5 +1,5 @@ -- +goose Up -CREATE TABLE requests_for_suppliers ( +CREATE TABLE IF NOT EXISTS requests_for_suppliers ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id INT NOT NULL REFERENCES users(id) ON DELETE CASCADE, request_txt TEXT, @@ -11,8 +11,8 @@ CREATE TABLE requests_for_suppliers ( created_at TIMESTAMP DEFAULT now() ); -CREATE INDEX idx_requests_user_id ON requests_for_suppliers(user_id); -CREATE INDEX idx_requests_status ON requests_for_suppliers(mailling_status_id); +CREATE INDEX IF NOT EXISTS idx_requests_user_id ON requests_for_suppliers(user_id); +CREATE INDEX IF NOT EXISTS idx_requests_status ON requests_for_suppliers(mailling_status_id); -- +goose Down DROP TABLE requests_for_suppliers; diff --git a/migrations/00006_create_suppliers.sql b/migrations/00006_create_suppliers.sql index 9ad7d7b..464b399 100644 --- a/migrations/00006_create_suppliers.sql +++ b/migrations/00006_create_suppliers.sql @@ -1,5 +1,5 @@ -- +goose Up -CREATE TABLE suppliers ( +CREATE TABLE IF NOT EXISTS suppliers ( id SERIAL PRIMARY KEY, request_id UUID NOT NULL REFERENCES requests_for_suppliers(id) ON DELETE CASCADE, name TEXT NOT NULL, @@ -10,7 +10,7 @@ CREATE TABLE suppliers ( created_at TIMESTAMP DEFAULT now() ); -CREATE INDEX idx_suppliers_request_id ON suppliers(request_id); +CREATE INDEX IF NOT EXISTS idx_suppliers_request_id ON suppliers(request_id); -- +goose Down DROP TABLE suppliers; diff --git a/migrations/00007_create_request_token_usage.sql b/migrations/00007_create_request_token_usage.sql index 042fe31..5bbc759 100644 --- a/migrations/00007_create_request_token_usage.sql +++ b/migrations/00007_create_request_token_usage.sql @@ -1,5 +1,5 @@ -- +goose Up -CREATE TABLE request_token_usage ( +CREATE TABLE IF NOT EXISTS request_token_usage ( id SERIAL PRIMARY KEY, request_id UUID NOT NULL REFERENCES requests_for_suppliers(id) ON DELETE CASCADE, request_token_count INT DEFAULT 0, @@ -9,7 +9,7 @@ CREATE TABLE request_token_usage ( created_at TIMESTAMP DEFAULT now() ); -CREATE INDEX idx_token_usage_request_id ON request_token_usage(request_id); +CREATE INDEX IF NOT EXISTS idx_token_usage_request_id ON request_token_usage(request_id); -- +goose Down DROP TABLE request_token_usage; diff --git a/migrations/00008_add_balance_check_constraint.sql b/migrations/00008_add_balance_check_constraint.sql index 8856557..d934b91 100644 --- a/migrations/00008_add_balance_check_constraint.sql +++ b/migrations/00008_add_balance_check_constraint.sql @@ -1,10 +1,5 @@ -- +goose Up ALTER TABLE users ADD CONSTRAINT balance_non_negative CHECK (balance >= 0); -ALTER TABLE invite_codes ADD CONSTRAINT used_count_non_negative CHECK (used_count >= 0); -ALTER TABLE invite_codes ADD CONSTRAINT used_count_within_limit CHECK (used_count <= can_be_used_count); - -- +goose Down -ALTER TABLE users DROP CONSTRAINT IF EXISTS balance_non_negative; -ALTER TABLE invite_codes DROP CONSTRAINT IF EXISTS used_count_non_negative; -ALTER TABLE invite_codes DROP CONSTRAINT IF EXISTS used_count_within_limit; +ALTER TABLE users DROP CONSTRAINT IF EXISTS balance_non_negative; \ No newline at end of file