import { join } from 'path'; import sqlite3 from 'sqlite3'; import { open, Database } from 'sqlite'; import { CanvasRecord } from '../../common/types/canvas'; export class History { private db!: Database; constructor( private _store = join(__dirname, '..', '..', '..', 'canvas.db'), ) {} async initialize(): Promise { this.db = await open({ filename: this._store, driver: sqlite3.cached.Database, }); await this.db.migrate(); } async insert(record: CanvasRecord): Promise { const color = record.color || 0; await this.db.run( `INSERT INTO Placement (user, x, y, ts, color) VALUES (?,?,?,?,?)`, record.user, record.x, record.y, record.ts, color, ); } async getUserPlacements(user: string): Promise { return this.db.all( `SELECT * FROM Placement WHERE user = ?`, user, ); } async getPlacerAt(x: number, y: number): Promise { return this.db.get( `SELECT * FROM Placement WHERE x = ? AND y = ? ORDER BY ts DESC`, x, y, ); } }