use rusqlite::{Connection, Result as SqlResult};
pub fn migrate_schema(conn: &Connection) -> SqlResult<()> {
conn.execute(
"CREATE TABLE IF NOT EXISTS me (
username TEXT PRIMARY KEY,
public_key TEXT NOT NULL,
encrypted_private_key TEXT NOT NULL,
created_at TEXT NOT NULL
)",
[],
)?;
conn.execute(
"CREATE TABLE IF NOT EXISTS keys (
context_id TEXT PRIMARY KEY,
username TEXT,
type TEXT DEFAULT 'generic',
public_address TEXT,
created_at TEXT NOT NULL
)",
[],
)?;
conn.execute(
"CREATE TABLE IF NOT EXISTS be (
context_id TEXT NOT NULL,
key TEXT NOT NULL,
value TEXT NOT NULL,
timestamp TEXT NOT NULL
)",
[],
)?;
conn.execute(
"CREATE TABLE IF NOT EXISTS have (
context_id TEXT NOT NULL,
key TEXT NOT NULL,
value TEXT NOT NULL,
timestamp TEXT NOT NULL
)",
[],
)?;
conn.execute(
"CREATE TABLE IF NOT EXISTS at (
context_id TEXT NOT NULL,
key TEXT NOT NULL,
value TEXT NOT NULL,
timestamp TEXT NOT NULL
)",
[],
)?;
conn.execute(
"CREATE TABLE IF NOT EXISTS relate (
context_id TEXT NOT NULL,
key TEXT NOT NULL,
target TEXT NOT NULL,
value TEXT,
timestamp TEXT NOT NULL
)",
[],
)?;
conn.execute(
"CREATE TABLE IF NOT EXISTS react (
context_id TEXT NOT NULL,
key TEXT NOT NULL,
target TEXT NOT NULL,
emoji TEXT NOT NULL,
timestamp TEXT NOT NULL
)",
[],
)?;
conn.execute(
"CREATE TABLE IF NOT EXISTS arc (
context_id TEXT NOT NULL,
actor TEXT NOT NULL,
target TEXT NOT NULL,
affinity REAL DEFAULT 0.0,
reality REAL DEFAULT 0.0,
communication REAL DEFAULT 0.0,
timestamp TEXT NOT NULL
)",
[],
)?;
conn.execute(
"CREATE TABLE IF NOT EXISTS do_ (
context_id TEXT NOT NULL,
key TEXT NOT NULL,
value TEXT NOT NULL,
timestamp TEXT NOT NULL
)",
[],
)?;
conn.execute(
"CREATE TABLE IF NOT EXISTS communicate (
context_id TEXT NOT NULL,
key TEXT NOT NULL,
target TEXT NOT NULL,
message TEXT NOT NULL,
lang TEXT DEFAULT 'en',
timestamp TEXT NOT NULL
)",
[],
)?;
Ok(())
}