forked from noxious/server
use camelcase file names from now on...
This commit is contained in:
122
src/repositories/characterRepository.ts
Normal file
122
src/repositories/characterRepository.ts
Normal file
@ -0,0 +1,122 @@
|
||||
import prisma from '../utilities/prisma' // Import the global Prisma instance
|
||||
import { Character } from '@prisma/client'
|
||||
|
||||
class CharacterRepository {
|
||||
async getByUserId(userId: number): Promise<Character[] | null> {
|
||||
try {
|
||||
return await prisma.character.findMany({
|
||||
where: {
|
||||
userId
|
||||
},
|
||||
include: {
|
||||
zone: true,
|
||||
characterType: {
|
||||
include: {
|
||||
sprite: true
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
} catch (error: any) {
|
||||
// Handle error
|
||||
throw new Error(`Failed to get character by user ID: ${error.message}`)
|
||||
}
|
||||
}
|
||||
|
||||
async getByUserAndId(userId: number, characterId: number): Promise<Character | null> {
|
||||
try {
|
||||
return await prisma.character.findFirst({
|
||||
where: {
|
||||
userId,
|
||||
id: characterId
|
||||
},
|
||||
include: {
|
||||
zone: true,
|
||||
characterType: {
|
||||
include: {
|
||||
sprite: true
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
} catch (error: any) {
|
||||
// Handle error
|
||||
throw new Error(`Failed to get character by user ID and character ID: ${error.message}`)
|
||||
}
|
||||
}
|
||||
|
||||
async getById(id: number): Promise<Character | null> {
|
||||
try {
|
||||
return await prisma.character.findUnique({
|
||||
where: {
|
||||
id
|
||||
},
|
||||
include: {
|
||||
zone: true,
|
||||
characterType: {
|
||||
include: {
|
||||
sprite: true
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
} catch (error: any) {
|
||||
// Handle error
|
||||
throw new Error(`Failed to get character by ID: ${error.message}`)
|
||||
}
|
||||
}
|
||||
|
||||
async updatePosition(id: number, position_x: number, position_y: number): Promise<Character | null> {
|
||||
try {
|
||||
return await prisma.character.update({
|
||||
where: {
|
||||
id: id
|
||||
},
|
||||
data: {
|
||||
position_x,
|
||||
position_y
|
||||
}
|
||||
})
|
||||
} catch (error: any) {
|
||||
// Handle error
|
||||
throw new Error(`Failed to update character: ${error.message}`)
|
||||
}
|
||||
}
|
||||
|
||||
async deleteByUserIdAndId(userId: number, characterId: number): Promise<Character | null> {
|
||||
try {
|
||||
return await prisma.character.delete({
|
||||
where: {
|
||||
userId,
|
||||
id: characterId
|
||||
}
|
||||
})
|
||||
} catch (error: any) {
|
||||
// Handle error
|
||||
throw new Error(`Failed to delete character by user ID and character ID: ${error.message}`)
|
||||
}
|
||||
}
|
||||
|
||||
async getByName(name: string): Promise<Character | null> {
|
||||
try {
|
||||
return await prisma.character.findFirst({
|
||||
where: {
|
||||
name
|
||||
},
|
||||
include: {
|
||||
zone: true,
|
||||
characterType: {
|
||||
include: {
|
||||
sprite: true
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
} catch (error: any) {
|
||||
// Handle error
|
||||
throw new Error(`Failed to get character by name: ${error.message}`)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default new CharacterRepository()
|
Reference in New Issue
Block a user