From c48f2f8537058c8e9cc9b41ffa079ef57e7508c6 Mon Sep 17 00:00:00 2001 From: karol Date: Thu, 4 Jun 2026 22:18:15 +0000 Subject: [PATCH] Implementacion CRUD de modelo de bombas de combusstible --- backend/src/app.ts | 4 +- .../modules/fuel_pumps/fuelPump.controller.ts | 63 +++++++++++++++++++ .../modules/fuel_pumps/fuelPump.interface.ts | 8 +++ .../src/modules/fuel_pumps/fuelPump.model.ts | 28 +++++++++ .../src/modules/fuel_pumps/fuelPump.routes.ts | 19 ++++++ .../modules/fuel_pumps/fuelPump.service.ts | 46 ++++++++++++++ 6 files changed, 167 insertions(+), 1 deletion(-) create mode 100644 backend/src/modules/fuel_pumps/fuelPump.controller.ts create mode 100644 backend/src/modules/fuel_pumps/fuelPump.interface.ts create mode 100644 backend/src/modules/fuel_pumps/fuelPump.model.ts create mode 100644 backend/src/modules/fuel_pumps/fuelPump.routes.ts create mode 100644 backend/src/modules/fuel_pumps/fuelPump.service.ts diff --git a/backend/src/app.ts b/backend/src/app.ts index 11caecf..db89af4 100644 --- a/backend/src/app.ts +++ b/backend/src/app.ts @@ -6,6 +6,7 @@ import userRouter from "./modules/user/user.routes"; import authRouter from "./modules/auth/auth.routes"; import fuelRoutes from "./modules/fuel-types/fuelType.routes"; import fuelPriceRoute from "./modules/fuel_prices/fuelPrices.routes"; +import fuelPumpRouter from "./modules/fuel_pumps/fuelPump.routes"; @@ -18,7 +19,8 @@ app.use("/api/roles", roleRouter); app.use("/api/user", userRouter); app.use("/api/fuel", fuelRoutes); app.use("/api/auth", authRouter); -app.use("/api/fuelprice", fuelPriceRoute) +app.use("/api/fuelprice", fuelPriceRoute); +app.use("/api/pump", fuelPumpRouter); app.use(express.urlencoded({ diff --git a/backend/src/modules/fuel_pumps/fuelPump.controller.ts b/backend/src/modules/fuel_pumps/fuelPump.controller.ts new file mode 100644 index 0000000..eacd00a --- /dev/null +++ b/backend/src/modules/fuel_pumps/fuelPump.controller.ts @@ -0,0 +1,63 @@ +import { Request, Response} from "express"; +import { FuelPumpService } from "./fuelPump.service"; + +const fuelPumpService = new FuelPumpService(); + +export class FuelPumpController { + + async getAll( + req:Request, + res:Response + ){ + const fuelPumps = await fuelPumpService.getAll(); + + res.json(fuelPumps); + } + + async getById( + req:Request, + res:Response + ){ + const fuelPump = await fuelPumpService.getById( + req.params.id as string + ); + + res.json(fuelPump) + } + + async create( + req:Request, + res:Response + ){ + const fuelPump = await fuelPumpService.create( + req.body + ); + + res.status(201).json(fuelPump); + } + + async update( + req:Request, + res:Response + ){ + const fuelPump = await fuelPumpService.update( + req.params.id as string, + req.body + ); + + res.json(fuelPump); + } + + async delete( + req:Request, + res:Response + ){ + const fuelPump = await fuelPumpService.delete( + req.params.id as string + ) + + res.json({ + message:"Bomba de combustible eliminada" + }); + } +} \ No newline at end of file diff --git a/backend/src/modules/fuel_pumps/fuelPump.interface.ts b/backend/src/modules/fuel_pumps/fuelPump.interface.ts new file mode 100644 index 0000000..312f6e8 --- /dev/null +++ b/backend/src/modules/fuel_pumps/fuelPump.interface.ts @@ -0,0 +1,8 @@ +import { ObjectId } from "mongoose"; + +export interface IFuelPumps { + + pumpName:string; + fuelTypeId:ObjectId; + active:boolean; +} \ No newline at end of file diff --git a/backend/src/modules/fuel_pumps/fuelPump.model.ts b/backend/src/modules/fuel_pumps/fuelPump.model.ts new file mode 100644 index 0000000..0d40f87 --- /dev/null +++ b/backend/src/modules/fuel_pumps/fuelPump.model.ts @@ -0,0 +1,28 @@ +import mongoose from "mongoose"; + +const fuelPumpSchema = new mongoose.Schema({ + + pumpName:{ + type:String, + required:true, + unique:true + }, + + fuelTypeId:{ + type:mongoose.Types.ObjectId, + ref:"FuelType", + required:true + }, + + active:{ + type:Boolean, + default:true + } + +}, +{ + timestamps:true +} +); + +export default mongoose.model ("FuelPump", fuelPumpSchema); \ No newline at end of file diff --git a/backend/src/modules/fuel_pumps/fuelPump.routes.ts b/backend/src/modules/fuel_pumps/fuelPump.routes.ts new file mode 100644 index 0000000..4185e92 --- /dev/null +++ b/backend/src/modules/fuel_pumps/fuelPump.routes.ts @@ -0,0 +1,19 @@ +import { Router } from "express"; +import { FuelPumpController } from "./fuelPump.controller"; +import { authMiddleware } from "../auth/auth.middleware"; + +const fuelPumpRouter = Router(); + +const controller = new FuelPumpController(); + +fuelPumpRouter.get("/", authMiddleware, controller.getAll); + +fuelPumpRouter.get("/id", authMiddleware, controller.getById); + +fuelPumpRouter.post("/", authMiddleware, controller.create); + +fuelPumpRouter.put("/id", authMiddleware, controller.update); + +fuelPumpRouter.delete("/id", authMiddleware, controller.delete); + +export default fuelPumpRouter; \ No newline at end of file diff --git a/backend/src/modules/fuel_pumps/fuelPump.service.ts b/backend/src/modules/fuel_pumps/fuelPump.service.ts new file mode 100644 index 0000000..04fcc23 --- /dev/null +++ b/backend/src/modules/fuel_pumps/fuelPump.service.ts @@ -0,0 +1,46 @@ +import fuelPumpModel from "./fuelPump.model" + +export class FuelPumpService { + + async getAll() { + return await fuelPumpModel.find(); + } + + async getById( + id:string + ){ + return await fuelPumpModel.findById( + id + ); + } + + async create( + data:any + ){ + return await fuelPumpModel.create( + data + ); + } + + async update( + id:string, + data:any + ){ + return await fuelPumpModel.findByIdAndUpdate( + id, + data, + { + new:true + } + ); + } + + async delete( + id:string + ){ + return await fuelPumpModel.findByIdAndDelete( + id + ); + } +} +