added zod for easier validation (wip)

This commit is contained in:
2024-05-29 01:27:51 +02:00
parent 58ca3fac22
commit 97062c0635
6 changed files with 33 additions and 8 deletions

View File

@ -2,14 +2,21 @@ import { Socket, Server } from "socket.io";
import {TSocket} from "../types/TSocket";
import {Character} from "@prisma/client";
import CharacterRepository from "../repositories/CharacterRepository";
import {ZCharacterCreate} from "../types/zod/CharacterCreate";
export default function CharacterCreate(socket: TSocket, io: Server) {
socket.on('character:create', async (data: any) => {
let user_id = socket.user?.id as number;
// zod validate
try {
data = ZCharacterCreate.parse(data);
let character: Character = await CharacterRepository.create(user_id, data.name) as Character;
let characters: Character[] = await CharacterRepository.getByUserId(user_id) as Character[];
let user_id = socket.user?.id as number;
let character: Character = await CharacterRepository.create(user_id, data.name) as Character;
let characters: Character[] = await CharacterRepository.getByUserId(user_id) as Character[];
socket.emit('character:list', characters);
socket.emit('character:list', characters);
} catch (error: any) {
return socket.emit('notification', {error: error.errors[0].message});
}
});
}

View File

@ -1,6 +1,7 @@
import {Character} from "@prisma/client";
class CharacterService {
class CharacterService
{
}

View File

@ -0,0 +1,5 @@
import { z } from 'zod';
export const ZCharacterCreate = z.object({
name: z.string().min(3).max(255)
});

View File

@ -2,7 +2,8 @@ import dotenv from "dotenv";
dotenv.config();
class config {
class config
{
static ENV: string = process.env.ENV || "prod";
static PORT: number = process.env.PORT ? parseInt(process.env.PORT) : 5000;
static JWT_SECRET: string = process.env.JWT_SECRET || "secret";