cash_tracker/server/routes/categories.js
2025-08-28 23:04:25 +03:00

99 lines
2.4 KiB
JavaScript

const express = require('express');
const router = express.Router();
const db = require('../database');
// Get all categories
router.get('/', (req, res) => {
db.all('SELECT * FROM categories ORDER BY name', (err, rows) => {
if (err) {
console.error(err);
res.status(500).json({ error: 'Database error' });
} else {
res.json(rows);
}
});
});
// Get category by ID
router.get('/:id', (req, res) => {
const { id } = req.params;
db.get('SELECT * FROM categories WHERE id = ?', [id], (err, row) => {
if (err) {
console.error(err);
res.status(500).json({ error: 'Database error' });
} else if (!row) {
res.status(404).json({ error: 'Category not found' });
} else {
res.json(row);
}
});
});
// Create new category
router.post('/', (req, res) => {
const { name, description } = req.body;
if (!name) {
return res.status(400).json({ error: 'Name is required' });
}
db.run(
'INSERT INTO categories (name, description) VALUES (?, ?)',
[name, description],
function(err) {
if (err) {
console.error(err);
res.status(500).json({ error: 'Database error' });
} else {
res.status(201).json({
id: this.lastID,
name,
description
});
}
}
);
});
// Update category
router.put('/:id', (req, res) => {
const { id } = req.params;
const { name, description } = req.body;
if (!name) {
return res.status(400).json({ error: 'Name is required' });
}
db.run(
'UPDATE categories SET name = ?, description = ? WHERE id = ?',
[name, description, id],
function(err) {
if (err) {
console.error(err);
res.status(500).json({ error: 'Database error' });
} else if (this.changes === 0) {
res.status(404).json({ error: 'Category not found' });
} else {
res.json({ id: parseInt(id), name, description });
}
}
);
});
// Delete category
router.delete('/:id', (req, res) => {
const { id } = req.params;
db.run('DELETE FROM categories WHERE id = ?', [id], function(err) {
if (err) {
console.error(err);
res.status(500).json({ error: 'Database error' });
} else if (this.changes === 0) {
res.status(404).json({ error: 'Category not found' });
} else {
res.json({ message: 'Category deleted successfully' });
}
});
});
module.exports = router;