forked from noxious/server
Made database class to call entity manager with
This commit is contained in:
parent
cfae96bde8
commit
413a5cbcf5
@ -1,6 +1,6 @@
|
|||||||
import prisma from '../utilities/prisma' // Import the global Prisma instance
|
import prisma from '../utilities/prisma' // Import the global Prisma instance
|
||||||
import { User } from '@prisma/client'
|
import { User } from '@prisma/client'
|
||||||
import { appLogger } from '../utilities/logger'
|
import { appLogger } from '#utilities/logger'
|
||||||
|
|
||||||
class UserRepository {
|
class UserRepository {
|
||||||
async getById(id: number): Promise<User | null> {
|
async getById(id: number): Promise<User | null> {
|
||||||
|
@ -1,24 +1,22 @@
|
|||||||
import fs from 'fs'
|
import fs from 'fs'
|
||||||
import express, { Application } from 'express'
|
import express, { Application } from 'express'
|
||||||
import config from './utilities/config'
|
import config from '#utilities/config'
|
||||||
import { getAppPath } from './utilities/storage'
|
import { getAppPath } from '#utilities/storage'
|
||||||
import { createServer as httpServer, Server as HTTPServer } from 'http'
|
import { createServer as httpServer, Server as HTTPServer } from 'http'
|
||||||
import { addHttpRoutes } from './http'
|
import { addHttpRoutes } from './http'
|
||||||
import cors from 'cors'
|
import cors from 'cors'
|
||||||
import { Server as SocketServer } from 'socket.io'
|
import { Server as SocketServer } from 'socket.io'
|
||||||
import { Authentication } from './middleware/authentication'
|
import { Authentication } from './middleware/authentication'
|
||||||
import { TSocket } from './utilities/types'
|
import { TSocket } from '#utilities/types'
|
||||||
import { MariaDbDriver, MikroORM } from '@mikro-orm/mariadb'
|
import prisma from '#utilities/prisma'
|
||||||
import prisma from './utilities/prisma'
|
import { appLogger, watchLogs } from '#utilities/logger'
|
||||||
import { appLogger, watchLogs } from './utilities/logger'
|
|
||||||
import ZoneManager from './managers/zoneManager'
|
import ZoneManager from './managers/zoneManager'
|
||||||
import UserManager from './managers/userManager'
|
import UserManager from './managers/userManager'
|
||||||
import CommandManager from './managers/commandManager'
|
import CommandManager from './managers/commandManager'
|
||||||
import QueueManager from './managers/queueManager'
|
import QueueManager from './managers/queueManager'
|
||||||
import DateManager from './managers/dateManager'
|
import DateManager from './managers/dateManager'
|
||||||
import WeatherManager from './managers/weatherManager'
|
import WeatherManager from './managers/weatherManager'
|
||||||
import { Migrator } from '@mikro-orm/migrations'
|
import { Database } from '#utilities/database'
|
||||||
import { TsMorphMetadataProvider } from '@mikro-orm/reflection';
|
|
||||||
|
|
||||||
export class Server {
|
export class Server {
|
||||||
private readonly app: Application
|
private readonly app: Application
|
||||||
@ -62,23 +60,7 @@ export class Server {
|
|||||||
|
|
||||||
// MikroORM
|
// MikroORM
|
||||||
try {
|
try {
|
||||||
const orm = await MikroORM.init({
|
await Database.getInstance()
|
||||||
extensions: [Migrator],
|
|
||||||
metadataProvider: TsMorphMetadataProvider,
|
|
||||||
entities: ['./src/entities/**/*.js'],
|
|
||||||
entitiesTs: ['./src/entities/**/*.ts'],
|
|
||||||
driver: MariaDbDriver,
|
|
||||||
dbName: config.DB_NAME,
|
|
||||||
host: config.DB_HOST,
|
|
||||||
port: config.DB_PORT,
|
|
||||||
user: config.DB_USER,
|
|
||||||
password: config.DB_PASS,
|
|
||||||
debug: config.ENV !== 'production',
|
|
||||||
driverOptions: {
|
|
||||||
allowPublicKeyRetrieval: true
|
|
||||||
}
|
|
||||||
});
|
|
||||||
appLogger.info('Database 2 connected')
|
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
appLogger.error(`Database 2 connection failed: ${error.message}`)
|
appLogger.error(`Database 2 connection failed: ${error.message}`)
|
||||||
}
|
}
|
||||||
|
49
src/utilities/database.ts
Normal file
49
src/utilities/database.ts
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
import { MariaDbDriver, MikroORM } from '@mikro-orm/mariadb'
|
||||||
|
import { Migrator } from '@mikro-orm/migrations'
|
||||||
|
import { TsMorphMetadataProvider } from '@mikro-orm/reflection'
|
||||||
|
import config from '#utilities/config'
|
||||||
|
import { appLogger } from '#utilities/logger'
|
||||||
|
|
||||||
|
export class Database {
|
||||||
|
private static instance: MikroORM | undefined
|
||||||
|
|
||||||
|
private static async init(): Promise<MikroORM> {
|
||||||
|
try {
|
||||||
|
const orm = await MikroORM.init({
|
||||||
|
extensions: [Migrator],
|
||||||
|
metadataProvider: TsMorphMetadataProvider,
|
||||||
|
entities: ['./src/entities/**/*.js'],
|
||||||
|
entitiesTs: ['./src/entities/**/*.ts'],
|
||||||
|
driver: MariaDbDriver,
|
||||||
|
dbName: config.DB_NAME,
|
||||||
|
host: config.DB_HOST,
|
||||||
|
port: config.DB_PORT,
|
||||||
|
user: config.DB_USER,
|
||||||
|
password: config.DB_PASS,
|
||||||
|
debug: config.ENV !== 'production',
|
||||||
|
driverOptions: {
|
||||||
|
allowPublicKeyRetrieval: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
appLogger.info('MikroORM connected successfully')
|
||||||
|
return orm
|
||||||
|
} catch (error) {
|
||||||
|
appLogger.error(`MikroORM connection failed: ${error}`)
|
||||||
|
throw error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async getInstance(): Promise<MikroORM> {
|
||||||
|
if (!Database.instance) {
|
||||||
|
Database.instance = await Database.init()
|
||||||
|
}
|
||||||
|
return Database.instance
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async close() {
|
||||||
|
if (Database.instance) {
|
||||||
|
await Database.instance.close()
|
||||||
|
Database.instance = undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user