forked from noxious/server
added zod for easier validation (wip)
This commit is contained in:
parent
58ca3fac22
commit
97062c0635
12
package-lock.json
generated
12
package-lock.json
generated
@ -14,7 +14,8 @@
|
|||||||
"prisma": "^5.13.0",
|
"prisma": "^5.13.0",
|
||||||
"socket.io": "^4.7.5",
|
"socket.io": "^4.7.5",
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
"typescript": "^5.4.5"
|
"typescript": "^5.4.5",
|
||||||
|
"zod": "^3.23.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/bcryptjs": "^2.4.6",
|
"@types/bcryptjs": "^2.4.6",
|
||||||
@ -1907,6 +1908,15 @@
|
|||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"node_modules/zod": {
|
||||||
|
"version": "3.23.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
|
||||||
|
"integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
|
||||||
|
"license": "MIT",
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/colinhacks"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,8 @@
|
|||||||
"prisma": "^5.13.0",
|
"prisma": "^5.13.0",
|
||||||
"socket.io": "^4.7.5",
|
"socket.io": "^4.7.5",
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
"typescript": "^5.4.5"
|
"typescript": "^5.4.5",
|
||||||
|
"zod": "^3.23.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/bcryptjs": "^2.4.6",
|
"@types/bcryptjs": "^2.4.6",
|
||||||
|
@ -2,14 +2,21 @@ import { Socket, Server } from "socket.io";
|
|||||||
import {TSocket} from "../types/TSocket";
|
import {TSocket} from "../types/TSocket";
|
||||||
import {Character} from "@prisma/client";
|
import {Character} from "@prisma/client";
|
||||||
import CharacterRepository from "../repositories/CharacterRepository";
|
import CharacterRepository from "../repositories/CharacterRepository";
|
||||||
|
import {ZCharacterCreate} from "../types/zod/CharacterCreate";
|
||||||
|
|
||||||
export default function CharacterCreate(socket: TSocket, io: Server) {
|
export default function CharacterCreate(socket: TSocket, io: Server) {
|
||||||
socket.on('character:create', async (data: any) => {
|
socket.on('character:create', async (data: any) => {
|
||||||
let user_id = socket.user?.id as number;
|
// zod validate
|
||||||
|
try {
|
||||||
|
data = ZCharacterCreate.parse(data);
|
||||||
|
|
||||||
|
let user_id = socket.user?.id as number;
|
||||||
let character: Character = await CharacterRepository.create(user_id, data.name) as Character;
|
let character: Character = await CharacterRepository.create(user_id, data.name) as Character;
|
||||||
let characters: Character[] = await CharacterRepository.getByUserId(user_id) 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});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
@ -1,6 +1,7 @@
|
|||||||
import {Character} from "@prisma/client";
|
import {Character} from "@prisma/client";
|
||||||
|
|
||||||
class CharacterService {
|
class CharacterService
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
5
src/app/types/zod/CharacterCreate.ts
Normal file
5
src/app/types/zod/CharacterCreate.ts
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { z } from 'zod';
|
||||||
|
|
||||||
|
export const ZCharacterCreate = z.object({
|
||||||
|
name: z.string().min(3).max(255)
|
||||||
|
});
|
@ -2,7 +2,8 @@ import dotenv from "dotenv";
|
|||||||
|
|
||||||
dotenv.config();
|
dotenv.config();
|
||||||
|
|
||||||
class config {
|
class config
|
||||||
|
{
|
||||||
static ENV: string = process.env.ENV || "prod";
|
static ENV: string = process.env.ENV || "prod";
|
||||||
static PORT: number = process.env.PORT ? parseInt(process.env.PORT) : 5000;
|
static PORT: number = process.env.PORT ? parseInt(process.env.PORT) : 5000;
|
||||||
static JWT_SECRET: string = process.env.JWT_SECRET || "secret";
|
static JWT_SECRET: string = process.env.JWT_SECRET || "secret";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user