Character name field is always unique, updated init migration
This commit is contained in:
@ -11,6 +11,14 @@ export default function (socket: TSocket, io: Server) {
|
||||
data = ZCharacterCreate.parse(data);
|
||||
|
||||
const user_id = socket.user?.id as number;
|
||||
|
||||
// Check if character name already exists
|
||||
const characterExists = await CharacterRepository.getByName(data.name);
|
||||
|
||||
if (characterExists) {
|
||||
return socket.emit('notification', {message: 'Character name already exists'});
|
||||
}
|
||||
|
||||
const character: Character = await CharacterRepository.create(user_id, data.name) as Character;
|
||||
const characters: Character[] = await CharacterRepository.getByUserId(user_id) as Character[];
|
||||
|
||||
|
@ -59,6 +59,19 @@ class CharacterRepository {
|
||||
throw new Error(`Failed to delete character: ${error.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
async getByName(name: string): Promise<Character | null> {
|
||||
try {
|
||||
return await prisma.character.findFirst({
|
||||
where: {
|
||||
name,
|
||||
},
|
||||
});
|
||||
} 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