@adaptware/eagles-db 0.1.45 → 0.1.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/client/wasm.js CHANGED
@@ -163,6 +163,18 @@ exports.Prisma.ActionScalarFieldEnum = {
163
163
  is_active: 'is_active'
164
164
  };
165
165
 
166
+ exports.Prisma.ActivityLogScalarFieldEnum = {
167
+ id: 'id',
168
+ application_id: 'application_id',
169
+ actor_id: 'actor_id',
170
+ actor_type: 'actor_type',
171
+ message: 'message',
172
+ timestamp: 'timestamp',
173
+ metadata: 'metadata',
174
+ created_at: 'created_at',
175
+ is_active: 'is_active'
176
+ };
177
+
166
178
  exports.Prisma.ApplicationScalarFieldEnum = {
167
179
  id: 'id',
168
180
  candidate_id: 'candidate_id',
@@ -209,7 +221,6 @@ exports.Prisma.AssessmentScalarFieldEnum = {
209
221
  created_by: 'created_by',
210
222
  updated_by: 'updated_by',
211
223
  is_active: 'is_active',
212
- panelistId: 'panelistId',
213
224
  userId: 'userId'
214
225
  };
215
226
 
@@ -351,6 +362,7 @@ exports.Prisma.EvaluationPlanScalarFieldEnum = {
351
362
  exports.Prisma.FeedbackScalarFieldEnum = {
352
363
  id: 'id',
353
364
  interview_id: 'interview_id',
365
+ feedback_type: 'feedback_type',
354
366
  order_no: 'order_no',
355
367
  ai_feedback: 'ai_feedback',
356
368
  human_feedback: 'human_feedback',
@@ -364,6 +376,7 @@ exports.Prisma.FeedbackScalarFieldEnum = {
364
376
  exports.Prisma.FitCheckScalarFieldEnum = {
365
377
  id: 'id',
366
378
  organisation_id: 'organisation_id',
379
+ candidate_id: 'candidate_id',
367
380
  resume_id: 'resume_id',
368
381
  job_description_id: 'job_description_id',
369
382
  skills_match: 'skills_match',
@@ -407,33 +420,17 @@ exports.Prisma.GoogleScalarFieldEnum = {
407
420
  is_active: 'is_active'
408
421
  };
409
422
 
410
- exports.Prisma.IntermediateFeedbackScalarFieldEnum = {
411
- id: 'id',
412
- interview_id: 'interview_id',
413
- overall_feedback_id: 'overall_feedback_id',
414
- intermediate_feedback: 'intermediate_feedback',
415
- order_no: 'order_no',
416
- created_at: 'created_at',
417
- updated_at: 'updated_at',
418
- created_by: 'created_by',
419
- updated_by: 'updated_by',
420
- is_active: 'is_active'
421
- };
422
-
423
423
  exports.Prisma.InterviewScalarFieldEnum = {
424
424
  id: 'id',
425
425
  candidate_id: 'candidate_id',
426
426
  interviewer_id: 'interviewer_id',
427
- evaluation_plan_id: 'evaluation_plan_id',
428
427
  application_id: 'application_id',
428
+ evaluation_plan_id: 'evaluation_plan_id',
429
429
  resume_id: 'resume_id',
430
430
  job_description_id: 'job_description_id',
431
431
  organisation_id: 'organisation_id',
432
432
  room_name: 'room_name',
433
433
  interview_summary: 'interview_summary',
434
- ai_interview_feedback: 'ai_interview_feedback',
435
- interview_feedback: 'interview_feedback',
436
- interview_rating: 'interview_rating',
437
434
  scheduled_start_time: 'scheduled_start_time',
438
435
  scheduled_end_time: 'scheduled_end_time',
439
436
  actual_start_time: 'actual_start_time',
@@ -448,22 +445,6 @@ exports.Prisma.InterviewScalarFieldEnum = {
448
445
  is_active: 'is_active'
449
446
  };
450
447
 
451
- exports.Prisma.InterviewLibraryScalarFieldEnum = {
452
- id: 'id',
453
- title: 'title',
454
- description: 'description',
455
- organisation_id: 'organisation_id',
456
- category: 'category',
457
- evaluation_type: 'evaluation_type',
458
- duration: 'duration',
459
- passing_marks: 'passing_marks',
460
- is_active: 'is_active',
461
- created_by: 'created_by',
462
- updated_by: 'updated_by',
463
- created_at: 'created_at',
464
- updated_at: 'updated_at'
465
- };
466
-
467
448
  exports.Prisma.InterviewNotesScalarFieldEnum = {
468
449
  id: 'id',
469
450
  interview_id: 'interview_id',
@@ -572,39 +553,6 @@ exports.Prisma.OrganisationScalarFieldEnum = {
572
553
  logo: 'logo'
573
554
  };
574
555
 
575
- exports.Prisma.OverallFeedbackScalarFieldEnum = {
576
- id: 'id',
577
- interview_id: 'interview_id',
578
- interviewer_id: 'interviewer_id',
579
- feedback_type: 'feedback_type',
580
- overall_score: 'overall_score',
581
- overall_recommendation: 'overall_recommendation',
582
- overall_feedback: 'overall_feedback',
583
- created_at: 'created_at',
584
- updated_at: 'updated_at',
585
- created_by: 'created_by',
586
- updated_by: 'updated_by',
587
- is_active: 'is_active'
588
- };
589
-
590
- exports.Prisma.PanelistScalarFieldEnum = {
591
- id: 'id',
592
- name: 'name',
593
- designation: 'designation',
594
- experience: 'experience',
595
- expertise: 'expertise',
596
- suited_interview: 'suited_interview',
597
- industry: 'industry',
598
- special_areas: 'special_areas',
599
- organisation_id: 'organisation_id',
600
- user_id: 'user_id',
601
- created_at: 'created_at',
602
- updated_at: 'updated_at',
603
- created_by: 'created_by',
604
- updated_by: 'updated_by',
605
- is_active: 'is_active'
606
- };
607
-
608
556
  exports.Prisma.PermissionScalarFieldEnum = {
609
557
  id: 'id',
610
558
  permissions: 'permissions',
@@ -772,10 +720,6 @@ exports.Prisma.NullableJsonNullValueInput = {
772
720
  JsonNull: Prisma.JsonNull
773
721
  };
774
722
 
775
- exports.Prisma.JsonNullValueInput = {
776
- JsonNull: Prisma.JsonNull
777
- };
778
-
779
723
  exports.Prisma.QueryMode = {
780
724
  default: 'default',
781
725
  insensitive: 'insensitive'
@@ -803,6 +747,12 @@ exports.ActionStatus = exports.$Enums.ActionStatus = {
803
747
  CANCELLED: 'CANCELLED'
804
748
  };
805
749
 
750
+ exports.ActivityActorType = exports.$Enums.ActivityActorType = {
751
+ USER: 'USER',
752
+ AI: 'AI',
753
+ SYSTEM: 'SYSTEM'
754
+ };
755
+
806
756
  exports.ApplicationStatus = exports.$Enums.ApplicationStatus = {
807
757
  PENDING: 'PENDING',
808
758
  IN_PROGRESS: 'IN_PROGRESS',
@@ -882,11 +832,9 @@ exports.EvaluationPlanType = exports.$Enums.EvaluationPlanType = {
882
832
  DELETED: 'DELETED'
883
833
  };
884
834
 
885
- exports.InterviewFeedback = exports.$Enums.InterviewFeedback = {
886
- STRONG_HIRE: 'STRONG_HIRE',
887
- HIRE: 'HIRE',
888
- NO_HIRE: 'NO_HIRE',
889
- STRONG_NO_HIRE: 'STRONG_NO_HIRE'
835
+ exports.FeedbackType = exports.$Enums.FeedbackType = {
836
+ SECTION: 'SECTION',
837
+ OVERALL: 'OVERALL'
890
838
  };
891
839
 
892
840
  exports.InterviewStatus = exports.$Enums.InterviewStatus = {
@@ -899,17 +847,6 @@ exports.InterviewStatus = exports.$Enums.InterviewStatus = {
899
847
  EVALUATED: 'EVALUATED'
900
848
  };
901
849
 
902
- exports.InterviewCategory = exports.$Enums.InterviewCategory = {
903
- SCREENING: 'SCREENING',
904
- TECHNICAL: 'TECHNICAL',
905
- BEHAVIORAL: 'BEHAVIORAL',
906
- CASE_STUDY: 'CASE_STUDY',
907
- MANAGERIAL: 'MANAGERIAL',
908
- CULTURAL_FIT: 'CULTURAL_FIT',
909
- FINAL_DISCUSSION: 'FINAL_DISCUSSION',
910
- GENERAL: 'GENERAL'
911
- };
912
-
913
850
  exports.JobDescriptionStatus = exports.$Enums.JobDescriptionStatus = {
914
851
  CREATED: 'CREATED',
915
852
  DRAFT: 'DRAFT',
@@ -953,19 +890,6 @@ exports.OrganisationSize = exports.$Enums.OrganisationSize = {
953
890
  FIVE_HUNDRED_PLUS: 'FIVE_HUNDRED_PLUS'
954
891
  };
955
892
 
956
- exports.FeedbackType = exports.$Enums.FeedbackType = {
957
- HUMAN: 'HUMAN',
958
- AI: 'AI'
959
- };
960
-
961
- exports.OverallRecommendation = exports.$Enums.OverallRecommendation = {
962
- StrongHire: 'StrongHire',
963
- Hire: 'Hire',
964
- LeaningHire: 'LeaningHire',
965
- NoHire: 'NoHire',
966
- StrongNoHire: 'StrongNoHire'
967
- };
968
-
969
893
  exports.AsyncOperationStatus = exports.$Enums.AsyncOperationStatus = {
970
894
  PENDING: 'PENDING',
971
895
  IN_PROGRESS: 'IN_PROGRESS',
@@ -997,6 +921,7 @@ exports.Prisma.ModelName = {
997
921
  CandidateQuestionResponse: 'CandidateQuestionResponse',
998
922
  UserRole: 'UserRole',
999
923
  Action: 'Action',
924
+ ActivityLog: 'ActivityLog',
1000
925
  Application: 'Application',
1001
926
  Approval: 'Approval',
1002
927
  Assessment: 'Assessment',
@@ -1011,17 +936,13 @@ exports.Prisma.ModelName = {
1011
936
  Feedback: 'Feedback',
1012
937
  FitCheck: 'FitCheck',
1013
938
  Google: 'Google',
1014
- IntermediateFeedback: 'IntermediateFeedback',
1015
939
  Interview: 'Interview',
1016
- InterviewLibrary: 'InterviewLibrary',
1017
940
  InterviewNotes: 'InterviewNotes',
1018
941
  JobDescription: 'JobDescription',
1019
942
  JobDescriptionData: 'JobDescriptionData',
1020
943
  Message: 'Message',
1021
944
  OngoingEvaluation: 'OngoingEvaluation',
1022
945
  Organisation: 'Organisation',
1023
- OverallFeedback: 'OverallFeedback',
1024
- Panelist: 'Panelist',
1025
946
  Permission: 'Permission',
1026
947
  AsyncOperation: 'AsyncOperation',
1027
948
  Question: 'Question',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptware/eagles-db",
3
- "version": "0.1.45",
3
+ "version": "0.1.46",
4
4
  "description": "A Prisma client package for Treadspace database operations",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
Binary file
@@ -27,7 +27,6 @@ model Application {
27
27
  job_description JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
28
28
  fit_check FitCheck? @relation(fields: [fit_check_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
29
29
  interviews Interview[]
30
- assignments Assignment[]
31
30
  ongoing_evaluations OngoingEvaluation[]
32
31
  activity_logs ActivityLog[]
33
32
  // Audit fields
@@ -10,31 +10,29 @@ enum AssessmentStatus {
10
10
  }
11
11
 
12
12
  model Assessment {
13
- id String @id @default(uuid())
14
- assessment_library_id String
15
- candidate_id String
16
- reviewer_id String?
17
- score Float?
18
- feedback String?
19
- scheduled_start_time DateTime? @default(now()) // Start Time to start the assessment
20
- assessment_status AssessmentStatus @default(SCHEDULED)
21
- created_at DateTime @default(now())
22
- updated_at DateTime @updatedAt
23
- created_by String
24
- updated_by String
25
- is_active Boolean @default(true)
13
+ id String @id @default(uuid())
14
+ assessment_id String
15
+ candidate_id String
16
+ reviewer_id String?
17
+ score Float?
18
+ feedback String?
19
+ scheduled_start_time DateTime? @default(now()) // Start Time to start the assessment
20
+ assessment_status AssessmentStatus @default(SCHEDULED)
21
+ created_at DateTime @default(now())
22
+ updated_at DateTime @updatedAt
23
+ created_by String
24
+ updated_by String
25
+ is_active Boolean @default(true)
26
26
  // Relations
27
- assessment_libarary AssessmentLibrary @relation(fields: [assessment_library_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
28
- candidate User @relation("CandidateAssessments", fields: [candidate_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
29
- reviewer User? @relation("ReviewerAssessments", fields: [reviewer_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
30
- questions AssessmentQuestion[] @relation("AssessmentToAssessmentQuestion")
31
- candidateResponse CandidateQuestionResponse[]
32
- Panelist Panelist? @relation(fields: [panelistId], references: [id])
33
- panelistId String?
34
- User User? @relation(fields: [userId], references: [id])
35
- userId String?
27
+ assessment_libarary AssessmentLibrary @relation(fields: [assessment_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
28
+ candidate User @relation("CandidateAssessments", fields: [candidate_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
29
+ reviewer User? @relation("ReviewerAssessments", fields: [reviewer_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
30
+ questions AssessmentQuestion[] @relation("AssessmentToAssessmentQuestion")
31
+ candidateResponse CandidateQuestionResponse[]
32
+ User User? @relation(fields: [userId], references: [id])
33
+ userId String?
36
34
 
37
- @@unique([assessment_library_id, candidate_id])
38
- @@index([assessment_library_id])
35
+ @@unique([assessment_id, candidate_id])
36
+ @@index([assessment_id])
39
37
  @@index([candidate_id])
40
38
  }
@@ -14,7 +14,6 @@ model AssignmentLibrary {
14
14
  jobDescription JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
15
15
  /// Back-relation: one-to-one from EvaluationPlan (FK lives on EvaluationPlan.assignment_library_id)
16
16
  evaluationPlan EvaluationPlan[]
17
- assignments Assignment[]
18
17
 
19
18
  @@index([job_description_id])
20
19
  }
@@ -72,13 +72,11 @@ model EvaluationPlan {
72
72
  // Relations
73
73
  jobDescription JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade)
74
74
  questions Question[] // One evaluation plan → many questions
75
- panelists Panelist[]
76
- interviews Interview[]
77
75
  applications Application[]
78
- // New optional one-to-one relation with AssessmentLibrary
79
76
  assessment AssessmentLibrary? @relation(fields: [assessment_id], references: [id], onDelete: SetNull)
80
77
  assignment_library AssignmentLibrary? @relation(fields: [assignment_library_id], references: [id], onDelete: SetNull)
81
78
  ongoing_evaluations OngoingEvaluation[]
79
+ interviews Interview[]
82
80
 
83
81
  @@unique([job_description_id, order_no])
84
82
  @@index([job_description_id])
@@ -1,7 +1,13 @@
1
+ enum FeedbackType {
2
+ SECTION
3
+ OVERALL
4
+ }
5
+
1
6
  model Feedback {
2
- id String @id @default(uuid())
3
- interview_id String
4
- order_no Int
7
+ id String @id @default(uuid())
8
+ interview_id String
9
+ feedback_type FeedbackType
10
+ order_no Int?
5
11
 
6
12
  ai_feedback Json?
7
13
  human_feedback Json?
@@ -8,54 +8,45 @@ enum InterviewStatus {
8
8
  EVALUATED // Feedback completed and locked
9
9
  }
10
10
 
11
- enum InterviewFeedback {
12
- STRONG_HIRE
13
- HIRE
14
- NO_HIRE
15
- STRONG_NO_HIRE
16
- }
17
-
18
11
  model Interview {
19
- id String @id @default(uuid())
20
- candidate_id String
21
- interviewer_id String?
22
- evaluation_plan_id String
23
- application_id String?
24
- resume_id String
25
- job_description_id String
26
- organisation_id String
27
- room_name String?
28
- interview_summary String[]
29
- ai_interview_feedback InterviewFeedback?
30
- interview_feedback InterviewFeedback?
31
- interview_rating Float? // Overall rating out of 100 based on evaluation
32
- scheduled_start_time DateTime?
33
- scheduled_end_time DateTime?
34
- actual_start_time DateTime?
35
- actual_end_time DateTime?
36
- recording_url String?
37
- interview_status InterviewStatus @default(SCHEDULED)
38
- google_event_id String?
39
- created_at DateTime @default(now())
40
- updated_at DateTime @updatedAt
41
- created_by String
42
- updated_by String
43
- is_active Boolean @default(true)
12
+ id String @id @default(uuid())
13
+ /// Foreign keys
14
+ candidate_id String
15
+ interviewer_id String?
16
+ application_id String?
17
+ evaluation_plan_id String?
18
+ resume_id String
19
+ job_description_id String
20
+ organisation_id String
21
+ /// Data
22
+ room_name String?
23
+ interview_summary String[]
24
+ scheduled_start_time DateTime?
25
+ scheduled_end_time DateTime?
26
+ actual_start_time DateTime?
27
+ actual_end_time DateTime?
28
+ recording_url String?
29
+ interview_status InterviewStatus @default(SCHEDULED)
30
+ google_event_id String?
31
+ /// Audit fields
32
+ created_at DateTime @default(now())
33
+ updated_at DateTime @updatedAt
34
+ created_by String
35
+ updated_by String
36
+ is_active Boolean @default(true)
44
37
  // Relations
45
- candidate User? @relation("CandidateInterviews", fields: [candidate_id], references: [id], onDelete: SetNull)
46
- interviewer User? @relation("InterviewerInterviews", fields: [interviewer_id], references: [id], onDelete: SetNull)
47
- organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
48
- job_description JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
49
- resume Resume @relation(fields: [resume_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
50
- evaluation_plan EvaluationPlan? @relation(fields: [evaluation_plan_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
51
- application Application? @relation(fields: [application_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
52
- ongoing_evaluation OngoingEvaluation?
53
- intermediateFeedbacks IntermediateFeedback[]
54
- transcripts Transcript[]
55
- suggestions Suggestion[]
56
- overallFeedback OverallFeedback[]
57
- feedback Feedback[]
58
- interviewNotes InterviewNotes[]
38
+ candidate User? @relation("CandidateInterviews", fields: [candidate_id], references: [id], onDelete: SetNull)
39
+ interviewer User? @relation("InterviewerInterviews", fields: [interviewer_id], references: [id], onDelete: SetNull)
40
+ organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
41
+ job_description JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
42
+ resume Resume @relation(fields: [resume_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
43
+ application Application? @relation(fields: [application_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
44
+ evaluation_plan EvaluationPlan? @relation(fields: [evaluation_plan_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
45
+ ongoing_evaluation OngoingEvaluation?
46
+ transcripts Transcript[]
47
+ suggestions Suggestion[]
48
+ feedback Feedback[]
49
+ interviewNotes InterviewNotes[]
59
50
 
60
51
  @@unique([interviewer_id, candidate_id, evaluation_plan_id])
61
52
  @@index([candidate_id])
@@ -28,7 +28,6 @@ model JobDescription {
28
28
  organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
29
29
  applications Application[]
30
30
  interviews Interview[]
31
- assignments Assignment[]
32
31
  fit_check FitCheck[] // one-to-many link
33
32
  job_description_data JobDescriptionData[] // one-to-many link
34
33
  evaluationPlan EvaluationPlan[] // relation to evaluation methods
@@ -34,7 +34,6 @@ model OngoingEvaluation {
34
34
  job_description_id String
35
35
  evaluation_plan_id String
36
36
  interview_id String? @unique
37
- assignment_id String? @unique
38
37
  status OngoingEvaluationStatus?
39
38
  state OngoingEvaluationState? @default(NOT_STARTED)
40
39
  round_status OngoingEvaluationRoundStatus? @default(NOT_SCHEDULED)
@@ -47,7 +46,6 @@ model OngoingEvaluation {
47
46
  organisation Organisation? @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
48
47
  evaluation_plan EvaluationPlan @relation(fields: [evaluation_plan_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
49
48
  interview Interview? @relation(fields: [interview_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
50
- assignment Assignment?
51
49
  created_at DateTime @default(now())
52
50
  updated_at DateTime @updatedAt
53
51
  created_by String
@@ -17,7 +17,6 @@ model Organisation {
17
17
  address String
18
18
  company_values Json[]
19
19
 
20
- interviewers User[]
21
20
  created_at DateTime @default(now())
22
21
  updated_at DateTime @updatedAt
23
22
  created_by String
@@ -26,16 +25,14 @@ model Organisation {
26
25
  alias String? @unique
27
26
  logo String?
28
27
  applications Application[]
28
+ interviewers User[]
29
29
  user_roles UserRole[]
30
30
  job_descriptions JobDescription[]
31
31
  assessment_library AssessmentLibrary[]
32
32
  assignment_library AssignmentLibrary[]
33
- interview_library InterviewLibrary[]
34
33
  interviews Interview[]
35
- assignments Assignment[]
36
34
  fit_check FitCheck[] // one-to-many link
37
35
  resumes Resume[] // one-to-many link
38
- panelists Panelist[] // one-to-many link
39
36
  approvals Approval[] // one-to-many link
40
37
  suggestions Suggestion[]
41
38
  ongoing_evaluations OngoingEvaluation[] // optional one-to-many
@@ -1,5 +1,5 @@
1
1
  model Transcript {
2
- id String @id @default(uuid())
2
+ id String @id @default(uuid())
3
3
  interview_id String?
4
4
  suggestion_id String?
5
5
  intermediate_feedback_id String?
@@ -8,17 +8,16 @@ model Transcript {
8
8
  candidate_timestamp DateTime?
9
9
  interviewer String
10
10
  candidate String
11
- order_no Int @default(autoincrement())
12
- created_at DateTime @default(now())
13
- updated_at DateTime @updatedAt
11
+ order_no Int @default(autoincrement())
12
+ created_at DateTime @default(now())
13
+ updated_at DateTime @updatedAt
14
14
  created_by String
15
15
  updated_by String
16
- is_active Boolean @default(true)
16
+ is_active Boolean @default(true)
17
17
  // Relations
18
- interview Interview? @relation(fields: [interview_id], references: [id], onDelete: SetNull, onUpdate: SetNull)
19
- suggestion Suggestion? @relation(fields: [suggestion_id], references: [id], onDelete: SetNull)
20
- intermediate_feedback IntermediateFeedback? @relation(fields: [intermediate_feedback_id], references: [id], onDelete: SetNull)
21
- job_description JobDescription? @relation(fields: [job_description_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
18
+ interview Interview? @relation(fields: [interview_id], references: [id], onDelete: SetNull, onUpdate: SetNull)
19
+ suggestion Suggestion? @relation(fields: [suggestion_id], references: [id], onDelete: SetNull)
20
+ job_description JobDescription? @relation(fields: [job_description_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
22
21
 
23
22
  @@unique([interview_id, order_no])
24
23
  @@index([interview_id])
@@ -29,7 +29,6 @@ model User {
29
29
  job_description JobDescription[]
30
30
  hiring_manager_job_descriptions JobDescription[] @relation("HiringManager")
31
31
  approvals Approval[]
32
- panelist Panelist?
33
32
  sent_messages Message[] @relation("Sent Messages")
34
33
  received_messages Message[] @relation("Received Messages")
35
34
  profile_created Boolean
@@ -40,8 +39,6 @@ model User {
40
39
  assessment_results Assessment[]
41
40
  candidate_assessments Assessment[] @relation("CandidateAssessments")
42
41
  reviewer_assessments Assessment[] @relation("ReviewerAssessments")
43
- candidate_assignments Assignment[] @relation("CandidateAssignments")
44
- reviewer_assignments Assignment[] @relation("AssignmentReviewer")
45
42
  candidateResponses CandidateQuestionResponse[]
46
43
  questions Question[]
47
44
  ongoing_evaluations OngoingEvaluation[] // optional one-to-many
@@ -1,40 +0,0 @@
1
- enum AssignmentStatus {
2
- AVAILABLE
3
- SCHEDULED
4
- }
5
-
6
- model Assignment {
7
- id String @id @default(uuid())
8
- candidate_id String
9
- assignment_library_id String
10
- reviewer_id String?
11
- application_id String?
12
- job_description_id String
13
- organisation_id String
14
- ongoing_evaluation_id String? @unique
15
- score Int?
16
- ai_result String?
17
- ai_reasoning String?
18
- status AssignmentStatus @default(AVAILABLE)
19
- solution_url String?
20
- scheduled_start_time DateTime?
21
- scheduled_end_time DateTime?
22
- created_at DateTime @default(now())
23
- updated_at DateTime @updatedAt
24
- created_by String
25
- updated_by String
26
- is_active Boolean @default(true)
27
- // Relations
28
- candidate User? @relation("CandidateAssignments", fields: [candidate_id], references: [id], onDelete: Cascade)
29
- assignment_library AssignmentLibrary @relation(fields: [assignment_library_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
30
- reviewer User? @relation("AssignmentReviewer", fields: [reviewer_id], references: [id], onDelete: SetNull)
31
- organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
32
- job_description JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
33
- application Application? @relation(fields: [application_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
34
- ongoing_evaluation OngoingEvaluation? @relation(fields: [ongoing_evaluation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
35
-
36
- @@unique([candidate_id, ongoing_evaluation_id])
37
- @@index([candidate_id])
38
- @@index([reviewer_id])
39
- @@index([job_description_id])
40
- }
@@ -1,18 +0,0 @@
1
- model IntermediateFeedback {
2
- id String @id @default(uuid())
3
- interview_id String
4
- overall_feedback_id String?
5
- intermediate_feedback Json
6
- order_no Int @default(autoincrement())
7
- created_at DateTime @default(now())
8
- updated_at DateTime @updatedAt
9
- created_by String
10
- updated_by String
11
- is_active Boolean @default(true)
12
- // Relations
13
- interview Interview @relation(fields: [interview_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
14
- OverallFeedback OverallFeedback? @relation(fields: [overall_feedback_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
15
- transcripts Transcript[]
16
-
17
- @@index([interview_id])
18
- }
@@ -1,31 +0,0 @@
1
- /// Defines the category or purpose of the interview, suitable for any job role.
2
- enum InterviewCategory {
3
- SCREENING // Initial screening interview
4
- TECHNICAL // Skill or role-specific interview
5
- BEHAVIORAL // Behavioral or situational round
6
- CASE_STUDY // Case-based or analytical round
7
- MANAGERIAL // Leadership or management-focused
8
- CULTURAL_FIT // Checks alignment with company culture
9
- FINAL_DISCUSSION // Final HR or offer discussion
10
- GENERAL // Generic or flexible-purpose interview
11
- }
12
-
13
- /// Represents a reusable interview template applicable to any job type.
14
- model InterviewLibrary {
15
- id String @id @default(uuid())
16
- title String
17
- description String
18
- organisation_id String
19
- category InterviewCategory
20
- evaluation_type EvaluationType
21
- duration Float
22
- passing_marks Float
23
- is_active Boolean @default(true)
24
- created_by String
25
- updated_by String
26
- created_at DateTime @default(now())
27
- updated_at DateTime @updatedAt
28
- organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
29
-
30
- @@index([organisation_id])
31
- }