From 9c026ba2c56ac1587a7e53bf3d0b66df0e1f022a Mon Sep 17 00:00:00 2001 From: Script Raccoon Date: Thu, 16 Jul 2026 17:52:26 +0200 Subject: [PATCH 1/3] kill database as part of the setup --- database/scripts/setup.ts | 4 +++- package.json | 3 +-- shared/db.ts | 5 +++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/database/scripts/setup.ts b/database/scripts/setup.ts index eab8551f..033254f7 100644 --- a/database/scripts/setup.ts +++ b/database/scripts/setup.ts @@ -1,6 +1,6 @@ import fs from 'node:fs' import path from 'node:path' -import { get_client } from '$shared/db' +import { delete_database_file, get_client } from '$shared/db' import { create_schema_hash, write_schema_hash } from './utils/schema' import { devlog } from '$shared/utils' @@ -14,6 +14,8 @@ setup() function setup() { console.info('\n--- Setup CatDat database ---') + delete_database_file() + const db = get_client({ readonly: false }) const files = fs diff --git a/package.json b/package.json index 98a9b66a..ddd412fd 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,7 @@ "lint": "prettier --check .", "prepare": "husky", "db:shell": "sqlite3 database/catdat.db", - "db:kill": "rm -rf database/catdat.db", - "db:setup": "pnpm db:kill && tsx --tsconfig database/tsconfig.json database/scripts/setup.ts", + "db:setup": "tsx --tsconfig database/tsconfig.json database/scripts/setup.ts", "db:seed": "tsx --tsconfig database/tsconfig.json database/scripts/seed.ts", "db:deduce": "tsx --tsconfig database/tsconfig.json database/scripts/deduce.ts", "db:test": "tsx --tsconfig database/tsconfig.json database/scripts/test.ts", diff --git a/shared/db.ts b/shared/db.ts index c557fa1f..9ce576ba 100644 --- a/shared/db.ts +++ b/shared/db.ts @@ -1,5 +1,6 @@ import Database from 'better-sqlite3' import path from 'node:path' +import fs from 'node:fs' const db_path = path.resolve('database', 'catdat.db') @@ -8,3 +9,7 @@ export function get_client(options: { readonly: boolean }) { db.pragma('foreign_keys = ON') return db } + +export function delete_database_file() { + fs.rmSync(db_path, { force: true }) +} From a7e946607ef48bac8489cc078e7e3d4c4627f8d5 Mon Sep 17 00:00:00 2001 From: Script Raccoon Date: Thu, 16 Jul 2026 17:52:38 +0200 Subject: [PATCH 2/3] move snapshot command to own file --- database/scripts/snapshot.ts | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 database/scripts/snapshot.ts diff --git a/database/scripts/snapshot.ts b/database/scripts/snapshot.ts new file mode 100644 index 00000000..db5e7dd7 --- /dev/null +++ b/database/scripts/snapshot.ts @@ -0,0 +1,7 @@ +import fs from 'node:fs' +import path from 'node:path' + +const source = path.resolve('database', 'catdat.db') +const target = path.join(path.resolve('static', 'databases'), 'catdat-snapshot.db') + +fs.copyFileSync(source, target) diff --git a/package.json b/package.json index ddd412fd..d7048574 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "db:seed": "tsx --tsconfig database/tsconfig.json database/scripts/seed.ts", "db:deduce": "tsx --tsconfig database/tsconfig.json database/scripts/deduce.ts", "db:test": "tsx --tsconfig database/tsconfig.json database/scripts/test.ts", - "db:snapshot": "cp database/catdat.db static/databases/catdat-snapshot.db", + "db:snapshot": "tsx --tsconfig database/tsconfig.json database/scripts/snapshot.ts", "db:update": "pnpm db:seed && pnpm db:deduce && pnpm db:test && pnpm db:snapshot", "db:watch": "tsx --tsconfig database/tsconfig.json database/scripts/watch.ts", "db:redundancies": "tsx --tsconfig database/tsconfig.json database/scripts/redundancies.ts", From 7bcecd279361a0bf7d2bc3e82d9bab2ef7be5945 Mon Sep 17 00:00:00 2001 From: Script Raccoon Date: Thu, 16 Jul 2026 17:59:23 +0200 Subject: [PATCH 3/3] add and edit some JSdocs --- database/scripts/deduce.ts | 2 +- database/scripts/setup.ts | 2 +- database/scripts/snapshot.ts | 5 +++++ database/scripts/watch.ts | 4 ++++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/database/scripts/deduce.ts b/database/scripts/deduce.ts index e984a65d..f56ebdc3 100644 --- a/database/scripts/deduce.ts +++ b/database/scripts/deduce.ts @@ -11,7 +11,7 @@ import { deduce() /** - * Makes deductions for categories and functors. + * Makes deductions for categories, functors, and other categorical structures. */ function deduce() { // --- categories --- diff --git a/database/scripts/setup.ts b/database/scripts/setup.ts index 033254f7..13c29f79 100644 --- a/database/scripts/setup.ts +++ b/database/scripts/setup.ts @@ -9,7 +9,7 @@ const schema_folder = path.resolve('database', 'schema') setup() /** - * Creates the tables, indexes, triggers, and views. + * Creates the tables, indexes, triggers, and views in the database. */ function setup() { console.info('\n--- Setup CatDat database ---') diff --git a/database/scripts/snapshot.ts b/database/scripts/snapshot.ts index db5e7dd7..f4a2d309 100644 --- a/database/scripts/snapshot.ts +++ b/database/scripts/snapshot.ts @@ -1,6 +1,11 @@ import fs from 'node:fs' import path from 'node:path' +/** + * For the download feature, the local database file is copied + * to the folder with static assets. + */ + const source = path.resolve('database', 'catdat.db') const target = path.join(path.resolve('static', 'databases'), 'catdat-snapshot.db') diff --git a/database/scripts/watch.ts b/database/scripts/watch.ts index 6d3b202a..fcc0e857 100644 --- a/database/scripts/watch.ts +++ b/database/scripts/watch.ts @@ -4,6 +4,10 @@ import { exec } from 'node:child_process' const data_folder = path.resolve('database', 'data') +/** + * Script that continuously updates all data when some file is changed. + */ + function onchange(file: string) { console.info(`File changed: ${file}`)