Migrate to version 2 of nodes.json and start adding tests
This commit is contained in:
parent
8e7b02e56d
commit
fb87695b3e
23 changed files with 7352 additions and 1228 deletions
server/db
93
server/db/__mocks__/database.ts
Normal file
93
server/db/__mocks__/database.ts
Normal file
|
@ -0,0 +1,93 @@
|
|||
import {Database, Statement} from "sqlite";
|
||||
|
||||
export async function init(): Promise<void> {}
|
||||
|
||||
export class MockStatement implements Statement {
|
||||
constructor() {}
|
||||
|
||||
readonly changes: number = 0;
|
||||
readonly lastID: number = 0;
|
||||
readonly sql: string = "";
|
||||
|
||||
async all(): Promise<any[]>;
|
||||
async all(...params: any[]): Promise<any[]>;
|
||||
async all<T>(): Promise<T[]>;
|
||||
async all<T>(...params: any[]): Promise<T[]>;
|
||||
all(...params: any[]): any {
|
||||
}
|
||||
|
||||
async bind(): Promise<Statement>;
|
||||
async bind(...params: any[]): Promise<Statement>;
|
||||
async bind(...params: any[]): Promise<Statement> {
|
||||
return mockStatement();
|
||||
}
|
||||
|
||||
async each(callback?: (err: Error, row: any) => void): Promise<number>;
|
||||
async each(...params: any[]): Promise<number>;
|
||||
async each(...callback: (((err: Error, row: any) => void) | any)[]): Promise<number> {
|
||||
return 0;
|
||||
}
|
||||
|
||||
async finalize(): Promise<void> {}
|
||||
|
||||
get(): Promise<any>;
|
||||
get(...params: any[]): Promise<any>;
|
||||
get<T>(): Promise<T>;
|
||||
get<T>(...params: any[]): Promise<T>;
|
||||
get(...params: any[]): any {
|
||||
}
|
||||
|
||||
async reset(): Promise<Statement> {
|
||||
return mockStatement();
|
||||
}
|
||||
|
||||
async run(): Promise<Statement>;
|
||||
async run(...params: any[]): Promise<Statement>;
|
||||
async run(...params: any[]): Promise<Statement> {
|
||||
return mockStatement();
|
||||
}
|
||||
}
|
||||
|
||||
function mockStatement(): Statement {
|
||||
return new MockStatement();
|
||||
}
|
||||
|
||||
export class MockDatabase implements Database {
|
||||
constructor() {}
|
||||
|
||||
async close(): Promise<void> {}
|
||||
|
||||
async run(...args: any): Promise<Statement> {
|
||||
return mockStatement();
|
||||
}
|
||||
|
||||
async get(...args: any): Promise<any> {}
|
||||
|
||||
async all(...args: any): Promise<any[]> {
|
||||
return [];
|
||||
}
|
||||
|
||||
async exec(...args: any): Promise<Database> {
|
||||
return this;
|
||||
}
|
||||
|
||||
async each(...args: any): Promise<number> {
|
||||
return 0;
|
||||
}
|
||||
|
||||
async prepare(...args: any): Promise<Statement> {
|
||||
return mockStatement();
|
||||
}
|
||||
|
||||
configure(...args: any): void {}
|
||||
|
||||
async migrate(...args: any): Promise<Database> {
|
||||
return this;
|
||||
}
|
||||
|
||||
on(...args: any): void {}
|
||||
}
|
||||
|
||||
export const db: MockDatabase = new MockDatabase();
|
||||
|
||||
export {Database, Statement}
|
|
@ -48,11 +48,14 @@ async function applyMigrations(db: sqlite.Database): Promise<void> {
|
|||
}
|
||||
}
|
||||
|
||||
const file = config.server.databaseFile;
|
||||
const dbPromise = sqlite.open(file);
|
||||
const dbPromise = new Promise<Database>((resolve, reject) => {
|
||||
sqlite.open(config.server.databaseFile)
|
||||
.then(resolve)
|
||||
.catch(reject);
|
||||
});
|
||||
|
||||
export async function init(): Promise<void> {
|
||||
Logger.tag('database').info('Setting up database: %s', file);
|
||||
Logger.tag('database').info('Setting up database: %s', config.server.databaseFile);
|
||||
|
||||
let db: Database;
|
||||
try {
|
||||
|
@ -78,7 +81,12 @@ export async function init(): Promise<void> {
|
|||
* Wrapper around a Promise<Database> providing the same interface as the Database itself.
|
||||
*/
|
||||
class DatabasePromiseWrapper implements Database {
|
||||
constructor(private db: Promise<Database>) {}
|
||||
constructor(private db: Promise<Database>) {
|
||||
db.catch(err => {
|
||||
Logger.tag('database', 'init').error('Error initializing database: ', err);
|
||||
process.exit(1);
|
||||
});
|
||||
}
|
||||
|
||||
async close() {
|
||||
const db = await this.db;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue