Actualización CRUD, módulo Usuarios

This commit is contained in:
2026-07-02 17:18:59 +00:00
parent cd08dd082e
commit 7aaf12a6d0
5 changed files with 105 additions and 35 deletions

View File

@ -1,5 +1,4 @@
import { Request, Response } from "express";
import { UserService } from "./user.service";
const userService = new UserService();
@ -10,57 +9,116 @@ export class UserController {
req:Request,
res:Response
) {
const users =
await userService.getAll();
try {
const users = await userService.getAll();
res.json(users);
}catch(error){
res.status(500).json({
message:"Error al obtener usuarios",
error
});
}
}
async getById(
req:Request,
res:Response
){
const user =
await userService.getById(
try {
const user = await userService.getById(
req.params.id as string
);
if (!user) {
return res.status(404).json({
message: "Usuario no encontrado"
});
}
res.json(user);
} catch(error) {
res.status(500).json({
message:"Error al obtener usuarios",
error
});
}
}
async create (
req:Request,
res:Response
) {
const user =
await userService.create(
req.body
);
res.status(201).json(user);
try {
const user =
await userService.create(
req.body
);
res.status(201).json(user);
}catch(error){
res.status(500).json({
message:"Error al crear usuario",
error
});
}
}
async update(
req:Request,
res:Response
){
const user =
await userService.update(
req.params.id as string,
req.body
);
try{
const user =
await userService.update(
req.params.id as string,
req.body
);
res.json(user);
if(!user){
return res.status(404).json({
message:"Usuario no encontrado"
});
}
res.status(200).json(user);
}catch(error){
res.status(500).json({
message:"Error al actualizar usuario",
error
})
}
}
async detele (
async delete (
req:Request,
res:Response
) {
await userService.delete(
req.params.id as string
);
res.json({message: "Usuario eliminado"});
try{
const user = await userService.delete(
req.params.id as string
);
if (!user){
return res.status(404).json({
message:"Usuario no encontrado"
});
}
res.json({
message: "Usuario eliminado"});
}catch(error){
res.status(500).json({
message:"Error al eliminar usuario",
error
});
}
}
}

View File

@ -1,11 +1,16 @@
import { ObjectId } from "mongoose";
import { Types } from "mongoose";
export interface IUser {
employeeId:number;
userName:string;
passwordHash:string;
roleId:ObjectId;
active:boolean;
lastLogin:Date;
employeeId: number;
userName: string;
passwordHash: string;
roleId: Types.ObjectId;
active: boolean;
lastLogin?: Date;
}

View File

@ -21,7 +21,7 @@ const userSchema = new mongoose.Schema({
},
roleId:{
type:mongoose.Types.ObjectId,
type:mongoose.Schema.Types.ObjectId,
ref:"Role",
required:true
},

View File

@ -11,10 +11,10 @@ userRouter.get("/", authMiddleware, controller.getAll);
userRouter.get("/:id", authMiddleware, controller.getById);
userRouter.post("/", authMiddleware, controller.create);
userRouter.post("/", controller.create);
userRouter.put("/:id", controller.update);
userRouter.put("/:id", authMiddleware, controller.update);
userRouter.delete("/:id", controller.detele);
userRouter.delete("/:id", authMiddleware, controller.delete);
export default userRouter;

View File

@ -1,5 +1,6 @@
import bcrypt from "bcrypt";
import userModel from "./user.model";
import { IUser } from "./user.interface";
export class UserService {
@ -14,12 +15,12 @@ export class UserService {
id:string
) {
return await userModel
.find()
.findById(id)
.populate("roleId");
}
async create(
data:any
data:IUser
) {
const passwordHash = await bcrypt.hash(
data.passwordHash,
@ -33,8 +34,14 @@ export class UserService {
async update(
id:string,
data:any
data:Partial<IUser>
) {
if(data.passwordHash){
data.passwordHash = await bcrypt.hash(
data.passwordHash,
10
);
}
return await userModel.findByIdAndUpdate(
id,
data,