Files
vps-tracker/server/routes/projects.js
T
Denozordec 9d5b434bea Add project management features and enhance database schema
- Introduced a new `server_projects` table to manage project details.
- Updated the `vps` table to include a foreign key reference to `server_projects`.
- Enhanced the API to support project-related data retrieval and manipulation.
- Implemented project filtering in the Reports and VPS pages.
- Added project selection functionality in the UI for better resource management.
- Improved data seeding and migration scripts to accommodate new project structure.
2026-03-20 22:50:57 +07:00

61 lines
1.5 KiB
JavaScript

import { Router } from 'express'
import { getDb } from '../db.js'
import {
normalizeProjectNameInput,
projectSuggestions,
resolveOrCreateProject,
} from '../projects-service.js'
const router = Router()
router.get('/', (req, res) => {
try {
const db = getDb()
const rows = db
.prepare('SELECT id, name, color, sortOrder, notes, createdAt FROM server_projects ORDER BY name')
.all()
res.json(rows)
} catch (err) {
res.status(500).json({ error: err.message })
}
})
router.get('/suggest', (req, res) => {
try {
const db = getDb()
const q = req.query.q ?? ''
const limit = req.query.limit != null ? Number(req.query.limit) : 20
const rows = projectSuggestions(db, q, limit)
res.json(rows)
} catch (err) {
res.status(500).json({ error: err.message })
}
})
router.post('/resolve-or-create', (req, res) => {
try {
const db = getDb()
const name = req.body?.name
const resolved = resolveOrCreateProject(db, name)
res.json(resolved)
} catch (err) {
res.status(500).json({ error: err.message })
}
})
router.post('/', (req, res) => {
try {
const db = getDb()
const name = normalizeProjectNameInput(req.body?.name)
if (!name) {
return res.status(400).json({ error: 'name is required' })
}
const resolved = resolveOrCreateProject(db, name)
res.status(201).json(resolved)
} catch (err) {
res.status(500).json({ error: err.message })
}
})
export default router