import { getAllRows, getRowById, getRowsWhereEquals, insertRow, updateRow, deleteRowById } from '../crud' import type { FeedbackDraft, AssignmentFeedback, FeedbackCategoryRating, FeedbackDimensionText, FeedbackCategoryText, } from '../../../src/db/types' export const getFeedbackDraft = (assignmentId: number, instituteeId: number): FeedbackDraft | undefined => getRowsWhereEquals('feedbackDrafts', 'assignmentId', assignmentId).find(d => d.instituteeId === instituteeId) export const addFeedbackDraft = (d: Omit): number => insertRow('feedbackDrafts', d) export const updateFeedbackDraft = (id: number, patch: Partial): number => updateRow('feedbackDrafts', id, patch) export const getAssignmentFeedback = (assignmentId: number, instituteeId: number): AssignmentFeedback | undefined => getRowsWhereEquals('assignmentFeedbacks', 'assignmentId', assignmentId).find(f => f.instituteeId === instituteeId) /** Für die Auswertungsübersicht: Feedback-Status (Entwurf/Final) aller Assignments auf einen Schlag, statt N+1-Abfragen pro Zeile. */ export const listAssignmentFeedbacksAll = (): AssignmentFeedback[] => getAllRows('assignmentFeedbacks') export const getAssignmentFeedbackById = (id: number): AssignmentFeedback | undefined => getRowById('assignmentFeedbacks', id) export const addAssignmentFeedback = (f: Omit): number => insertRow('assignmentFeedbacks', f) export const updateAssignmentFeedback = (id: number, patch: Partial): number => updateRow('assignmentFeedbacks', id, patch) export function getOrCreateAssignmentFeedback(assignmentId: number, instituteeId: number): AssignmentFeedback | undefined { let fb = getAssignmentFeedback(assignmentId, instituteeId) if (!fb) { const fbId = addAssignmentFeedback({ assignmentId, instituteeId, status: 'draft', aiModel: '', updatedAt: new Date().toISOString(), }) fb = getAssignmentFeedbackById(fbId) } return fb } export const listFeedbackCategoryRatings = (assignmentFeedbackId: number): FeedbackCategoryRating[] => getRowsWhereEquals('feedbackCategoryRatings', 'assignmentFeedbackId', assignmentFeedbackId) export const addFeedbackCategoryRating = (r: Omit): number => insertRow('feedbackCategoryRatings', r) export const updateFeedbackCategoryRating = (id: number, patch: Partial): number => updateRow('feedbackCategoryRatings', id, patch) export const deleteFeedbackCategoryRating = (id: number): void => { deleteRowById('feedbackCategoryRatings', id) } export const listFeedbackDimensionTexts = (assignmentFeedbackId: number): FeedbackDimensionText[] => getRowsWhereEquals('feedbackDimensionTexts', 'assignmentFeedbackId', assignmentFeedbackId) export const getFeedbackDimensionText = ( assignmentFeedbackId: number, feedbackDimensionId: number, ): FeedbackDimensionText | undefined => getRowsWhereEquals('feedbackDimensionTexts', 'assignmentFeedbackId', assignmentFeedbackId) .find(t => t.feedbackDimensionId === feedbackDimensionId) export const addFeedbackDimensionText = (t: Omit): number => insertRow('feedbackDimensionTexts', t) export const updateFeedbackDimensionText = (id: number, patch: Partial): number => updateRow('feedbackDimensionTexts', id, patch) export const listFeedbackCategoryTexts = (assignmentFeedbackId: number): FeedbackCategoryText[] => getRowsWhereEquals('feedbackCategoryTexts', 'assignmentFeedbackId', assignmentFeedbackId) export const getFeedbackCategoryText = ( assignmentFeedbackId: number, feedbackCategoryId: number, ): FeedbackCategoryText | undefined => getRowsWhereEquals('feedbackCategoryTexts', 'assignmentFeedbackId', assignmentFeedbackId) .find(t => t.feedbackCategoryId === feedbackCategoryId) export const addFeedbackCategoryText = (t: Omit): number => insertRow('feedbackCategoryTexts', t) export const updateFeedbackCategoryText = (id: number, patch: Partial): number => updateRow('feedbackCategoryTexts', id, patch)