rework internal order system

This commit is contained in:
Matthias Hochmeister
2026-03-24 09:58:33 +01:00
parent 209d5a676e
commit 0389c3d2aa
2 changed files with 17 additions and 4 deletions

View File

@@ -0,0 +1,13 @@
-- Migration 049: Add parent_id to categories for subcategory support
-- (048 already created the table without parent_id)
ALTER TABLE ausruestung_kategorien_katalog
ADD COLUMN IF NOT EXISTS parent_id INT REFERENCES ausruestung_kategorien_katalog(id) ON DELETE CASCADE;
-- Unique: top-level categories by name
CREATE UNIQUE INDEX IF NOT EXISTS ausruestung_kat_top_unique
ON ausruestung_kategorien_katalog (name) WHERE parent_id IS NULL;
-- Unique: subcategories by (parent_id, name)
CREATE UNIQUE INDEX IF NOT EXISTS ausruestung_kat_child_unique
ON ausruestung_kategorien_katalog (parent_id, name) WHERE parent_id IS NOT NULL;

View File

@@ -286,8 +286,8 @@ async function getRequests(filters?: { status?: string; anfrager_id?: string })
const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : ''; const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
const result = await pool.query( const result = await pool.query(
`SELECT a.*, `SELECT a.*,
u.vorname || ' ' || u.nachname AS anfrager_name, u.display_name AS anfrager_name,
u2.vorname || ' ' || u2.nachname AS bearbeitet_von_name, u2.display_name AS bearbeitet_von_name,
(SELECT COUNT(*)::int FROM ausruestung_anfrage_positionen p WHERE p.anfrage_id = a.id) AS positionen_count (SELECT COUNT(*)::int FROM ausruestung_anfrage_positionen p WHERE p.anfrage_id = a.id) AS positionen_count
FROM ausruestung_anfragen a FROM ausruestung_anfragen a
LEFT JOIN users u ON u.id = a.anfrager_id LEFT JOIN users u ON u.id = a.anfrager_id
@@ -314,8 +314,8 @@ async function getMyRequests(userId: string) {
async function getRequestById(id: number) { async function getRequestById(id: number) {
const reqResult = await pool.query( const reqResult = await pool.query(
`SELECT a.*, `SELECT a.*,
u.vorname || ' ' || u.nachname AS anfrager_name, u.display_name AS anfrager_name,
u2.vorname || ' ' || u2.nachname AS bearbeitet_von_name u2.display_name AS bearbeitet_von_name
FROM ausruestung_anfragen a FROM ausruestung_anfragen a
LEFT JOIN users u ON u.id = a.anfrager_id LEFT JOIN users u ON u.id = a.anfrager_id
LEFT JOIN users u2 ON u2.id = a.bearbeitet_von LEFT JOIN users u2 ON u2.id = a.bearbeitet_von