mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-23 11:37:02 -04:00
refactor: replace TypeORM with knex.js
Co-authored-by: Philip Molares <philip.molares@udo.edu> Signed-off-by: Philip Molares <philip.molares@udo.edu> Signed-off-by: Erik Michelson <github@erik.michelson.eu>
This commit is contained in:
parent
6e151c8a1b
commit
c0ce00b3f9
242 changed files with 4601 additions and 6871 deletions
|
@ -4,8 +4,8 @@
|
|||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
import { registerAs } from '@nestjs/config';
|
||||
import z from 'zod';
|
||||
import { Knex } from 'knex';
|
||||
import z from 'zod';
|
||||
|
||||
import { DatabaseType } from './database-type.enum';
|
||||
import { parseOptionalNumber } from './utils';
|
||||
|
@ -47,31 +47,15 @@ const mariaDbSchema = z.object({
|
|||
.describe('HD_DATABASE_PORT'),
|
||||
});
|
||||
|
||||
const mysqlDbSchema = z.object({
|
||||
type: z.literal(DatabaseType.MYSQL).describe('HD_DATABASE_TYPE'),
|
||||
name: z.string().describe('HD_DATABASE_NAME'),
|
||||
username: z.string().describe('HD_DATABASE_USERNAME'),
|
||||
password: z.string().describe('HD_DATABASE_PASSWORD'),
|
||||
host: z.string().describe('HD_DATABASE_HOST'),
|
||||
port: z
|
||||
.number()
|
||||
.positive()
|
||||
.max(65535)
|
||||
.default(3306)
|
||||
.describe('HD_DATABASE_PORT'),
|
||||
});
|
||||
|
||||
const dbSchema = z.discriminatedUnion('type', [
|
||||
sqliteDbSchema,
|
||||
mariaDbSchema,
|
||||
mysqlDbSchema,
|
||||
postgresDbSchema,
|
||||
]);
|
||||
|
||||
export type SqliteDatabaseConfig = z.infer<typeof sqliteDbSchema>;
|
||||
export type PostgresDatabaseConfig = z.infer<typeof postgresDbSchema>;
|
||||
export type MariadbDatabaseConfig = z.infer<typeof mariaDbSchema>;
|
||||
export type MySQLDatabaseConfig = z.infer<typeof mysqlDbSchema>;
|
||||
export type DatabaseConfig = z.infer<typeof dbSchema>;
|
||||
|
||||
export default registerAs('databaseConfig', () => {
|
||||
|
@ -98,7 +82,7 @@ export function getKnexConfig(databaseConfig: DatabaseConfig): Knex.Config {
|
|||
return {
|
||||
client: 'better-sqlite3',
|
||||
connection: {
|
||||
filename: databaseConfig.database,
|
||||
filename: databaseConfig.name,
|
||||
},
|
||||
};
|
||||
case DatabaseType.POSTGRES:
|
||||
|
@ -108,7 +92,7 @@ export function getKnexConfig(databaseConfig: DatabaseConfig): Knex.Config {
|
|||
host: databaseConfig.host,
|
||||
port: databaseConfig.port,
|
||||
user: databaseConfig.username,
|
||||
database: databaseConfig.database,
|
||||
database: databaseConfig.name,
|
||||
password: databaseConfig.password,
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
application_name: 'HedgeDoc',
|
||||
|
@ -116,12 +100,13 @@ export function getKnexConfig(databaseConfig: DatabaseConfig): Knex.Config {
|
|||
};
|
||||
case DatabaseType.MARIADB:
|
||||
return {
|
||||
// Knex recommends using the mysql driver for MariaDB database instances
|
||||
client: 'mysql',
|
||||
connection: {
|
||||
host: databaseConfig.host,
|
||||
port: databaseConfig.port,
|
||||
user: databaseConfig.username,
|
||||
database: databaseConfig.database,
|
||||
database: databaseConfig.name,
|
||||
password: databaseConfig.password,
|
||||
},
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue