Skip to content

Commit

Permalink
reuse types
Browse files Browse the repository at this point in the history
  • Loading branch information
SKairinos committed Sep 6, 2024
1 parent ce0b15a commit 6e80d7c
Showing 1 changed file with 11 additions and 8 deletions.
19 changes: 11 additions & 8 deletions src/api/models.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ import type { CountryIsoCodes, UkCounties } from "../utils/general"
// User Models
// -----------------------------------------------------------------------------

type _UserTeacher<T extends Teacher> = Omit<T, "user">
type _UserStudent<S extends Student> = Omit<S, "user" | "auto_gen_password">

export type User = Model<
number,
{
Expand All @@ -17,41 +20,41 @@ export type User = Model<
is_active: boolean
date_joined: Date
requesting_to_join_class?: Class["id"]
teacher?: Omit<Teacher, "user">
student?: Omit<Student, "user" | "auto_gen_password">
teacher?: _UserTeacher<Teacher>
student?: _UserStudent<Student>
}
>

export type TeacherUser<Fields = User> = Fields & {
email: string
last_name: string
teacher: NonNullable<User["teacher"]>
teacher: _UserTeacher<Teacher>
student?: undefined
}

export type SchoolTeacherUser<Fields = User> = TeacherUser<Fields> & {
teacher: Omit<SchoolTeacher, "user">
teacher: _UserTeacher<SchoolTeacher>
}

export type AdminSchoolTeacherUser<Fields = User> =
SchoolTeacherUser<Fields> & {
teacher: Omit<AdminSchoolTeacher, "user">
teacher: _UserTeacher<AdminSchoolTeacher>
}

export type NonAdminSchoolTeacherUser<Fields = User> =
SchoolTeacherUser<Fields> & {
teacher: Omit<NonAdminSchoolTeacher, "user">
teacher: _UserTeacher<NonAdminSchoolTeacher>
}

export type NonSchoolTeacherUser<Fields = User> = TeacherUser<Fields> & {
teacher: Omit<NonSchoolTeacher, "user">
teacher: _UserTeacher<NonSchoolTeacher>
}

export type StudentUser<Fields = User> = Fields & {
email?: undefined
last_name?: undefined
teacher?: undefined
student: NonNullable<User["student"]>
student: _UserStudent<Student>
}

export type IndependentUser<Fields = User> = Fields & {
Expand Down

0 comments on commit 6e80d7c

Please sign in to comment.