Adds initial progress
This commit is contained in:
commit
a0b668cb90
34 changed files with 2680 additions and 0 deletions
44
source/Database/DatabaseConnection.ts
Normal file
44
source/Database/DatabaseConnection.ts
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
import {DatabaseEnvironment, Environment} from "../Environment";
|
||||
import Sqlite3 from "better-sqlite3";
|
||||
import Database from "better-sqlite3";
|
||||
import {Container} from "../Container/Container";
|
||||
import {Logger} from "log4js";
|
||||
|
||||
export class DatabaseConnection {
|
||||
private static connection: DatabaseConnection;
|
||||
|
||||
private database: Sqlite3.Database;
|
||||
|
||||
constructor(private readonly env: DatabaseEnvironment) {
|
||||
this.database = new Database(env.path, {
|
||||
nativeBinding: "node_modules/better-sqlite3/build/Release/better_sqlite3.node",
|
||||
})
|
||||
this.database.pragma('journal_mode = WAL');
|
||||
}
|
||||
|
||||
public execute(query: string, ...args: any[]): Sqlite3.RunResult {
|
||||
try {
|
||||
const preparedQuery = this.database.prepare(query);
|
||||
return preparedQuery.run(args);
|
||||
} catch (error) {
|
||||
Container.get<Logger>("logger").error("Failed to execute database connection", error, query, args);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
public fetch<BindParameters extends unknown[] | {} = unknown[], Result = unknown>(query: string, ...args: any[]): Result|undefined {
|
||||
const preparedQuery = this.database.prepare<BindParameters, Result>(query);
|
||||
return preparedQuery.get(args);
|
||||
}
|
||||
public fetchAll<BindParameters extends unknown[] | {} = unknown[], Result = unknown>(query: string, ...args: any[]): Result[] {
|
||||
const preparedQuery = this.database.prepare<BindParameters, Result>(query);
|
||||
return preparedQuery.all(args);
|
||||
}
|
||||
|
||||
public hasTable(tableName: string): boolean {
|
||||
const sql = "SELECT COUNT(*) as tableCount FROM sqlite_master WHERE type='table' AND name=? LIMIT 1;";
|
||||
|
||||
const result = this.fetch<string[], {tableCount: number}>(sql, tableName);
|
||||
return result != undefined && result.tableCount > 0;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue