Commit 772f8e8b by Ooh-Ao

projectequirement

parent 5764e416
......@@ -6,6 +6,8 @@ const authRoutes = require('./routes/authRoutes');
const equipmentRoutes = require('./routes/equipmentRoutes');
const projectRoutes = require('./routes/projectRoutes');
const projectMemberRoutes = require('./routes/projectMemberRoutes');
const projectEquipmentRoutes = require('./routes/projectEquipmentRoutes');
const sequelize = require('./config/database'); // instance ของ sequelize
const app = express();
......@@ -21,6 +23,7 @@ app.use('/api/auth', authRoutes);
app.use('/api/equipments', equipmentRoutes);
app.use('/api/projects', projectRoutes);
app.use('/api/project-members', projectMemberRoutes);
app.use('/api/project-equipments', projectEquipmentRoutes);
......
// controllers/projectEquipmentController.js
const ProjectEquipment = require('../models/ProjectEquipment');
/**
* สร้างข้อมูล ProjectEquipment ใหม่ (Create)
*/
exports.createProjectEquipment = async (req, res) => {
try {
// ข้อมูลจาก body เช่น { project_id, equipment_id, quantity_in_project }
const { project_id, equipment_id, quantity_in_project } = req.body;
const newPE = await ProjectEquipment.create({
project_id,
equipment_id,
quantity_in_project
});
return res.status(201).json({
message: 'ProjectEquipment created successfully',
projectEquipment: newPE
});
} catch (error) {
console.error(error);
return res.status(500).json({ error: error.message });
}
};
/**
* ดึงข้อมูล ProjectEquipments ทั้งหมด (Read All)
*/
exports.getAllProjectEquipments = async (req, res) => {
try {
const pes = await ProjectEquipment.findAll();
return res.status(200).json(pes);
} catch (error) {
console.error(error);
return res.status(500).json({ error: error.message });
}
};
/**
* ดึงข้อมูล ProjectEquipment ตาม pe_id (Read One)
*/
exports.getProjectEquipmentById = async (req, res) => {
try {
const { id } = req.params; // pe_id
const pe = await ProjectEquipment.findByPk(id);
if (!pe) {
return res.status(404).json({ error: 'ProjectEquipment not found' });
}
return res.status(200).json(pe);
} catch (error) {
console.error(error);
return res.status(500).json({ error: error.message });
}
};
/**
* อัปเดตข้อมูล ProjectEquipment (Update)
*/
exports.updateProjectEquipment = async (req, res) => {
try {
const { id } = req.params;
const { project_id, equipment_id, quantity_in_project } = req.body;
const [rowsUpdated] = await ProjectEquipment.update(
{ project_id, equipment_id, quantity_in_project },
{ where: { pe_id: id } }
);
if (!rowsUpdated) {
return res.status(404).json({ error: 'ProjectEquipment not found or no changes' });
}
// ดึงข้อมูลใหม่หลังอัปเดต
const updatedPE = await ProjectEquipment.findByPk(id);
return res.status(200).json({
message: 'ProjectEquipment updated successfully',
projectEquipment: updatedPE
});
} catch (error) {
console.error(error);
return res.status(500).json({ error: error.message });
}
};
/**
* ลบข้อมูล ProjectEquipment (Delete)
*/
exports.deleteProjectEquipment = async (req, res) => {
try {
const { id } = req.params;
const rowsDeleted = await ProjectEquipment.destroy({ where: { pe_id: id } });
if (!rowsDeleted) {
return res.status(404).json({ error: 'ProjectEquipment not found' });
}
return res.status(200).json({ message: 'ProjectEquipment deleted successfully' });
} catch (error) {
console.error(error);
return res.status(500).json({ error: error.message });
}
};
// models/ProjectEquipment.js
const { DataTypes } = require('sequelize');
const sequelize = require('../config/database');
const ProjectEquipment = sequelize.define('ProjectEquipment', {
pe_id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4, // สร้าง UUID อัตโนมัติ
primaryKey: true,
},
project_id: {
type: DataTypes.UUID,
allowNull: false,
// references: {
// model: 'projects',
// key: 'project_id'
// },
},
equipment_id: {
type: DataTypes.UUID,
allowNull: false,
// references: {
// model: 'equipments',
// key: 'equipment_id'
// },
},
quantity_in_project: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 0,
},
created_at: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: DataTypes.NOW,
},
updated_at: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: DataTypes.NOW,
},
}, {
tableName: 'project_equipments',
timestamps: false, // ถ้าไม่ต้องการให้ Sequelize จัดการ createdAt, updatedAt ให้เอง
});
module.exports = ProjectEquipment;
// routes/projectEquipmentRoutes.js
const express = require('express');
const router = express.Router();
const peController = require('../controllers/projectEquipmentController');
// สร้างข้อมูลใหม่ (Create)
router.post('/', peController.createProjectEquipment);
// ดึงข้อมูลทั้งหมด (Read All)
router.get('/', peController.getAllProjectEquipments);
// ดึงข้อมูลตาม pe_id (Read One)
router.get('/:id', peController.getProjectEquipmentById);
// อัปเดตข้อมูล (Update)
router.put('/:id', peController.updateProjectEquipment);
// ลบข้อมูล (Delete)
router.delete('/:id', peController.deleteProjectEquipment);
module.exports = router;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment