Commit d0a0adcd by Ooh-Ao

projects

parent 757e1cfe
......@@ -4,6 +4,8 @@ const { connectDB } = require('./utils/db');
const userRoutes = require('./routes/userRoutes');
const authRoutes = require('./routes/authRoutes');
const equipmentRoutes = require('./routes/equipmentRoutes');
const projectRoutes = require('./routes/projectRoutes');
const sequelize = require('./config/database'); // instance ของ sequelize
const app = express();
......@@ -17,6 +19,8 @@ app.use(express.json());
app.use('/api/users', userRoutes);
app.use('/api/auth', authRoutes);
app.use('/api/equipments', equipmentRoutes);
app.use('/api/projects', projectRoutes);
......
// controllers/projectController.js
const Project = require('../models/Project');
/**
* สร้างโครงการใหม่ (Create)
*/
exports.createProject = async (req, res) => {
try {
// ข้อมูลที่ต้องการจาก body เช่น: { project_name, project_desc, start_date, end_date }
const { project_name, project_desc, start_date, end_date } = req.body;
const newProject = await Project.create({
project_name,
project_desc,
start_date,
end_date
});
return res.status(201).json({
message: 'Project created successfully',
project: newProject
});
} catch (error) {
console.error(error);
return res.status(500).json({ error: error.message });
}
};
/**
* ดึงข้อมูลโครงการทั้งหมด (Read All)
*/
exports.getAllProjects = async (req, res) => {
try {
const projects = await Project.findAll();
return res.status(200).json(projects);
} catch (error) {
console.error(error);
return res.status(500).json({ error: error.message });
}
};
/**
* ดึงข้อมูลโครงการจาก ID (Read One)
*/
exports.getProjectById = async (req, res) => {
try {
const { id } = req.params;
const project = await Project.findByPk(id);
if (!project) {
return res.status(404).json({ error: 'Project not found' });
}
return res.status(200).json(project);
} catch (error) {
console.error(error);
return res.status(500).json({ error: error.message });
}
};
/**
* อัปเดตข้อมูลโครงการ (Update)
*/
exports.updateProject = async (req, res) => {
try {
const { id } = req.params;
const { project_name, project_desc, start_date, end_date } = req.body;
const [rowsUpdated] = await Project.update(
{
project_name,
project_desc,
start_date,
end_date
},
{
where: { project_id: id },
}
);
if (!rowsUpdated) {
return res.status(404).json({ error: 'Project not found or no changes' });
}
// ค้นหาข้อมูลที่เพิ่งอัปเดตเพื่อส่งกลับ
const updatedProject = await Project.findByPk(id);
return res.status(200).json({
message: 'Project updated successfully',
project: updatedProject
});
} catch (error) {
console.error(error);
return res.status(500).json({ error: error.message });
}
};
/**
* ลบโครงการ (Delete)
*/
exports.deleteProject = async (req, res) => {
try {
const { id } = req.params;
const rowsDeleted = await Project.destroy({ where: { project_id: id } });
if (!rowsDeleted) {
return res.status(404).json({ error: 'Project not found' });
}
return res.status(200).json({ message: 'Project deleted successfully' });
} catch (error) {
console.error(error);
return res.status(500).json({ error: error.message });
}
};
// models/Project.js
const { DataTypes } = require('sequelize');
const sequelize = require('../config/database');
const Project = sequelize.define('Project', {
project_id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4, // สร้าง UUID อัตโนมัติ
primaryKey: true,
},
project_name: {
type: DataTypes.STRING(255),
allowNull: false,
},
project_desc: {
type: DataTypes.TEXT,
allowNull: true,
},
start_date: {
type: DataTypes.DATEONLY, // ถ้าต้องการเฉพาะวัน (YYYY-MM-DD)
allowNull: true,
},
end_date: {
type: DataTypes.DATEONLY,
allowNull: true,
},
created_at: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: DataTypes.NOW,
},
updated_at: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: DataTypes.NOW,
},
}, {
tableName: 'projects',
timestamps: false, // ถ้าไม่ใช้ createdAt, updatedAt แบบอัตโนมัติ
});
module.exports = Project;
// routes/projectRoutes.js
const express = require('express');
const router = express.Router();
const projectController = require('../controllers/projectController');
// สร้างโครงการใหม่
router.post('/', projectController.createProject);
// ดึงข้อมูลโครงการทั้งหมด
router.get('/', projectController.getAllProjects);
// ดึงข้อมูลโครงการโดย ID
router.get('/:id', projectController.getProjectById);
// อัปเดตข้อมูลโครงการ
router.put('/:id', projectController.updateProject);
// ลบโครงการ
router.delete('/:id', projectController.deleteProject);
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