45 lines
3.0 KiB
TypeScript
45 lines
3.0 KiB
TypeScript
import { getRowById, getRowsWhereEquals, insertRow, updateRow } from '../crud'
|
|
import type { FeedbackDraft, AssignmentFeedback, FeedbackCategoryRating, FeedbackDimensionText } from '../../../src/db/types'
|
|
|
|
export const getFeedbackDraft = (assignmentId: number, instituteeId: number): FeedbackDraft | undefined =>
|
|
getRowsWhereEquals<FeedbackDraft>('feedbackDrafts', 'assignmentId', assignmentId).find(d => d.instituteeId === instituteeId)
|
|
export const addFeedbackDraft = (d: Omit<FeedbackDraft, 'id'>): number => insertRow('feedbackDrafts', d)
|
|
export const updateFeedbackDraft = (id: number, patch: Partial<FeedbackDraft>): number => updateRow('feedbackDrafts', id, patch)
|
|
|
|
export const getAssignmentFeedback = (assignmentId: number, instituteeId: number): AssignmentFeedback | undefined =>
|
|
getRowsWhereEquals<AssignmentFeedback>('assignmentFeedbacks', 'assignmentId', assignmentId).find(f => f.instituteeId === instituteeId)
|
|
export const getAssignmentFeedbackById = (id: number): AssignmentFeedback | undefined =>
|
|
getRowById<AssignmentFeedback>('assignmentFeedbacks', id)
|
|
export const addAssignmentFeedback = (f: Omit<AssignmentFeedback, 'id'>): number => insertRow('assignmentFeedbacks', f)
|
|
export const updateAssignmentFeedback = (id: number, patch: Partial<AssignmentFeedback>): 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<FeedbackCategoryRating>('feedbackCategoryRatings', 'assignmentFeedbackId', assignmentFeedbackId)
|
|
export const addFeedbackCategoryRating = (r: Omit<FeedbackCategoryRating, 'id'>): number => insertRow('feedbackCategoryRatings', r)
|
|
export const updateFeedbackCategoryRating = (id: number, patch: Partial<FeedbackCategoryRating>): number =>
|
|
updateRow('feedbackCategoryRatings', id, patch)
|
|
|
|
export const listFeedbackDimensionTexts = (assignmentFeedbackId: number): FeedbackDimensionText[] =>
|
|
getRowsWhereEquals<FeedbackDimensionText>('feedbackDimensionTexts', 'assignmentFeedbackId', assignmentFeedbackId)
|
|
export const getFeedbackDimensionText = (
|
|
assignmentFeedbackId: number,
|
|
feedbackDimensionId: number,
|
|
): FeedbackDimensionText | undefined =>
|
|
getRowsWhereEquals<FeedbackDimensionText>('feedbackDimensionTexts', 'assignmentFeedbackId', assignmentFeedbackId)
|
|
.find(t => t.feedbackDimensionId === feedbackDimensionId)
|
|
export const addFeedbackDimensionText = (t: Omit<FeedbackDimensionText, 'id'>): number => insertRow('feedbackDimensionTexts', t)
|
|
export const updateFeedbackDimensionText = (id: number, patch: Partial<FeedbackDimensionText>): number =>
|
|
updateRow('feedbackDimensionTexts', id, patch)
|