icydraw/src/server/object/history.ts

48 lines
1.1 KiB
TypeScript
Raw Normal View History

2022-04-02 13:45:07 +00:00
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<void> {
this.db = await open({
filename: this._store,
driver: sqlite3.cached.Database,
});
await this.db.migrate();
}
async insert(record: CanvasRecord): Promise<void> {
2022-04-03 16:05:41 +00:00
const color = record.color || 0;
2022-04-02 13:45:07 +00:00
await this.db.run(
`INSERT INTO Placement (user, x, y, ts, color) VALUES (?,?,?,?,?)`,
record.user,
record.x,
record.y,
record.ts,
2022-04-03 15:15:35 +00:00
color,
2022-04-02 13:45:07 +00:00
);
}
async getUserPlacements(user: string): Promise<CanvasRecord[]> {
return this.db.all<CanvasRecord[]>(
`SELECT * FROM Placement WHERE user = ?`,
user,
);
}
2022-04-03 14:02:04 +00:00
async getPlacerAt(x: number, y: number): Promise<CanvasRecord | undefined> {
return this.db.get<CanvasRecord>(
`SELECT * FROM Placement WHERE x = ? AND y = ? ORDER BY ts DESC`,
x,
y,
);
}
2022-04-02 13:45:07 +00:00
}