Commit 5764e416 by Ooh-Ao

projectMember

parent d0a0adcd
......@@ -5,7 +5,7 @@ const userRoutes = require('./routes/userRoutes');
const authRoutes = require('./routes/authRoutes');
const equipmentRoutes = require('./routes/equipmentRoutes');
const projectRoutes = require('./routes/projectRoutes');
const projectMemberRoutes = require('./routes/projectMemberRoutes');
const sequelize = require('./config/database'); // instance ของ sequelize
const app = express();
......@@ -20,7 +20,7 @@ app.use('/api/users', userRoutes);
app.use('/api/auth', authRoutes);
app.use('/api/equipments', equipmentRoutes);
app.use('/api/projects', projectRoutes);
app.use('/api/project-members', projectMemberRoutes);
......
// controllers/projectMemberController.js
const ProjectMember = require('../models/ProjectMember');
/**
* สร้างความสัมพันธ์ (Create)
*/
exports.createProjectMember = async (req, res) => {
try {
// ข้อมูลจาก client เช่น { user_id, project_id, role_in_project }
const { user_id, project_id, role_in_project } = req.body;
const newPM = await ProjectMember.create({
user_id,
project_id,
role_in_project
});
return res.status(201).json({
message: 'ProjectMember created successfully',
projectMember: newPM
});
} catch (error) {
console.error(error);
return res.status(500).json({ error: error.message });
}
};
/**
* ดึงข้อมูลสมาชิกโครงการทั้งหมด (Read All)
*/
exports.getAllProjectMembers = async (req, res) => {
try {
const pms = await ProjectMember.findAll();
return res.status(200).json(pms);
} catch (error) {
console.error(error);
return res.status(500).json({ error: error.message });
}
};
/**
* ดึงข้อมูลสมาชิกโครงการตาม id (Read One)
*/
exports.getProjectMemberById = async (req, res) => {
try {
const { id } = req.params; // pm_id
const pm = await ProjectMember.findByPk(id);
if (!pm) {
return res.status(404).json({ error: 'ProjectMember not found' });
}
return res.status(200).json(pm);
} catch (error) {
console.error(error);
return res.status(500).json({ error: error.message });
}
};
/**
* อัปเดตข้อมูลสมาชิกโครงการ (Update)
*/
exports.updateProjectMember = async (req, res) => {
try {
const { id } = req.params;
const { user_id, project_id, role_in_project } = req.body;
const [rowsUpdated] = await ProjectMember.update({
user_id,
project_id,
role_in_project
}, {
where: { pm_id: id },
});
if (!rowsUpdated) {
return res.status(404).json({ error: 'ProjectMember not found or no changes' });
}
// ดึงข้อมูลใหม่หลังอัปเดต
const updatedPM = await ProjectMember.findByPk(id);
return res.status(200).json({
message: 'ProjectMember updated successfully',
projectMember: updatedPM
});
} catch (error) {
console.error(error);
return res.status(500).json({ error: error.message });
}
};
/**
* ลบสมาชิกโครงการ (Delete)
*/
exports.deleteProjectMember = async (req, res) => {
try {
const { id } = req.params;
const rowsDeleted = await ProjectMember.destroy({ where: { pm_id: id } });
if (!rowsDeleted) {
return res.status(404).json({ error: 'ProjectMember not found' });
}
return res.status(200).json({ message: 'ProjectMember deleted successfully' });
} catch (error) {
console.error(error);
return res.status(500).json({ error: error.message });
}
};
// models/ProjectMember.js
const { DataTypes } = require('sequelize');
const sequelize = require('../config/database');
const ProjectMember = sequelize.define('ProjectMember', {
pm_id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4, // สร้าง UUID อัตโนมัติ
primaryKey: true,
},
user_id: {
type: DataTypes.UUID,
allowNull: false,
// ถ้าต้องการกำหนด constraint ให้ DB รู้ว่าคอลัมน์นี้อ้างอิงตาราง users:
// references: {
// model: 'users',
// key: 'user_id',
// },
},
project_id: {
type: DataTypes.UUID,
allowNull: false,
// references: {
// model: 'projects',
// key: 'project_id',
// },
},
role_in_project: {
type: DataTypes.STRING(100),
allowNull: true,
},
created_at: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: DataTypes.NOW,
},
updated_at: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: DataTypes.NOW,
},
}, {
tableName: 'project_members',
timestamps: false, // ถ้าไม่ต้องการให้ Sequelize จัดการ createdAt/updatedAt ให้อัตโนมัติ
});
module.exports = ProjectMember;
// routes/projectMemberRoutes.js
const express = require('express');
const router = express.Router();
const pmController = require('../controllers/projectMemberController');
// สร้างข้อมูลสมาชิกโครงการ
router.post('/', pmController.createProjectMember);
// ดึงข้อมูลสมาชิกโครงการทั้งหมด
router.get('/', pmController.getAllProjectMembers);
// ดึงข้อมูลสมาชิกโครงการจาก pm_id
router.get('/:id', pmController.getProjectMemberById);
// อัปเดตข้อมูลสมาชิกโครงการ
router.put('/:id', pmController.updateProjectMember);
// ลบข้อมูลสมาชิกโครงการ
router.delete('/:id', pmController.deleteProjectMember);
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