41 lines
1.1 KiB
SQL
41 lines
1.1 KiB
SQL
-- users (minimal for v0)
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
email VARCHAR(255) UNIQUE,
|
|
pass_bcrypt BLOB,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- conversations
|
|
CREATE TABLE IF NOT EXISTS conversations (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
owner_id INTEGER NOT NULL,
|
|
title VARCHAR(255),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- nodes
|
|
CREATE TABLE IF NOT EXISTS nodes (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
conversation_id INTEGER NOT NULL,
|
|
author_kind ENUM('user','assistant') NOT NULL,
|
|
content TEXT NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- edges (DAG)
|
|
CREATE TABLE IF NOT EXISTS edges (
|
|
parent_id INTEGER NOT NULL,
|
|
child_id INTEGER NOT NULL,
|
|
PRIMARY KEY(parent_id, child_id)
|
|
);
|
|
|
|
-- branches (named pointers)
|
|
CREATE TABLE IF NOT EXISTS branches (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
conversation_id INTEGER NOT NULL,
|
|
name VARCHAR(128) NOT NULL,
|
|
head_node_id INTEGER NOT NULL,
|
|
UNIQUE (conversation_id, name)
|
|
);
|