mirror of
https://github.com/chaitin/MonkeyCode.git
synced 2026-02-06 00:33:57 +08:00
feat(backend): add basic backend code
This commit is contained in:
133
backend/migration/000002_create_core_table.up.sql
Normal file
133
backend/migration/000002_create_core_table.up.sql
Normal file
@@ -0,0 +1,133 @@
|
||||
CREATE TABLE IF NOT EXISTS admins (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
username VARCHAR(255) UNIQUE NOT NULL,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
last_active_at TIMESTAMPTZ,
|
||||
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_admins_username ON admins (username);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS invite_codes (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
admin_id UUID NOT NULL,
|
||||
code VARCHAR(255) UNIQUE NOT NULL,
|
||||
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 用户表
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
username VARCHAR(255) UNIQUE NOT NULL,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
email VARCHAR(255) UNIQUE,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_users_username ON users (username);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS user_login_histories (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
user_id UUID NOT NULL,
|
||||
ip VARCHAR(255),
|
||||
country VARCHAR(255),
|
||||
province VARCHAR(255),
|
||||
city VARCHAR(255),
|
||||
isp VARCHAR(255),
|
||||
asn VARCHAR(255),
|
||||
client_version VARCHAR(255),
|
||||
device VARCHAR(255),
|
||||
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_user_login_histories_user_id ON user_login_histories (user_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS admin_login_histories (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
admin_id UUID NOT NULL,
|
||||
ip VARCHAR(255),
|
||||
country VARCHAR(255),
|
||||
province VARCHAR(255),
|
||||
city VARCHAR(255),
|
||||
isp VARCHAR(255),
|
||||
asn VARCHAR(255),
|
||||
client_version VARCHAR(255),
|
||||
device VARCHAR(255),
|
||||
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_admin_login_histories_admin_id ON admin_login_histories (admin_id);
|
||||
|
||||
-- 模型表
|
||||
CREATE TABLE IF NOT EXISTS models (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
user_id UUID NOT NULL,
|
||||
model_name VARCHAR(255) NOT NULL,
|
||||
model_type VARCHAR(50) NOT NULL,
|
||||
api_base VARCHAR(255),
|
||||
api_key VARCHAR(255),
|
||||
api_version VARCHAR(50),
|
||||
description TEXT,
|
||||
provider VARCHAR(50) NOT NULL,
|
||||
context_length INTEGER DEFAULT 4096,
|
||||
status VARCHAR(20) DEFAULT 'active',
|
||||
capabilities JSONB,
|
||||
parameters JSONB,
|
||||
pricing JSONB,
|
||||
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_model_api_type ON models (model_name, api_base, model_type);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS api_keys (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
user_id UUID NOT NULL,
|
||||
key VARCHAR(64) NOT NULL UNIQUE,
|
||||
name VARCHAR(64) NOT NULL,
|
||||
status VARCHAR(16) NOT NULL DEFAULT 'active',
|
||||
last_used TIMESTAMPTZ,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS unique_idx_api_keys_user_id ON api_keys(user_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_api_keys_key ON api_keys(key);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS records (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v1(),
|
||||
user_id UUID NOT NULL,
|
||||
model_id UUID NOT NULL,
|
||||
task_id VARCHAR(255),
|
||||
model_type VARCHAR(255) NOT NULL,
|
||||
prompt TEXT,
|
||||
completion TEXT,
|
||||
is_accept BOOLEAN DEFAULT FALSE,
|
||||
program_language VARCHAR(255),
|
||||
work_mode VARCHAR(255),
|
||||
code_lines BIGINT,
|
||||
input_tokens BIGINT,
|
||||
output_tokens BIGINT,
|
||||
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_records_user_id ON records (user_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_records_model_id ON records (model_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_records_task_id ON records (task_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_records_created_at ON records (created_at);
|
||||
CREATE INDEX IF NOT EXISTS idx_records_updated_at ON records (updated_at);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS settings (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
enable_sso BOOLEAN DEFAULT FALSE,
|
||||
force_two_factor_auth BOOLEAN DEFAULT FALSE,
|
||||
disable_password_login BOOLEAN DEFAULT FALSE,
|
||||
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
Reference in New Issue
Block a user