Finition de la base de donnée

This commit is contained in:
ETHEVE Fabien
2023-02-06 16:15:11 +01:00
parent c3d6e4423d
commit 7108d33322
10 changed files with 101 additions and 6 deletions
+2 -2
View File
@@ -3,7 +3,7 @@ import { PrismaClient } from "@prisma/client";
import createError from "http-errors" import createError from "http-errors"
import jeux from './route/jeux.js' import jeux from './route/jeux.js'
import groupe from './route/groupe.js'
const app = express() const app = express()
app.use(express.json()) app.use(express.json())
@@ -13,7 +13,7 @@ const port = 3500
app.use('/',jeux) app.use('/',jeux)
app.use('/',groupe)
// run the server // run the server
app.listen(port, () => { app.listen(port, () => {
+9
View File
@@ -0,0 +1,9 @@
import { optional, string, z } from "zod";
const groupeValidation = z.object({
name : z.string(),
logo : z.string(),
});
export default groupeValidation;
View File
+2 -1
View File
@@ -4,7 +4,8 @@ const jeuxValidation = z.object({
Title : z.string(), Title : z.string(),
Description : z.string(), Description : z.string(),
Picture: z.string(), Picture: z.string(),
Worker : z.string() lien : z.string(),
groupe_id : z.number()
}); });
@@ -0,0 +1,8 @@
/*
Warnings:
- Added the required column `url` to the `Jeux` table without a default value. This is not possible if the table is not empty.
*/
-- AlterTable
ALTER TABLE `Jeux` ADD COLUMN `url` VARCHAR(191) NOT NULL;
@@ -0,0 +1,10 @@
/*
Warnings:
- You are about to drop the column `url` on the `Jeux` table. All the data in the column will be lost.
- Added the required column `lien` to the `Jeux` table without a default value. This is not possible if the table is not empty.
*/
-- AlterTable
ALTER TABLE `Jeux` DROP COLUMN `url`,
ADD COLUMN `lien` VARCHAR(191) NOT NULL;
@@ -0,0 +1,22 @@
/*
Warnings:
- You are about to drop the column `Workers` on the `Jeux` table. All the data in the column will be lost.
- Added the required column `groupe_id` to the `Jeux` table without a default value. This is not possible if the table is not empty.
*/
-- AlterTable
ALTER TABLE `Jeux` DROP COLUMN `Workers`,
ADD COLUMN `groupe_id` INTEGER NOT NULL;
-- CreateTable
CREATE TABLE `Groupe` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`name` VARCHAR(191) NOT NULL,
`logo` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- AddForeignKey
ALTER TABLE `Jeux` ADD CONSTRAINT `Jeux_groupe_id_fkey` FOREIGN KEY (`groupe_id`) REFERENCES `Groupe`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
+10 -1
View File
@@ -10,10 +10,19 @@ datasource db {
url = env("DATABASE_URL") url = env("DATABASE_URL")
} }
model Groupe{
id Int @id @default(autoincrement())
name String
logo String @db.VarChar(255)
jeux Jeux []
}
model Jeux{ model Jeux{
id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
Title String Title String
Description String Description String
Picture String @db.VarChar(255) Picture String @db.VarChar(255)
Workers String lien String
groupe_id Int
groupe Groupe @relation(fields: [groupe_id], references: [id])
} }
+27
View File
@@ -0,0 +1,27 @@
import express from "express";
import { PrismaClient } from "@prisma/client";
import createError from "http-errors"
import groupeValidation from "../groupeValidator.js";
const router = express.Router()
const prisma = new PrismaClient();
router.post('/groupe', async(req,res)=>{
let groupData;
groupData = groupeValidation.parse(req.body)
let group = await prisma.groupe.create({
data:{
name : groupData.name,
logo : groupData.logo,
}
})
res.json(group)
})
export default router;
+11 -2
View File
@@ -11,15 +11,24 @@ const prisma = new PrismaClient();
router.post('/jeux',async (req,res,next)=>{ router.post('/jeux',async (req,res,next)=>{
let jeuxData; let jeuxData;
jeuxData = jeuxValidation.parse(req.body) jeuxData = jeuxValidation.parse(req.body)
const jeux = await prisma.jeux.create({ let jeux = await prisma.jeux.create({
data:{ data:{
Title : jeuxData.Title, Title : jeuxData.Title,
Description : jeuxData.Description, Description : jeuxData.Description,
Picture : jeuxData.Picture, Picture : jeuxData.Picture,
Workers : jeuxData.Worker lien : jeuxData.lien,
groupe:{
connect:{
id : jeuxData.groupe_id
} }
}
}
}) })
res.json(jeux) res.json(jeux)
console.log(jeux)
}) })