a post-component library for building user-interfaces on the web.
at main 49 lines 1.2 kB view raw
1import { SQLocal } from 'sqlocal' 2 3export let unwrap: (database: Database) => SQLocal 4 5export class Database { 6 #db: SQLocal 7 constructor() { 8 this.#db = new SQLocal('db') 9 this.#migrate() 10 } 11 12 static { 13 unwrap = database => database.#db 14 } 15 16 async #migrate() { 17 this.#db.sql` 18 create table if not exists boards ( 19 id integer primary key autoincrement, 20 name text not null, 21 created_at datetime default current_timestamp 22 ); 23 24 create table if not exists columns ( 25 id integer primary key autoincrement, 26 board_id integer not null, 27 name text not null, 28 position integer not null, 29 created_at datetime default current_timestamp, 30 foreign key (board_id) references boards(id) on delete cascade 31 ); 32 33 create table if not exists cards ( 34 id integer primary key autoincrement, 35 column_id integer not null, 36 title text not null, 37 description text, 38 position integer not null, 39 created_at datetime default current_timestamp, 40 foreign key (column_id) references columns(id) on delete cascade 41 ); 42 43 ` 44 } 45 46 async close() { 47 await this.#db.destroy() 48 } 49}