Sistem-Pakar-Diagnosa-Penya.../backend/routes/hamaRoutes.js

155 lines
3.9 KiB
JavaScript

const express = require('express');
const router = express.Router();
const hamaController = require('../controller/hamaController');
const uploadHamaGambar = require('../middleware/uploadHamaGambar');
const multer = require('multer');
/**
* @swagger
* tags:
* name: Hama
* description: API untuk mengelola data hama
*/
/**
* @swagger
* /api/hama:
* get:
* summary: Ambil semua data hama
* tags: [Hama]
* responses:
* 200:
* description: Daftar data hama
*/
router.get('/', hamaController.getAllHama);
/**
* @swagger
* /api/hama/{id}:
* get:
* summary: Ambil data hama berdasarkan ID
* tags: [Hama]
* parameters:
* - in: path
* name: id
* required: true
* description: ID hama yang dicari
* responses:
* 200:
* description: Data hama ditemukan
* 404:
* description: Hama tidak ditemukan
*/
router.get('/:id/image', hamaController.getHamaById);
/**
* @swagger
* /api/hama:
* post:
* summary: Tambahkan data hama baru dengan foto
* tags: [Hama]
* requestBody:
* required: true
* content:
* multipart/form-data:
* schema:
* type: object
* properties:
* nama:
* type: string
* description: Nama hama
* deskripsi:
* type: string
* description: Deskripsi tentang hama
* penanganan:
* type: string
* description: Cara penanganan hama
* foto:
* type: string
* format: binary
* description: Foto hama (JPG, JPEG, PNG, GIF)
* nilai_pakar:
* type: number
* format: float
* responses:
* 201:
* description: Hama berhasil ditambahkan
* 400:
* description: Format file tidak valid atau data tidak lengkap
* 500:
* description: Server error
*/
router.post('/', uploadHamaGambar.single('foto'), hamaController.createHama);
/**
* @swagger
* /api/hama/{id}:
* put:
* summary: Perbarui data hama berdasarkan ID
* tags: [Hama]
* parameters:
* - in: path
* name: id
* required: true
* description: ID hama yang akan diperbarui
* requestBody:
* required: true
* content:
* multipart/form-data:
* schema:
* type: object
* properties:
* nama:
* type: string
* deskripsi:
* type: string
* penanganan:
* type: string
* foto:
* type: string
* format: binary
* nilai_pakar:
* type: number
* format: float
* responses:
* 200:
* description: Hama berhasil diperbarui
*/
router.put('/:id', uploadHamaGambar.single('foto'), hamaController.updateHama);
/**
* @swagger
* /api/hama/{id}:
* delete:
* summary: Hapus data hama berdasarkan ID
* tags: [Hama]
* parameters:
* - in: path
* name: id
* required: true
* description: ID hama yang akan dihapus
* responses:
* 200:
* description: Hama berhasil dihapus
*/
router.delete('/:id', hamaController.deleteHama);
// Error handler untuk multer - letakkan SETELAH semua definisi rute
router.use((err, req, res, next) => {
if (err instanceof multer.MulterError) {
return res.status(400).json({
success: false,
message: 'Error saat upload file',
error: err.message
});
} else if (err) {
return res.status(400).json({
success: false,
message: err.message
});
}
next();
});
module.exports = router;