Newer
Older
percord / src / util / util / Datasource.ts
import { config } from "dotenv"
import path from "path";
import { DataSource } from "typeorm";
import { red } from "picocolors";

// For typeorm cli
if (!process.env) {
	config();
}

let dbConnectionString =
	process.env.DATABASE || path.join(process.cwd(), "database.db");

const type = dbConnectionString.includes("://")
	? dbConnectionString.split(":")[0]?.replace("+srv", "")
	: "sqlite";
const isSqlite = type.includes("sqlite");

if (isSqlite) {
	console.log(
		`[Database] ${red(
			`You are running sqlite! Please keep in mind that we recommend setting up a dedicated database!`,
		)}`,
	);
}

const dataSource = new DataSource({
	//@ts-ignore type 'string' is not 'mysql' | 'sqlite' | 'mariadb' | etc etc
	type,
	charset: "utf8mb4",
	url: isSqlite ? undefined : dbConnectionString,
	database: isSqlite ? dbConnectionString : undefined,
	entities: ["dist/util/entities/*.js"],
	synchronize: false,
	logging: false,
	bigNumberStrings: false,
	supportBigNumbers: true,
	name: "default",
	migrations: ["dist/util/migrations/*.js"],
});

export { dataSource as DataSourceOptions, type as DatabaseType };