34 lines
1.3 KiB
SQL
34 lines
1.3 KiB
SQL
-- drop table if exists messages cascade;
|
|
-- drop table if exists conversations cascade;
|
|
-- drop table if exists ai_providers cascade;
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS ai_providers (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
name TEXT NOT NULL UNIQUE,
|
|
model_name TEXT NOT NULL,
|
|
api_token TEXT NOT NULL,
|
|
completions_url TEXT NOT NULL,
|
|
inserted_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS conversations (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
name TEXT NOT NULL UNIQUE,
|
|
ai_provider_id UUID NOT NULL REFERENCES ai_providers(id) ON DELETE RESTRICT,
|
|
inserted_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS messages (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
conversation_id UUID NOT NULL REFERENCES conversations(id) ON DELETE CASCADE,
|
|
role TEXT NOT NULL CHECK (role IN ('user', 'assistant', 'tool')),
|
|
content TEXT,
|
|
reasoning_content TEXT,
|
|
tool_calls JSONB,
|
|
tool_call_id TEXT,
|
|
inserted_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|