forked from noxious/server
Moved service logic from repo to service, minor improvements, working hair customisation proof of concept
This commit is contained in:
@ -5,6 +5,13 @@ class CharacterHairRepository {
|
||||
async getAll(): Promise<CharacterHair[]> {
|
||||
return prisma.characterHair.findMany()
|
||||
}
|
||||
async getIsEnabledForCharCreationHair(): Promise<CharacterHair[]> {
|
||||
return prisma.characterHair.findMany({
|
||||
where: {
|
||||
isEnabledForCharCreation: true
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export default new CharacterHairRepository()
|
||||
|
@ -1,9 +1,8 @@
|
||||
import prisma from '../utilities/prisma' // Import the global Prisma instance
|
||||
import { Character } from '@prisma/client'
|
||||
import { appLogger } from '../utilities/logger'
|
||||
|
||||
class CharacterRepository {
|
||||
async getByUserId(userId: number): Promise<Character[] | null> {
|
||||
async getByUserId(userId: number) {
|
||||
try {
|
||||
return await prisma.character.findMany({
|
||||
where: {
|
||||
@ -15,6 +14,11 @@ class CharacterRepository {
|
||||
include: {
|
||||
sprite: true
|
||||
}
|
||||
},
|
||||
hair: {
|
||||
include: {
|
||||
sprite: true
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
@ -25,7 +29,7 @@ class CharacterRepository {
|
||||
}
|
||||
}
|
||||
|
||||
async getByUserAndId(userId: number, characterId: number): Promise<Character | null> {
|
||||
async getByUserAndId(userId: number, characterId: number) {
|
||||
try {
|
||||
return await prisma.character.findFirst({
|
||||
where: {
|
||||
@ -38,6 +42,11 @@ class CharacterRepository {
|
||||
include: {
|
||||
sprite: true
|
||||
}
|
||||
},
|
||||
hair: {
|
||||
include: {
|
||||
sprite: true
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
@ -48,7 +57,7 @@ class CharacterRepository {
|
||||
}
|
||||
}
|
||||
|
||||
async getById(id: number): Promise<Character | null> {
|
||||
async getById(id: number) {
|
||||
try {
|
||||
return await prisma.character.findUnique({
|
||||
where: {
|
||||
@ -60,6 +69,11 @@ class CharacterRepository {
|
||||
include: {
|
||||
sprite: true
|
||||
}
|
||||
},
|
||||
hair: {
|
||||
include: {
|
||||
sprite: true
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
@ -70,40 +84,7 @@ class CharacterRepository {
|
||||
}
|
||||
}
|
||||
|
||||
async updatePosition(id: number, positionX: number, positionY: number): Promise<Character | null> {
|
||||
try {
|
||||
return await prisma.character.update({
|
||||
where: {
|
||||
id: id
|
||||
},
|
||||
data: {
|
||||
positionX,
|
||||
positionY
|
||||
}
|
||||
})
|
||||
} catch (error: any) {
|
||||
// Handle error
|
||||
appLogger.error(`Failed to update character: ${error instanceof Error ? error.message : String(error)}`)
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
async deleteByUserIdAndId(userId: number, characterId: number): Promise<Character | null> {
|
||||
try {
|
||||
return await prisma.character.delete({
|
||||
where: {
|
||||
userId,
|
||||
id: characterId
|
||||
}
|
||||
})
|
||||
} catch (error: any) {
|
||||
// Handle error
|
||||
appLogger.error(`Failed to delete character by user ID and character ID: ${error instanceof Error ? error.message : String(error)}`)
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
async getByName(name: string): Promise<Character | null> {
|
||||
async getByName(name: string) {
|
||||
try {
|
||||
return await prisma.character.findFirst({
|
||||
where: {
|
||||
@ -115,6 +96,11 @@ class CharacterRepository {
|
||||
include: {
|
||||
sprite: true
|
||||
}
|
||||
},
|
||||
hair: {
|
||||
include: {
|
||||
sprite: true
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
Reference in New Issue
Block a user