Files
grademaxxing/app/types/api.ts
2026-01-17 13:37:57 +01:00

150 lines
2.6 KiB
TypeScript

// API Types matching backend models
export interface GradingCategory {
name: string;
weight: number;
color?: string;
}
export interface Subject {
_id: string;
name: string;
grading_categories: GradingCategory[];
color?: string;
teacher?: string;
grade_system?: string;
target_grade?: number;
target_grade_max?: number;
created_at: string;
updated_at: string;
}
export interface SubjectCreate {
name: string;
grading_categories: GradingCategory[];
color?: string;
teacher?: string;
grade_system?: string;
target_grade?: number;
target_grade_max?: number;
}
export interface SubjectUpdate {
name?: string;
grading_categories?: GradingCategory[];
color?: string;
teacher?: string;
grade_system?: string;
target_grade?: number;
target_grade_max?: number;
}
export interface Grade {
_id: string;
subject_id: string;
category_name: string;
grade: number;
max_grade: number;
weight_in_category: number;
name?: string;
date: string;
notes?: string;
created_at: string;
updated_at: string;
}
export interface GradeCreate {
subject_id: string;
category_name: string;
grade: number;
max_grade: number;
weight_in_category?: number;
name?: string;
date?: string;
notes?: string;
}
export interface GradeUpdate {
category_name?: string;
grade?: number;
max_grade?: number;
weight_in_category?: number;
name?: string;
date?: string;
notes?: string;
}
export interface ReportPeriod {
_id: string;
name: string;
start_date: string;
end_date: string;
created_at: string;
updated_at: string;
}
export interface ReportPeriodCreate {
name: string;
start_date: string;
end_date: string;
}
export interface ReportPeriodUpdate {
name?: string;
start_date?: string;
end_date?: string;
}
export interface TeacherGrade {
_id: string;
subject_id: string;
period_id: string;
grade: number;
max_grade: number;
notes?: string;
created_at: string;
updated_at: string;
}
export interface TeacherGradeCreate {
subject_id: string;
period_id: string;
grade: number;
max_grade: number;
notes?: string;
}
export interface TeacherGradeUpdate {
grade?: number;
max_grade?: number;
notes?: string;
}
export interface User {
_id: string;
email: string;
username: string;
created_at: string;
}
export interface UserLogin {
email: string;
password: string;
}
export interface UserRegister {
email: string;
username: string;
password: string;
}
export interface AuthResponse {
access_token: string;
token_type: string;
user: User;
}
export interface ApiError {
detail: string;
}