This commit is contained in:
Matthias Hochmeister
2026-03-13 21:49:42 +01:00
parent e666ff434e
commit ef9d2ff4a2
6 changed files with 276 additions and 0 deletions

View File

@@ -626,6 +626,63 @@ class MemberService {
throw new Error('Failed to fetch member stats');
}
}
/**
* Returns all Beförderungen for a member, newest first.
*/
async getBefoerderungen(userId: string): Promise<any[]> {
try {
const result = await pool.query(
`SELECT id, datum, dienstgrad, created_at
FROM befoerderungen
WHERE user_id = $1
ORDER BY datum DESC NULLS LAST, created_at DESC`,
[userId]
);
return result.rows;
} catch (error) {
logger.error('Error fetching Beförderungen', { error, userId });
return [];
}
}
/**
* Returns all Untersuchungen for a member, newest first.
*/
async getUntersuchungen(userId: string): Promise<any[]> {
try {
const result = await pool.query(
`SELECT id, datum, anmerkungen, art, ergebnis, created_at
FROM untersuchungen
WHERE user_id = $1
ORDER BY datum DESC NULLS LAST, created_at DESC`,
[userId]
);
return result.rows;
} catch (error) {
logger.error('Error fetching Untersuchungen', { error, userId });
return [];
}
}
/**
* Returns all Fahrgenehmigungen for a member, newest first.
*/
async getFahrgenehmigungen(userId: string): Promise<any[]> {
try {
const result = await pool.query(
`SELECT id, ausstellungsdatum, gueltig_bis, behoerde, nummer, klasse, created_at
FROM fahrgenehmigungen
WHERE user_id = $1
ORDER BY ausstellungsdatum DESC NULLS LAST, created_at DESC`,
[userId]
);
return result.rows;
} catch (error) {
logger.error('Error fetching Fahrgenehmigungen', { error, userId });
return [];
}
}
}
export default new MemberService();