Add order, shipping dock, and transaction routes with CRUD operations and Swagger documentation
- Implemented GET, POST, PUT, and DELETE endpoints for orders, shipping docks, and transactions. - Added Swagger annotations for API documentation. - Included error handling for database operations. - Configured pnpm workspace to ignore built dependencies for sqlite3.
This commit is contained in:
@@ -0,0 +1,257 @@
|
||||
var express = require("express");
|
||||
var router = express.Router();
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/v1/shipping_dock:
|
||||
* get:
|
||||
* summary: Get all shipping docks
|
||||
* tags: [Shipping Dock]
|
||||
* responses:
|
||||
* 200:
|
||||
* description: List of all shipping docks
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* success:
|
||||
* type: boolean
|
||||
* data:
|
||||
* type: array
|
||||
* items:
|
||||
* $ref: '#/components/schemas/ShippingDock'
|
||||
*/
|
||||
// GET all shipping docks
|
||||
router.get("/", async function (req, res, next) {
|
||||
try {
|
||||
const db = req.app.get("db");
|
||||
const shippingDocks = await db.shipping_dock.findAll();
|
||||
res.json({ success: true, data: shippingDocks });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: "Error fetching shipping docks",
|
||||
error: error.message,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/v1/shipping_dock/{id}:
|
||||
* get:
|
||||
* summary: Get one shipping dock by ID
|
||||
* tags: [Shipping Dock]
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: id
|
||||
* required: true
|
||||
* schema:
|
||||
* type: integer
|
||||
* description: Shipping dock ID
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Shipping dock details
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* success:
|
||||
* type: boolean
|
||||
* data:
|
||||
* $ref: '#/components/schemas/ShippingDock'
|
||||
* 404:
|
||||
* description: Shipping dock not found
|
||||
*/
|
||||
// GET one shipping dock by id
|
||||
router.get("/:id", async function (req, res, next) {
|
||||
try {
|
||||
const db = req.app.get("db");
|
||||
const shippingDock = await db.shipping_dock.findByPk(req.params.id);
|
||||
|
||||
if (!shippingDock) {
|
||||
return res
|
||||
.status(404)
|
||||
.json({ success: false, message: "Shipping dock not found" });
|
||||
}
|
||||
|
||||
res.json({ success: true, data: shippingDock });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: "Error fetching shipping dock",
|
||||
error: error.message,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/v1/shipping_dock:
|
||||
* post:
|
||||
* summary: Create a new shipping dock
|
||||
* tags: [Shipping Dock]
|
||||
* requestBody:
|
||||
* required: true
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* required:
|
||||
* - name
|
||||
* properties:
|
||||
* name:
|
||||
* type: string
|
||||
* description: Name of the shipping dock
|
||||
* status:
|
||||
* type: integer
|
||||
* description: Status (1 = active, 0 = inactive)
|
||||
* enum: [0, 1]
|
||||
* default: 1
|
||||
* responses:
|
||||
* 201:
|
||||
* description: Shipping dock created successfully
|
||||
* 400:
|
||||
* description: Bad request - missing required fields
|
||||
*/
|
||||
// POST - Create a new shipping dock
|
||||
router.post("/", async function (req, res, next) {
|
||||
try {
|
||||
const db = req.app.get("db");
|
||||
const { name, status } = req.body;
|
||||
|
||||
if (!name) {
|
||||
return res
|
||||
.status(400)
|
||||
.json({ success: false, message: "Name is required" });
|
||||
}
|
||||
|
||||
const shippingDock = await db.shipping_dock.create({
|
||||
name,
|
||||
status: status !== undefined ? status : 1,
|
||||
});
|
||||
|
||||
res.status(201).json({ success: true, data: shippingDock });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: "Error creating shipping dock",
|
||||
error: error.message,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/v1/shipping_dock/{id}:
|
||||
* put:
|
||||
* summary: Update a shipping dock by ID
|
||||
* tags: [Shipping Dock]
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: id
|
||||
* required: true
|
||||
* schema:
|
||||
* type: integer
|
||||
* description: Shipping dock ID
|
||||
* requestBody:
|
||||
* required: true
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* name:
|
||||
* type: string
|
||||
* status:
|
||||
* type: integer
|
||||
* enum: [0, 1]
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Shipping dock updated successfully
|
||||
* 404:
|
||||
* description: Shipping dock not found
|
||||
*/
|
||||
// PUT - Update a shipping dock by id
|
||||
router.put("/:id", async function (req, res, next) {
|
||||
try {
|
||||
const db = req.app.get("db");
|
||||
const { name, status } = req.body;
|
||||
|
||||
const shippingDock = await db.shipping_dock.findByPk(req.params.id);
|
||||
|
||||
if (!shippingDock) {
|
||||
return res
|
||||
.status(404)
|
||||
.json({ success: false, message: "Shipping dock not found" });
|
||||
}
|
||||
|
||||
await shippingDock.update({
|
||||
name: name !== undefined ? name : shippingDock.name,
|
||||
status: status !== undefined ? status : shippingDock.status,
|
||||
});
|
||||
|
||||
res.json({ success: true, data: shippingDock });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: "Error updating shipping dock",
|
||||
error: error.message,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/v1/shipping_dock/{id}:
|
||||
* delete:
|
||||
* summary: Delete a shipping dock by ID
|
||||
* tags: [Shipping Dock]
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: id
|
||||
* required: true
|
||||
* schema:
|
||||
* type: integer
|
||||
* description: Shipping dock ID
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Shipping dock deleted successfully
|
||||
* 404:
|
||||
* description: Shipping dock not found
|
||||
*/
|
||||
// DELETE - Delete a shipping dock by id
|
||||
router.delete("/:id", async function (req, res, next) {
|
||||
try {
|
||||
const db = req.app.get("db");
|
||||
const shippingDock = await db.shipping_dock.findByPk(req.params.id);
|
||||
|
||||
if (!shippingDock) {
|
||||
return res
|
||||
.status(404)
|
||||
.json({ success: false, message: "Shipping dock not found" });
|
||||
}
|
||||
|
||||
await shippingDock.destroy();
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
message: "Shipping dock deleted successfully",
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: "Error deleting shipping dock",
|
||||
error: error.message,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user