import "dotenv/config"; import "reflect-metadata"; import { DataSource, LogLevel, LogMessage } from "typeorm"; import { Logger } from "typeorm"; import { QueryRunner } from "typeorm/browser"; import { RequestWithUser } from "../middlewares/user"; import { addLogSequence } from "../interfaces/utils"; export class MyCustomLogger implements Logger { log( level: "log" | "info" | "warn", message: any, queryRunner?: QueryRunner ) {} logQuery(query: string, parameters?: any[], queryRunner?: QueryRunner): void { const req = queryRunner?.data as RequestWithUser; if (req?.app?.locals.logData?.sequence) { addLogSequence(req, { action: "database", status: "success", description: "Query Data.", query: [ "Query: " + query + (parameters ? " - Parameters:" + JSON.stringify(parameters) : ""), ], }); } // const req = queryRunner?.data as RequestWithUser | undefined; // const logData = req?.app?.locals.logData?.sequence?.at(-1); // if (logData && !logData.query) logData.query = []; // if (logData) logData.query.push( // "Query: " + query + (parameters ? (" - Parameters:" + JSON.stringify(parameters)) : '') // ); } logMigration(message: string, queryRunner?: QueryRunner) {} logQueryError( error: string | Error, query: string, parameters?: any[], queryRunner?: QueryRunner ) {} logQuerySlow( time: number, query: string, parameters?: any[], queryRunner?: QueryRunner ) {} logSchemaBuild(message: string, queryRunner?: QueryRunner) {} } export const AppDataSource = new DataSource({ type: "mysql", database: process.env.DB_NAME, host: process.env.DB_HOST, port: +(process.env.DB_PORT || 3306), username: process.env.DB_USERNAME, password: process.env.DB_PASSWORD, connectorPackage: "mysql2", synchronize: false, timezone: "Z", // "Z" = UTC logging: ["query", "error"], entities: process.env.NODE_ENV !== "production" ? ["src/entities/*.ts"] : ["dist/entities/*{.ts,.js}"], migrations: process.env.NODE_ENV !== "production" ? ["src/migration/**/*.ts"] : ["dist/migration/**/*{.ts,.js}"], subscribers: [], logger: new MyCustomLogger(), });