ESLint: Auto reformat and fixing some warnings / errors.
This commit is contained in:
parent
5237db38e0
commit
91690509d3
50 changed files with 2141 additions and 1493 deletions
server/db
|
@ -2,11 +2,11 @@ import util from "util";
|
|||
import fs from "graceful-fs";
|
||||
import glob from "glob";
|
||||
import path from "path";
|
||||
import {config} from "../config";
|
||||
import { config } from "../config";
|
||||
import Logger from "../logger";
|
||||
import {Database, open, Statement} from "sqlite";
|
||||
import { Database, open, Statement } from "sqlite";
|
||||
import * as sqlite3 from "sqlite3";
|
||||
import {RunResult, SqlType, TypedDatabase} from "../types";
|
||||
import { RunResult, SqlType, TypedDatabase } from "../types";
|
||||
|
||||
const pglob = util.promisify(glob);
|
||||
const pReadFile = util.promisify(fs.readFile);
|
||||
|
@ -28,102 +28,145 @@ class DatabasePromiseWrapper implements TypedDatabase {
|
|||
.then(resolve)
|
||||
.catch(reject);
|
||||
});
|
||||
this.db.catch(err => {
|
||||
Logger.tag('database', 'init').error('Error initializing database: ', err);
|
||||
this.db.catch((err) => {
|
||||
Logger.tag("database", "init").error(
|
||||
"Error initializing database: ",
|
||||
err
|
||||
);
|
||||
process.exit(1);
|
||||
});
|
||||
}
|
||||
|
||||
async on(event: string, listener: any): Promise<void> {
|
||||
async on(event: string, listener: unknown): Promise<void> {
|
||||
const db = await this.db;
|
||||
db.on(event, listener);
|
||||
}
|
||||
|
||||
async run(sql: SqlType, ...params: any[]): Promise<RunResult> {
|
||||
async run(sql: SqlType, ...params: unknown[]): Promise<RunResult> {
|
||||
const db = await this.db;
|
||||
return db.run(sql, ...params);
|
||||
}
|
||||
|
||||
async get<T>(sql: SqlType, ...params: any[]): Promise<T | undefined> {
|
||||
async get<T>(sql: SqlType, ...params: unknown[]): Promise<T | undefined> {
|
||||
const db = await this.db;
|
||||
return await db.get<T>(sql, ...params);
|
||||
}
|
||||
|
||||
async each<T>(sql: SqlType, callback: (err: any, row: T) => void): Promise<number>;
|
||||
async each<T>(sql: SqlType, param1: any, callback: (err: any, row: T) => void): Promise<number>;
|
||||
async each<T>(sql: SqlType, param1: any, param2: any, callback: (err: any, row: T) => void): Promise<number>;
|
||||
async each<T>(sql: SqlType, param1: any, param2: any, param3: any, callback: (err: any, row: T) => void): Promise<number>;
|
||||
async each<T>(sql: SqlType, ...params: any[]): Promise<number> {
|
||||
async each<T>(
|
||||
sql: SqlType,
|
||||
callback: (err: unknown, row: T) => void
|
||||
): Promise<number>;
|
||||
async each<T>(
|
||||
sql: SqlType,
|
||||
param1: unknown,
|
||||
callback: (err: unknown, row: T) => void
|
||||
): Promise<number>;
|
||||
async each<T>(
|
||||
sql: SqlType,
|
||||
param1: unknown,
|
||||
param2: unknown,
|
||||
callback: (err: unknown, row: T) => void
|
||||
): Promise<number>;
|
||||
async each<T>(
|
||||
sql: SqlType,
|
||||
param1: unknown,
|
||||
param2: unknown,
|
||||
param3: unknown,
|
||||
callback: (err: unknown, row: T) => void
|
||||
): Promise<number>;
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
async each<T>(sql: SqlType, ...params: unknown[]): Promise<number> {
|
||||
const db = await this.db;
|
||||
// @ts-ignore
|
||||
return await db.each.apply(db, arguments);
|
||||
return await db.each(sql, ...params);
|
||||
}
|
||||
|
||||
async all<T>(sql: SqlType, ...params: any[]): Promise<T[]> {
|
||||
async all<T>(sql: SqlType, ...params: unknown[]): Promise<T[]> {
|
||||
const db = await this.db;
|
||||
return (await db.all<T[]>(sql, ...params));
|
||||
return await db.all<T[]>(sql, ...params);
|
||||
}
|
||||
|
||||
async exec(sql: SqlType, ...params: any[]): Promise<void> {
|
||||
async exec(sql: SqlType, ...params: unknown[]): Promise<void> {
|
||||
const db = await this.db;
|
||||
return await db.exec(sql, ...params);
|
||||
}
|
||||
|
||||
async prepare(sql: SqlType, ...params: any[]): Promise<Statement> {
|
||||
async prepare(sql: SqlType, ...params: unknown[]): Promise<Statement> {
|
||||
const db = await this.db;
|
||||
return await db.prepare(sql, ...params);
|
||||
}
|
||||
}
|
||||
|
||||
async function applyPatch(db: TypedDatabase, file: string): Promise<void> {
|
||||
Logger.tag('database', 'migration').info('Checking if patch need to be applied: %s', file);
|
||||
Logger.tag("database", "migration").info(
|
||||
"Checking if patch need to be applied: %s",
|
||||
file
|
||||
);
|
||||
|
||||
const contents = await pReadFile(file);
|
||||
const version = path.basename(file, '.sql');
|
||||
const version = path.basename(file, ".sql");
|
||||
|
||||
const row = await db.get('SELECT * FROM schema_version WHERE version = ?', version);
|
||||
const row = await db.get(
|
||||
"SELECT * FROM schema_version WHERE version = ?",
|
||||
version
|
||||
);
|
||||
if (row) {
|
||||
// patch is already applied. skip!
|
||||
Logger.tag('database', 'migration').info('Patch already applied, skipping: %s', file);
|
||||
return
|
||||
Logger.tag("database", "migration").info(
|
||||
"Patch already applied, skipping: %s",
|
||||
file
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
const sql = 'BEGIN TRANSACTION;\n' +
|
||||
contents.toString() + '\n' +
|
||||
'INSERT INTO schema_version (version) VALUES (\'' + version + '\');\n' +
|
||||
'END TRANSACTION;';
|
||||
const sql =
|
||||
"BEGIN TRANSACTION;\n" +
|
||||
contents.toString() +
|
||||
"\n" +
|
||||
"INSERT INTO schema_version (version) VALUES ('" +
|
||||
version +
|
||||
"');\n" +
|
||||
"END TRANSACTION;";
|
||||
|
||||
await db.exec(sql);
|
||||
|
||||
Logger.tag('database', 'migration').info('Patch successfully applied: %s', file);
|
||||
Logger.tag("database", "migration").info(
|
||||
"Patch successfully applied: %s",
|
||||
file
|
||||
);
|
||||
}
|
||||
|
||||
async function applyMigrations(db: TypedDatabase): Promise<void> {
|
||||
Logger.tag('database', 'migration').info('Migrating database...');
|
||||
Logger.tag("database", "migration").info("Migrating database...");
|
||||
|
||||
const sql = 'BEGIN TRANSACTION; CREATE TABLE IF NOT EXISTS schema_version (\n' +
|
||||
' version VARCHAR(255) PRIMARY KEY ASC,\n' +
|
||||
' applied_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL\n' +
|
||||
'); END TRANSACTION;';
|
||||
const sql =
|
||||
"BEGIN TRANSACTION; CREATE TABLE IF NOT EXISTS schema_version (\n" +
|
||||
" version VARCHAR(255) PRIMARY KEY ASC,\n" +
|
||||
" applied_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL\n" +
|
||||
"); END TRANSACTION;";
|
||||
|
||||
await db.exec(sql);
|
||||
|
||||
const files = await pglob(__dirname + '/patches/*.sql');
|
||||
const files = await pglob(__dirname + "/patches/*.sql");
|
||||
for (const file of files) {
|
||||
await applyPatch(db, file)
|
||||
await applyPatch(db, file);
|
||||
}
|
||||
}
|
||||
|
||||
export const db: TypedDatabase = new DatabasePromiseWrapper();
|
||||
|
||||
export async function init(): Promise<void> {
|
||||
Logger.tag('database').info('Setting up database: %s', config.server.databaseFile);
|
||||
await db.on('profile', (sql: string, time: number) => Logger.tag('database').profile('[%sms]\t%s', time, sql));
|
||||
Logger.tag("database").info(
|
||||
"Setting up database: %s",
|
||||
config.server.databaseFile
|
||||
);
|
||||
await db.on("profile", (sql: string, time: number) =>
|
||||
Logger.tag("database").profile("[%sms]\t%s", time, sql)
|
||||
);
|
||||
|
||||
try {
|
||||
await applyMigrations(db);
|
||||
} catch (error) {
|
||||
Logger.tag('database').error('Error migrating database:', error);
|
||||
Logger.tag("database").error("Error migrating database:", error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue