forked from noxious/server
Added base repository, updated char. hair repo and user repo
This commit is contained in:
parent
bc58d41c54
commit
d299528c26
24
src/repositories/baseRepository.ts
Normal file
24
src/repositories/baseRepository.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import { appLogger } from '#utilities/logger'
|
||||||
|
import { Database } from '#utilities/database'
|
||||||
|
import { EntityManager, MikroORM } from '@mikro-orm/core'
|
||||||
|
|
||||||
|
export abstract class BaseRepository {
|
||||||
|
protected orm!: MikroORM
|
||||||
|
protected em!: EntityManager
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.initializeORM().catch((error) => {
|
||||||
|
appLogger.error(`Failed to initialize Repository: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
private async initializeORM() {
|
||||||
|
try {
|
||||||
|
this.orm = await Database.getInstance()
|
||||||
|
this.em = this.orm.em.fork()
|
||||||
|
} catch (error: any) {
|
||||||
|
appLogger.error(`Failed to initialize ORM: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
|
throw error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,29 +1,44 @@
|
|||||||
import prisma from '#utilities/prisma' // Import the global Prisma instance
|
import { BaseRepository } from './baseRepository'
|
||||||
import { CharacterHair } from '@prisma/client'
|
import { CharacterHair } from '#entities/characterHair'
|
||||||
|
import { appLogger } from '#utilities/logger'
|
||||||
|
|
||||||
class CharacterHairRepository {
|
class CharacterHairRepository extends BaseRepository {
|
||||||
async getAll(): Promise<CharacterHair[]> {
|
async getAll() {
|
||||||
return prisma.characterHair.findMany()
|
try {
|
||||||
|
const repository = this.em.getRepository(CharacterHair)
|
||||||
|
return await repository.findAll()
|
||||||
|
} catch (error: any) {
|
||||||
|
appLogger.error(`Failed to get all character hair: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
|
return null
|
||||||
}
|
}
|
||||||
async getAllSelectable(): Promise<CharacterHair[]> {
|
}
|
||||||
return prisma.characterHair.findMany({
|
|
||||||
where: {
|
async getAllSelectable() {
|
||||||
|
try {
|
||||||
|
const repository = this.em.getRepository(CharacterHair)
|
||||||
|
return await repository.find({
|
||||||
isSelectable: true
|
isSelectable: true
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
} catch (error: any) {
|
||||||
|
appLogger.error(`Failed to get selectable character hair: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
|
return null
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async getById(id: number) {
|
async getById(id: number) {
|
||||||
return prisma.characterHair.findUnique({
|
try {
|
||||||
where: { id },
|
const repository = this.em.getRepository(CharacterHair)
|
||||||
include: {
|
return await repository.findOne(
|
||||||
sprite: {
|
{ id },
|
||||||
include: {
|
{
|
||||||
spriteActions: true
|
populate: ['sprite.spriteActions']
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
} catch (error: any) {
|
||||||
|
appLogger.error(`Failed to get character hair by ID: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default new CharacterHairRepository()
|
export default new CharacterHairRepository()
|
@ -1,19 +1,13 @@
|
|||||||
import { appLogger } from '#utilities/logger'
|
import { appLogger } from '#utilities/logger'
|
||||||
import { Database } from '#utilities/database'
|
import { BaseRepository } from './baseRepository'
|
||||||
import { User } from '../entities/user'
|
import { User } from '#entities/user'
|
||||||
|
|
||||||
class UserRepository {
|
class UserRepository extends BaseRepository {
|
||||||
async getById(id: number) {
|
async getById(id: number) {
|
||||||
try {
|
try {
|
||||||
const orm = await Database.getInstance()
|
const repository = this.em.getRepository(User)
|
||||||
const em = orm.em.fork()
|
return await repository.findOne({ id })
|
||||||
const repository = em.getRepository(User)
|
|
||||||
|
|
||||||
return await repository.findOne({
|
|
||||||
id
|
|
||||||
})
|
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
// Handle error
|
|
||||||
appLogger.error(`Failed to get user by ID: ${error instanceof Error ? error.message : String(error)}`)
|
appLogger.error(`Failed to get user by ID: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
@ -21,15 +15,9 @@ class UserRepository {
|
|||||||
|
|
||||||
async getByUsername(username: string) {
|
async getByUsername(username: string) {
|
||||||
try {
|
try {
|
||||||
const orm = await Database.getInstance()
|
const repository = this.em.getRepository(User)
|
||||||
const em = orm.em.fork()
|
return await repository.findOne({ username })
|
||||||
const repository = em.getRepository(User)
|
|
||||||
|
|
||||||
return await repository.findOne({
|
|
||||||
username
|
|
||||||
})
|
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
// Handle error
|
|
||||||
appLogger.error(`Failed to get user by username: ${error instanceof Error ? error.message : String(error)}`)
|
appLogger.error(`Failed to get user by username: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
@ -37,15 +25,9 @@ class UserRepository {
|
|||||||
|
|
||||||
async getByEmail(email: string) {
|
async getByEmail(email: string) {
|
||||||
try {
|
try {
|
||||||
const orm = await Database.getInstance()
|
const repository = this.em.getRepository(User)
|
||||||
const em = orm.em.fork()
|
return await repository.findOne({ email })
|
||||||
const repository = em.getRepository(User)
|
|
||||||
|
|
||||||
return await repository.findOne({
|
|
||||||
email
|
|
||||||
})
|
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
// Handle error
|
|
||||||
appLogger.error(`Failed to get user by email: ${error instanceof Error ? error.message : String(error)}`)
|
appLogger.error(`Failed to get user by email: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user