add service
This commit is contained in:
20
migrations/00001_create_users.sql
Normal file
20
migrations/00001_create_users.sql
Normal 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;
|
||||
18
migrations/00002_create_sessions.sql
Normal file
18
migrations/00002_create_sessions.sql
Normal 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;
|
||||
17
migrations/00003_create_invite_codes.sql
Normal file
17
migrations/00003_create_invite_codes.sql
Normal 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;
|
||||
14
migrations/00004_create_mailing_status.sql
Normal file
14
migrations/00004_create_mailing_status.sql
Normal 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;
|
||||
18
migrations/00005_create_requests_for_suppliers.sql
Normal file
18
migrations/00005_create_requests_for_suppliers.sql
Normal 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;
|
||||
16
migrations/00006_create_suppliers.sql
Normal file
16
migrations/00006_create_suppliers.sql
Normal 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;
|
||||
15
migrations/00007_create_request_token_usage.sql
Normal file
15
migrations/00007_create_request_token_usage.sql
Normal 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;
|
||||
Reference in New Issue
Block a user