- 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.
61 lines
1.5 KiB
JavaScript
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
|