add service

This commit is contained in:
vallyenfail
2026-01-17 17:39:33 +03:00
parent 1376ff9188
commit d959dcca96
82 changed files with 25041 additions and 1 deletions

View File

@@ -0,0 +1,20 @@
-- +goose Up
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email TEXT NOT NULL,
email_hash TEXT NOT NULL UNIQUE,
password_hash TEXT NOT NULL,
phone TEXT,
user_name TEXT,
company_name TEXT,
balance NUMERIC(10, 5) DEFAULT 0.0,
payment_status TEXT DEFAULT 'unpaid',
invites_issued INT DEFAULT 0,
invites_limit INT DEFAULT 10,
created_at TIMESTAMP DEFAULT now()
);
CREATE INDEX idx_users_email_hash ON users(email_hash);
-- +goose Down
DROP TABLE users;

View File

@@ -0,0 +1,18 @@
-- +goose Up
CREATE TABLE sessions (
id SERIAL PRIMARY KEY,
user_id INT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
access_token TEXT NOT NULL,
refresh_token TEXT NOT NULL UNIQUE,
ip TEXT,
user_agent TEXT,
created_at TIMESTAMP DEFAULT now(),
expires_at TIMESTAMP NOT NULL,
revoked_at TIMESTAMP
);
CREATE INDEX idx_sessions_refresh ON sessions(refresh_token);
CREATE INDEX idx_sessions_user_id ON sessions(user_id);
-- +goose Down
DROP TABLE sessions;

View File

@@ -0,0 +1,17 @@
-- +goose Up
CREATE TABLE invite_codes (
id SERIAL PRIMARY KEY,
user_id INT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
code BIGINT NOT NULL UNIQUE,
can_be_used_count INT DEFAULT 10,
used_count INT DEFAULT 0,
is_active BOOLEAN DEFAULT true,
created_at TIMESTAMP DEFAULT now(),
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);
-- +goose Down
DROP TABLE invite_codes;

View File

@@ -0,0 +1,14 @@
-- +goose Up
CREATE TABLE mailing_status (
id SERIAL PRIMARY KEY,
status_name TEXT NOT NULL UNIQUE
);
INSERT INTO mailing_status (status_name) VALUES
('pending'),
('in_progress'),
('completed'),
('failed');
-- +goose Down
DROP TABLE mailing_status;

View File

@@ -0,0 +1,18 @@
-- +goose Up
CREATE TABLE 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,
generated_tz BOOLEAN DEFAULT false,
final_tz TEXT,
generated_final_tz BOOLEAN DEFAULT false,
final_update_tz TEXT,
mailling_status_id INT REFERENCES mailing_status(id) DEFAULT 1,
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);
-- +goose Down
DROP TABLE requests_for_suppliers;

View File

@@ -0,0 +1,16 @@
-- +goose Up
CREATE TABLE suppliers (
id SERIAL PRIMARY KEY,
request_id UUID NOT NULL REFERENCES requests_for_suppliers(id) ON DELETE CASCADE,
name TEXT NOT NULL,
email TEXT,
phone TEXT,
adress TEXT,
url TEXT,
created_at TIMESTAMP DEFAULT now()
);
CREATE INDEX idx_suppliers_request_id ON suppliers(request_id);
-- +goose Down
DROP TABLE suppliers;

View File

@@ -0,0 +1,15 @@
-- +goose Up
CREATE TABLE 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,
response_token_count INT DEFAULT 0,
token_cost NUMERIC(10, 5) DEFAULT 0.0,
type TEXT NOT NULL,
created_at TIMESTAMP DEFAULT now()
);
CREATE INDEX idx_token_usage_request_id ON request_token_usage(request_id);
-- +goose Down
DROP TABLE request_token_usage;