types.d.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import { AxiosRequestConfig } from 'axios'
  2. export type ID = number | string
  3. export interface AxiosResponseInfo {}
  4. export interface ReceivedData<R = {}, E = 0> extends AxiosResponseInfo {
  5. err?: E | 0 | 401
  6. res?: R
  7. page?: PageSerializer
  8. }
  9. export interface ErrorData extends AxiosResponseInfo {
  10. err: number
  11. msg: string
  12. }
  13. export interface PageSerializer {
  14. page?: number
  15. limit?: number
  16. size?: number
  17. total?: number
  18. }
  19. export type Pageable<T = {}> = T & {
  20. page?: number
  21. limit?: number
  22. }
  23. export type LocalDateTime = string
  24. export type ExamStatus =
  25. | 'READY' // 考试已准备好,考试尚未开始
  26. | 'AVAILABLE' // 考试可用,表示考试正在进行
  27. | 'FINISHED' // 考试已完成,在考试结束后使用
  28. | 'CLOSED' // 考试已关闭,表示考试生命周期结束
  29. export interface ExamSerializer {
  30. id?: number
  31. title?: string
  32. startAt?: LocalDateTime
  33. endAt?: LocalDateTime
  34. status?: ExamStatus
  35. creator?: {
  36. id?: number
  37. username?: string
  38. }
  39. joined?: boolean
  40. // result?: ResultSerializer
  41. isReentryPermitted?: boolean
  42. inviteCode?: string
  43. comment?: string
  44. participantsNumber?: number
  45. lastTime?: number
  46. difficulty?: number
  47. }
  48. export interface ResultSerializer {
  49. id?: number
  50. score?: number
  51. lastCommitAt?: LocalDateTime
  52. exam?: {
  53. id?: number
  54. title?: string
  55. }
  56. owner?: {
  57. id?: number
  58. username?: string
  59. }
  60. commits?: Array<{
  61. id?: number
  62. finished?: boolean
  63. score?: number
  64. createdAt?: LocalDateTime
  65. }>
  66. }
  67. export interface OptionSerializer {
  68. label?: string
  69. content?: string
  70. }
  71. export interface QuestionSerializer {
  72. id?: number
  73. stem?: string
  74. }
  75. export type ChoiceAnswer = string
  76. export interface ChoiceQuestionSerializer extends QuestionSerializer {
  77. studentId?: number
  78. single?: boolean
  79. options?: Array<OptionSerializer>
  80. lastCommitAnswers?: ChoiceAnswer
  81. }
  82. export interface CodeTuple {
  83. lang?: string
  84. code?: string
  85. }
  86. export interface CodeQuestionSerializer extends QuestionSerializer {
  87. studentId?: number
  88. codeTuples?: Array<CodeTuple>
  89. lastCommitCode?: string
  90. }
  91. export interface ExamQuestionSerializer {
  92. id?: number
  93. singleChoiceQuestions?: Array<ChoiceQuestionSerializer>
  94. multiChoiceQuestions?: Array<ChoiceQuestionSerializer>
  95. codeQuestions?: Array<CodeQuestionSerializer>
  96. }