diff --git a/docker-compose.yml b/docker-compose.yml index 3dd627c..ec2af66 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,13 +14,6 @@ services: volumes: - pgdata:/data/postgres network_mode: host - app: - build: . - container_name: xtasks - ports: - - 2000:2000 - volumes: - - .:/usr/app volumes: pgdata: diff --git a/src/controllers/MilistoneController.ts b/src/controllers/MilistoneController.ts index 1721d7d..723f261 100644 --- a/src/controllers/MilistoneController.ts +++ b/src/controllers/MilistoneController.ts @@ -12,4 +12,24 @@ export class MilistoneController return res.status(500).json({message:"Error fetching milistones",error}) } } + static async create(req:Request, res:Response):Promise + { + const {title,date,user_id} = req.body; + + if (!title || !date || !user_id) { + return res.status(400).json({ message: "Missing required fields" }); + } + + try { + const milistone = MilistoneRepository.create({ + title, + date, + user_id, + }); + const milistoneSave = await MilistoneRepository.save(milistone); + return res.status(201).json(milistoneSave); + } catch (error) { + return res.status(500).json({ message: "Error saving milistone", error }); + } + } } \ No newline at end of file diff --git a/src/controllers/UserController.ts b/src/controllers/UserController.ts new file mode 100644 index 0000000..134367f --- /dev/null +++ b/src/controllers/UserController.ts @@ -0,0 +1,25 @@ +import { Request, Response } from "express"; +import { UserRepository } from "../repositories/UserRepository"; + +export class UserController { + static async create(req: Request, res: Response): Promise { + const { name, email, password } = req.body; + + if (!name || !email || !password) { + return res.status(400).json({ message: "Missing required fields" }); + } + + const userAlreadyExists = await UserRepository.findOne({where: {email}}); + + if(userAlreadyExists) + throw new Error('Email address already used!'); + + try { + const user = UserRepository.create({name,email,password}); + const userSave = await UserRepository.save(user); + return res.status(201).json(userSave); + } catch (error) { + return res.status(500).json({ message: "Error saving user", error }); + } + } +} diff --git a/src/repositories/UserRepository.ts b/src/repositories/UserRepository.ts new file mode 100644 index 0000000..e8f61e9 --- /dev/null +++ b/src/repositories/UserRepository.ts @@ -0,0 +1,5 @@ +import { Repository } from "typeorm"; +import { User } from "../models/User"; +import { AppDataSource } from "../database"; + +export const UserRepository: Repository = AppDataSource.getRepository(User); \ No newline at end of file diff --git a/src/routes/index.ts b/src/routes/index.ts index af82514..1a41447 100644 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -1,8 +1,9 @@ import { Router } from "express"; import { milistoneRouter } from "./milistone.routes"; +import { usersRouter } from "./user.routes"; const router = Router(); router.use('/milistones',milistoneRouter); - +router.use("/users", usersRouter); export {router} \ No newline at end of file diff --git a/src/routes/milistone.routes.ts b/src/routes/milistone.routes.ts index 747bc40..d3a04f5 100644 --- a/src/routes/milistone.routes.ts +++ b/src/routes/milistone.routes.ts @@ -5,5 +5,6 @@ const milistoneRouter = Router(); milistoneRouter.get("/", MilistoneController.getAll) +milistoneRouter.post("/", MilistoneController.create); export{milistoneRouter}; \ No newline at end of file diff --git a/src/routes/user.routes.ts b/src/routes/user.routes.ts new file mode 100644 index 0000000..11385f5 --- /dev/null +++ b/src/routes/user.routes.ts @@ -0,0 +1,8 @@ +import { Router } from "express"; +import { UserController } from "../controllers/UserController"; + +const usersRouter = Router(); + +usersRouter.post("/", UserController.create); + +export { usersRouter }; diff --git a/src/server.ts b/src/server.ts index dcad80c..1c2b5a8 100644 --- a/src/server.ts +++ b/src/server.ts @@ -2,8 +2,8 @@ import express from "express"; import { router } from "./routes"; import { AppDataSource } from "./database"; - const app = express(); +app.use(express.json()); app.use(router); AppDataSource.initialize() @@ -13,4 +13,4 @@ AppDataSource.initialize() }) .catch((err) => { console.error("Error during Data Source initialization", err); - }); \ No newline at end of file + }); diff --git a/src/services/CreateMilistoneService.ts b/src/services/CreateMilistoneService.ts deleted file mode 100644 index 1cdb6c7..0000000 --- a/src/services/CreateMilistoneService.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Repository } from "typeorm"; -import Milistone from "../models/Milistone"; - -interface CreateMilistoneDTO { - title: string; - dueDate: Date; -} - -export class CreateMilestoneService { - private milestoneRepository: Repository; - - constructor(milestoneRepository: Repository) { - this.milestoneRepository = milestoneRepository; - } - - async execute({ title, dueDate }: CreateMilistoneDTO): Promise { - // Validações - if (!title) { - throw new Error("Title is required."); - } - - if (!dueDate) { - throw new Error("Due date is required."); - } - - // Criação do objeto de milestone - const milestone = this.milestoneRepository.create({ - title, - dueDate - }); - - // Salva no banco de dados - await this.milestoneRepository.save(milestone); - - return milestone; - } -} - -export default CreateMilestoneService; \ No newline at end of file