CG-Feedback-Monitor/server/db/queries/meetingCategoryRatings.ts
Lars 234f87d408 V2-Dev-Stand: Skala 1-10, Benefits/Concerns, DEV-Isolation und Gitea-Doku.
Bündelt die Neuentwicklung in AssigmentMonitorV2 (eigene Ports/DB), die Umstellung auf numerische Bewertungen, Meeting-Checklisten, KI-Tagging und die geplante Feedback-Kaskade — als Basis für Versionsverwaltung in Gitea.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-08 17:35:05 +02:00

48 lines
1.6 KiB
TypeScript

import {
deleteRowsWhereEquals,
getAllRows,
getRowsWhereEquals,
getRowsWhereIn,
insertRow,
updateRow,
} from '../crud'
import type { MeetingCategoryRating, RatingScore } from '../../../src/db/types'
export const listMeetingCategoryRatingsForMeeting = (meetingInstanceId: number): MeetingCategoryRating[] =>
getRowsWhereEquals<MeetingCategoryRating>('meetingCategoryRatings', 'meetingInstanceId', meetingInstanceId)
export const listMeetingCategoryRatingsForMeetings = (meetingInstanceIds: number[]): MeetingCategoryRating[] =>
getRowsWhereIn<MeetingCategoryRating>('meetingCategoryRatings', 'meetingInstanceId', meetingInstanceIds)
export function upsertMeetingCategoryRating(input: {
meetingInstanceId: number
instituteeId: number
categoryId: number
score: RatingScore | null
note?: string
}): number {
const existing = getAllRows<MeetingCategoryRating>('meetingCategoryRatings').find(r =>
r.meetingInstanceId === input.meetingInstanceId &&
r.instituteeId === input.instituteeId &&
r.categoryId === input.categoryId,
)
if (existing?.id != null) {
updateRow('meetingCategoryRatings', existing.id, {
score: input.score,
note: input.note ?? existing.note ?? '',
})
return existing.id
}
return insertRow('meetingCategoryRatings', {
meetingInstanceId: input.meetingInstanceId,
instituteeId: input.instituteeId,
categoryId: input.categoryId,
score: input.score,
note: input.note ?? '',
})
}
export const deleteMeetingCategoryRatingsForMeeting = (meetingInstanceId: number): void => {
deleteRowsWhereEquals('meetingCategoryRatings', 'meetingInstanceId', meetingInstanceId)
}