diff options
Diffstat (limited to 'db/db.ts')
-rw-r--r-- | db/db.ts | 22 |
1 files changed, 12 insertions, 10 deletions
@@ -47,7 +47,7 @@ interface DBFindResult { * const results = db.findTerm("なった"); */ export default class DB { - private connection: Database; + private connection: Database = new Database(":memory:", { create: false }); public ready: Promise<void>; private here = path.dirname(path.fromFileUrl(import.meta.url)); private paths = { @@ -59,22 +59,19 @@ export default class DB { find: path.resolve(this.here, 'find.sql'), }, } as const; - private statement: { - attach: Statement; - queryTerm: Statement; - }; + private statement = { + attach: this.connection.prepare("attach database ? as ?"), + queryTerm: this.connection.prepare(""), + termPriority: this.connection.prepare(""), + } satisfies { [name: string]: Statement }; constructor() { - this.connection = new Database(":memory:", { create: false }); - this.statement = { - attach: this.connection.prepare("attach database ? as ?"), - queryTerm: this.connection.prepare(""), - }; this.attach(this.paths.db.dict, 'dict'); this.attach(this.paths.db.user, 'user'); this.ready = new Promise<void>(async resolve => { const statement = await Deno.readTextFile(this.paths.query.find); this.statement.queryTerm = this.connection.prepare(statement); + this.statement.termPriority = this.connection.prepare("insert into sort_overlay (user_id, expression, reading, sort) values (?, ?, ?, ?)"); resolve(); }); } @@ -104,4 +101,9 @@ export default class DB { }); return terms; } + + async termPriority(userID: number, expression: string, reading: string, priority: number) { + await this.ready; + this.statement.termPriority.run(userID, expression, reading, priority); + } }; |