summary refs log tree commit diff
path: root/src/util/util/Datasource.ts
diff options
context:
space:
mode:
authorMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-12-27 15:12:32 +1100
committerMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-12-27 15:23:56 +1100
commit8aa355dee788a6fb9b694a8e49063a7482f70fcc (patch)
tree71eb00236d37c7eb37b6d8be364e7e51ed8afb3b /src/util/util/Datasource.ts
parentAdd GH workflow for build (diff)
downloadserver-8aa355dee788a6fb9b694a8e49063a7482f70fcc.tar.xz
Move datasource to own file for typeorm cli
Diffstat (limited to '')
-rw-r--r--src/util/util/Datasource.ts42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/util/util/Datasource.ts b/src/util/util/Datasource.ts
new file mode 100644

index 00000000..1495faaa --- /dev/null +++ b/src/util/util/Datasource.ts
@@ -0,0 +1,42 @@ +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 }; \ No newline at end of file