Initial commit
This commit is contained in:
18
src/handlers/config.ts
Normal file
18
src/handlers/config.ts
Normal file
@ -0,0 +1,18 @@
|
||||
import ConfigManager from '../libs/configManager.js';
|
||||
import __path from './path.js';
|
||||
import _ from 'lodash';
|
||||
import log from './log.js';
|
||||
|
||||
// Create a new config instance.
|
||||
const config = new ConfigManager(__path + '/config.json', true, {
|
||||
db_connection_string: 'mysql://USER:PASSWORD@HOST:3306/DATABASE',
|
||||
http_listen_address: '0.0.0.0',
|
||||
http_port: 3000,
|
||||
http_domain: 'example.org',
|
||||
http_enable_hsts: false,
|
||||
devmode: true
|
||||
});
|
||||
|
||||
!config.global.devmode && log.core.error('devmode active! Do NOT use this in prod!');
|
||||
|
||||
export default config;
|
40
src/handlers/db.ts
Normal file
40
src/handlers/db.ts
Normal file
@ -0,0 +1,40 @@
|
||||
import { PrismaClient, Prisma } from '@prisma/client'; // Database
|
||||
import { Response } from 'express';
|
||||
import config from './config.js';
|
||||
import log from './log.js';
|
||||
|
||||
// TODO: Add errorhandling with some sort of message.
|
||||
const prisma = new PrismaClient({
|
||||
datasources: {
|
||||
db: {
|
||||
url: config.global.db_connection_string
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// FIXME: any
|
||||
export function handlePrismaError(errorObj: any, res: Response, source: string) {
|
||||
log.db.error(source, errorObj);
|
||||
if (errorObj instanceof Prisma.PrismaClientKnownRequestError) {
|
||||
switch (errorObj.code) {
|
||||
|
||||
// P2002 -> "Unique constraint failed on the {constraint}"
|
||||
case 'P2002':
|
||||
res.status(409).json({ status: 'ERROR', errorcode: 'DB_ERROR', message: 'The object needs to be unique', meta: errorObj.meta });
|
||||
break;
|
||||
|
||||
// P2003 -> "Foreign key constraint failed on the field: {field_name}"
|
||||
case 'P2003':
|
||||
res.status(404).json({ status: 'ERROR', errorcode: 'DB_ERROR', message: 'Relation object does not exist', meta: errorObj.meta });
|
||||
break;
|
||||
|
||||
default:
|
||||
res.status(500).json({ status: 'ERROR', errorcode: 'DB_ERROR', message: 'An error occurred during the database operation' });
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
res.status(500).json({ status: 'ERROR', errorcode: 'DB_ERROR', message: 'If you can read this something went terribly wrong!' });
|
||||
}
|
||||
}
|
||||
|
||||
export default prisma;
|
52
src/handlers/log.ts
Normal file
52
src/handlers/log.ts
Normal file
@ -0,0 +1,52 @@
|
||||
import { Logger,ISettingsParam } from "tslog";
|
||||
|
||||
function loggerConfig(name: string): ISettingsParam<unknown> {
|
||||
return {
|
||||
type: "pretty", // pretty, json, hidden
|
||||
name: name,
|
||||
hideLogPositionForProduction: true,
|
||||
prettyLogTemplate: "{{dateIsoStr}} {{logLevelName}} {{nameWithDelimiterPrefix}} "
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
type log = {
|
||||
core: Logger<unknown>
|
||||
db: Logger<unknown>
|
||||
web: Logger<unknown>
|
||||
S3: Logger<unknown>
|
||||
auth: Logger<unknown>
|
||||
api?: Logger<unknown>
|
||||
frontend?: Logger<unknown>
|
||||
};
|
||||
|
||||
// FIXME: any type
|
||||
let log: log = {
|
||||
core: new Logger(loggerConfig("Core")),
|
||||
db: new Logger(loggerConfig("DB")),
|
||||
web: new Logger(loggerConfig("Web")),
|
||||
S3: new Logger(loggerConfig("S3")),
|
||||
auth: new Logger(loggerConfig("Auth")),
|
||||
// helper: new Logger(loggerConfig("HELPER")),
|
||||
};
|
||||
|
||||
log["api"] = log.web.getSubLogger({ name: "API" });
|
||||
log["frontend"] = log.web.getSubLogger({ name: "Frontend" });
|
||||
|
||||
|
||||
// log.core.silly("Hello from core");
|
||||
//log.api.trace("Hello from api");
|
||||
//log.frontend.trace("Hello from frontend");
|
||||
// log.core.debug("Hello from core");
|
||||
// log.core.info("Hello from core");
|
||||
// log.core.warn("Hello from core");
|
||||
// log.core.error("Hello from core");
|
||||
// log.db.silly("Hello from db");
|
||||
// log.db.trace("Hello from db");
|
||||
// log.web.debug("Hello from db");
|
||||
// log.auth.info("Hello from db");
|
||||
// log.helper.warn("Hello from db");
|
||||
// log.db.error("Hello from db");
|
||||
// log.core.fatal(new Error("I am a pretty Error with a stacktrace."));
|
||||
|
||||
export default log;
|
4
src/handlers/path.ts
Normal file
4
src/handlers/path.ts
Normal file
@ -0,0 +1,4 @@
|
||||
// Return the app directory as an absolute path
|
||||
const __path = process.argv[1];
|
||||
|
||||
export default __path;
|
Reference in New Issue
Block a user