| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- -- Users table
- CREATE TABLE IF NOT EXISTS users (
- id SERIAL PRIMARY KEY,
- username VARCHAR(255) NOT NULL UNIQUE,
- password_hash TEXT NOT NULL,
- role VARCHAR(50) NOT NULL DEFAULT 'user',
- created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
- );
- -- God Logs table
- CREATE TABLE IF NOT EXISTS god_logs (
- id SERIAL PRIMARY KEY,
- god_user_id INTEGER NOT NULL,
- action TEXT NOT NULL,
- details TEXT,
- timestamp TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
- FOREIGN KEY (god_user_id) REFERENCES users(id) ON DELETE CASCADE
- );
- -- Personas table
- CREATE TABLE IF NOT EXISTS personas (
- id SERIAL PRIMARY KEY,
- owner_id INTEGER NOT NULL,
- name VARCHAR(255) NOT NULL,
- title VARCHAR(255),
- bio TEXT,
- theories JSONB, -- JSON string in SQLite, JSONB in PG
- stance TEXT,
- system_prompt TEXT,
- is_public BOOLEAN DEFAULT FALSE,
- created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
- FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE CASCADE
- );
- -- Moderators table
- CREATE TABLE IF NOT EXISTS moderators (
- id SERIAL PRIMARY KEY,
- name VARCHAR(255) NOT NULL,
- title VARCHAR(255) DEFAULT '主持人',
- bio TEXT,
- system_prompt TEXT,
- greeting_template TEXT,
- closing_template TEXT,
- summary_template TEXT,
- creator_id INTEGER NOT NULL,
- created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
- FOREIGN KEY (creator_id) REFERENCES users(id) ON DELETE CASCADE
- );
- -- Forums table
- CREATE TABLE IF NOT EXISTS forums (
- id SERIAL PRIMARY KEY,
- topic TEXT NOT NULL,
- creator_id INTEGER NOT NULL,
- moderator_id INTEGER,
- status VARCHAR(50) DEFAULT 'active',
- summary_history JSONB DEFAULT '[]',
- start_time TIMESTAMP WITH TIME ZONE,
- end_time TIMESTAMP WITH TIME ZONE,
- duration_minutes INTEGER DEFAULT 30,
- FOREIGN KEY (creator_id) REFERENCES users(id) ON DELETE CASCADE,
- FOREIGN KEY (moderator_id) REFERENCES moderators(id)
- );
- -- Forum Participants table
- CREATE TABLE IF NOT EXISTS forum_participants (
- forum_id INTEGER NOT NULL,
- persona_id INTEGER NOT NULL,
- thoughts_history JSONB DEFAULT '[]',
- PRIMARY KEY (forum_id, persona_id),
- FOREIGN KEY (forum_id) REFERENCES forums(id) ON DELETE CASCADE,
- FOREIGN KEY (persona_id) REFERENCES personas(id) ON DELETE CASCADE
- );
- -- Messages table
- CREATE TABLE IF NOT EXISTS messages (
- id SERIAL PRIMARY KEY,
- forum_id INTEGER NOT NULL,
- persona_id INTEGER,
- moderator_id INTEGER,
- speaker_name VARCHAR(255) NOT NULL,
- content TEXT NOT NULL,
- turn_count INTEGER DEFAULT 0,
- thought TEXT,
- timestamp TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
- FOREIGN KEY (forum_id) REFERENCES forums(id) ON DELETE CASCADE,
- FOREIGN KEY (persona_id) REFERENCES personas(id),
- FOREIGN KEY (moderator_id) REFERENCES moderators(id)
- );
- -- Observations table
- CREATE TABLE IF NOT EXISTS observations (
- id SERIAL PRIMARY KEY,
- user_id INTEGER NOT NULL,
- forum_id INTEGER NOT NULL,
- joined_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
- left_at TIMESTAMP WITH TIME ZONE,
- FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
- FOREIGN KEY (forum_id) REFERENCES forums(id) ON DELETE CASCADE
- );
- -- System Logs table
- CREATE TABLE IF NOT EXISTS system_logs (
- id SERIAL PRIMARY KEY,
- forum_id INTEGER NOT NULL,
- level VARCHAR(50) DEFAULT 'info',
- source VARCHAR(255),
- content TEXT NOT NULL,
- timestamp TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
- FOREIGN KEY (forum_id) REFERENCES forums(id) ON DELETE CASCADE
- );
|