1
0
forked from noxious/server

Moved service logic from repo to service, minor improvements, working hair customisation proof of concept

This commit is contained in:
2024-11-23 16:48:07 +01:00
parent d5c7cd0294
commit 1017013032
10 changed files with 118 additions and 71 deletions

View File

@ -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
}
}
}
})