Newer
Older
TelosDB / src / db.js
@楽曲作りまくりおじさん 楽曲作りまくりおじさん 8 days ago 779 bytes Add comprehensive test suite (35 tests) and update journal
import Database from "better-sqlite3";
import knex from "knex";
import * as sqlite_vec from "sqlite-vec";

const db = new Database("vector.db");
sqlite_vec.load(db);

const knexDb = knex({
  client: "better-sqlite3",
  connection: {
    filename: "vector.db",
  },
  useNullAsDefault: true,
});

export const EMBEDDING_DIM = Number(process.env.VEC_DIM ?? 3);

export function initDb() {
  db.exec(`
    CREATE TABLE if not exists items (
      id INTEGER PRIMARY KEY,
      content TEXT,
      path TEXT,
      created_at TEXT DEFAULT (datetime('now')),
      updated_at TEXT DEFAULT (datetime('now'))
    );
    CREATE VIRTUAL TABLE if not exists vec_items USING vec0(
      id integer primary key,
      embedding float[${EMBEDDING_DIM}]
    );
  `);
}

export { db, knexDb };