@adaptware/eagles-db 0.1.1

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.
Files changed (64) hide show
  1. package/README.md +110 -0
  2. package/bin/db-cli.js +113 -0
  3. package/client/client.d.ts +1 -0
  4. package/client/client.js +4 -0
  5. package/client/default.d.ts +1 -0
  6. package/client/default.js +4 -0
  7. package/client/edge.d.ts +1 -0
  8. package/client/edge.js +1039 -0
  9. package/client/index-browser.js +1022 -0
  10. package/client/index.d.ts +94904 -0
  11. package/client/index.js +1064 -0
  12. package/client/libquery_engine-darwin.dylib.node +0 -0
  13. package/client/libquery_engine-linux-arm64-openssl-1.1.x.so.node +0 -0
  14. package/client/package.json +150 -0
  15. package/client/runtime/edge-esm.js +34 -0
  16. package/client/runtime/edge.js +34 -0
  17. package/client/runtime/index-browser.d.ts +370 -0
  18. package/client/runtime/index-browser.js +16 -0
  19. package/client/runtime/library.d.ts +3976 -0
  20. package/client/runtime/library.js +146 -0
  21. package/client/runtime/react-native.js +83 -0
  22. package/client/runtime/wasm-compiler-edge.js +83 -0
  23. package/client/runtime/wasm-engine-edge.js +35 -0
  24. package/client/schema.prisma +1158 -0
  25. package/client/wasm.d.ts +1 -0
  26. package/client/wasm.js +1022 -0
  27. package/package.json +55 -0
  28. package/prisma/schema/CandidateQuestionResponse.prisma +21 -0
  29. package/prisma/schema/UserRole.prisma +20 -0
  30. package/prisma/schema/action.prisma +35 -0
  31. package/prisma/schema/applications.prisma +44 -0
  32. package/prisma/schema/approval.prisma +14 -0
  33. package/prisma/schema/assessment.prisma +40 -0
  34. package/prisma/schema/assessmentLibrary.prisma +33 -0
  35. package/prisma/schema/assessmentQuestion.prisma +17 -0
  36. package/prisma/schema/assignmentLibrary.prisma +20 -0
  37. package/prisma/schema/budget.prisma +38 -0
  38. package/prisma/schema/calendly.prisma +18 -0
  39. package/prisma/schema/candidateProfile.prisma +26 -0
  40. package/prisma/schema/contactUs.prisma +12 -0
  41. package/prisma/schema/evaluationPlan.prisma +91 -0
  42. package/prisma/schema/feedback.prisma +18 -0
  43. package/prisma/schema/fitCheck.prisma +54 -0
  44. package/prisma/schema/google.prisma +16 -0
  45. package/prisma/schema/intermediateFeedback.prisma +18 -0
  46. package/prisma/schema/interview.prisma +65 -0
  47. package/prisma/schema/interviewLibrary.prisma +33 -0
  48. package/prisma/schema/interviewNotes.prisma +17 -0
  49. package/prisma/schema/jobDescription.prisma +43 -0
  50. package/prisma/schema/jobDescriptionData.prisma +16 -0
  51. package/prisma/schema/message.prisma +15 -0
  52. package/prisma/schema/ongoingEvaluation.prisma +59 -0
  53. package/prisma/schema/organisation.prisma +44 -0
  54. package/prisma/schema/overallFeedback.prisma +35 -0
  55. package/prisma/schema/panelist.prisma +24 -0
  56. package/prisma/schema/permission.prisma +13 -0
  57. package/prisma/schema/questions.prisma +36 -0
  58. package/prisma/schema/resume.prisma +26 -0
  59. package/prisma/schema/resumeData.prisma +15 -0
  60. package/prisma/schema/schema.prisma +16 -0
  61. package/prisma/schema/suggestion.prisma +21 -0
  62. package/prisma/schema/transcript.prisma +26 -0
  63. package/prisma/schema/user.prisma +68 -0
  64. package/prisma/schema/userProfile.prisma +15 -0
@@ -0,0 +1,33 @@
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
+ @@index([category])
32
+ @@index([created_at])
33
+ }
@@ -0,0 +1,17 @@
1
+ model InterviewNotes {
2
+ id String @id @default(uuid())
3
+ interview_id String
4
+ note String
5
+ details Json?
6
+ timestamp DateTime @default(now())
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
+
13
+ // Relations
14
+ interview Interview @relation(fields: [interview_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
15
+
16
+ @@index([interview_id])
17
+ }
@@ -0,0 +1,43 @@
1
+ enum JobDescriptionStatus {
2
+ CREATED
3
+ DRAFT
4
+ ACTIVE
5
+ DEACTIVATED
6
+ CLOSED
7
+ }
8
+
9
+ model JobDescription {
10
+ id String @id @default(uuid())
11
+ hiring_manager_id String?
12
+ status JobDescriptionStatus @default(DRAFT)
13
+ organisation_id String
14
+ screeningQuestions String[]
15
+ recommendedQuestions Json[]
16
+ created_at DateTime @default(now())
17
+ updated_at DateTime @updatedAt
18
+ created_by String
19
+ updated_by String
20
+ uploaded_job_description_path String?
21
+ is_active Boolean @default(true)
22
+ is_plan_locked Boolean @default(false)
23
+ is_posted Boolean @default(false)
24
+ openings Int @default(1)
25
+ organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
26
+ ai_insight Json?
27
+ applications Application[]
28
+ interviews Interview[]
29
+ fit_check FitCheck[] // one-to-many link
30
+ job_description_data JobDescriptionData[] // one-to-many link
31
+ evaluationPlan EvaluationPlan[] // relation to evaluation methods
32
+ ongoing_evaluations OngoingEvaluation[] // optional one-to-many
33
+ assignment_library AssignmentLibrary[]
34
+ approvals Approval[] // one-to-many relation
35
+ resumes Resume[] // one-to-many link
36
+ budget Budget?
37
+ hiring_manager User? @relation("HiringManager", fields: [hiring_manager_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
38
+ recruiters User[]
39
+ transcripts Transcript[]
40
+
41
+ @@index([organisation_id])
42
+ @@index([hiring_manager_id])
43
+ }
@@ -0,0 +1,16 @@
1
+ model JobDescriptionData {
2
+ id String @id @default(uuid())
3
+ job_description_id String
4
+ key String
5
+ value String
6
+ created_at DateTime @default(now())
7
+ updated_at DateTime @updatedAt
8
+ created_by String
9
+ updated_by String
10
+ is_active Boolean @default(true)
11
+
12
+ jobDescription JobDescription @relation(fields: [job_description_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
13
+
14
+ @@unique([job_description_id, key])
15
+ @@index([created_at])
16
+ }
@@ -0,0 +1,15 @@
1
+ model Message {
2
+ id String @id @default(uuid())
3
+ sender_id String
4
+ receiver_id String
5
+ message String
6
+
7
+ sender User @relation("Sent Messages", fields: [sender_id], references: [id])
8
+ receiver User @relation("Received Messages", fields: [receiver_id], references: [id])
9
+
10
+ created_at DateTime @default(now())
11
+ updated_at DateTime @updatedAt
12
+ created_by String
13
+ updated_by String
14
+ is_active Boolean @default(true)
15
+ }
@@ -0,0 +1,59 @@
1
+ enum OngoingEvaluationStatus {
2
+ LOCKED
3
+ ACTION_REQUIRED
4
+ IN_PROGRESS
5
+ EVALUATED
6
+ CLEARED
7
+ NOT_CLEARED
8
+ SKIPPED
9
+ }
10
+
11
+ enum OngoingEvaluationState {
12
+ NOT_STARTED
13
+ IN_PROGRESS
14
+ CLEARED
15
+ SKIPPED
16
+ NOT_CLEARED
17
+ }
18
+
19
+ enum OngoingEvaluationRoundStatus {
20
+ NOT_SCHEDULED
21
+ REQUESTED_SCHEDULING
22
+ SCHEDULED
23
+ IN_PROGRESS
24
+ PENDING_EVALUATION
25
+ EVALUATED
26
+ }
27
+
28
+ model OngoingEvaluation {
29
+ id String @id @default(uuid())
30
+ application_id String
31
+ candidate_id String
32
+ resume_id String
33
+ organisation_id String
34
+ job_description_id String
35
+ evaluation_plan_id String
36
+ interview_id String? @unique
37
+ status OngoingEvaluationStatus?
38
+ state OngoingEvaluationState? @default(NOT_STARTED)
39
+ round_status OngoingEvaluationRoundStatus? @default(NOT_SCHEDULED)
40
+ comments String? @default("")
41
+ // Relations
42
+ jobDescription JobDescription? @relation(fields: [job_description_id], references: [id], onDelete: SetNull)
43
+ application Application @relation(fields: [application_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
44
+ candidate User? @relation(fields: [candidate_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
45
+ resume Resume? @relation(fields: [resume_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
46
+ organisation Organisation? @relation(fields: [organisation_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
47
+ evaluation_plan EvaluationPlan @relation(fields: [evaluation_plan_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
48
+ interview Interview? @relation(fields: [interview_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
49
+ created_at DateTime @default(now())
50
+ updated_at DateTime @updatedAt
51
+ created_by String
52
+ updated_by String
53
+ is_active Boolean @default(true)
54
+ is_current Boolean @default(false)
55
+
56
+ @@unique([application_id, evaluation_plan_id])
57
+ @@index([application_id])
58
+ @@index([evaluation_plan_id])
59
+ }
@@ -0,0 +1,44 @@
1
+ enum OrganisationSize {
2
+ ONE_TO_TEN @map("1-10")
3
+ ELEVEN_TO_FIFTY @map("11-50")
4
+ FIFTY_ONE_TO_TWO_HUNDRED @map("51-200")
5
+ TWO_HUNDRED_ONE_TO_FIVE_HUNDRED @map("201-500")
6
+ FIVE_HUNDRED_PLUS @map("500+")
7
+ }
8
+
9
+ model Organisation {
10
+ id String @id @default(uuid())
11
+ name String @unique
12
+ industry String
13
+ about String
14
+ website String
15
+ size OrganisationSize @default(ONE_TO_TEN)
16
+ phone String
17
+ address String
18
+ company_values Json[]
19
+
20
+ interviewers User[]
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
+ alias String? @unique
27
+ logo String?
28
+ applications Application[]
29
+ user_roles UserRole[]
30
+ job_descriptions JobDescription[]
31
+ assessment_library AssessmentLibrary[]
32
+ assignment_library AssignmentLibrary[]
33
+ interview_library InterviewLibrary[]
34
+ interviews Interview[]
35
+ fit_check FitCheck[] // one-to-many link
36
+ resumes Resume[] // one-to-many link
37
+ panelists Panelist[] // one-to-many link
38
+ approvals Approval[] // one-to-many link
39
+ suggestions Suggestion[]
40
+ ongoing_evaluations OngoingEvaluation[] // optional one-to-many
41
+ actions Action[]
42
+
43
+ @@index([name])
44
+ }
@@ -0,0 +1,35 @@
1
+ enum FeedbackType {
2
+ HUMAN
3
+ AI
4
+ }
5
+
6
+ enum OverallRecommendation {
7
+ StrongHire
8
+ Hire
9
+ LeaningHire
10
+ NoHire
11
+ StrongNoHire
12
+ }
13
+
14
+ model OverallFeedback {
15
+ id String @id @default(uuid())
16
+ interview_id String
17
+ interviewer_id String? // 👈 optional field
18
+ feedback_type FeedbackType
19
+ overall_score Float
20
+ overall_recommendation OverallRecommendation
21
+ overall_feedback Json
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
+ interview Interview @relation(fields: [interview_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
29
+ interviewer Panelist? @relation(fields: [interviewer_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
30
+ intermediateFeedbacks IntermediateFeedback[] // 👈 one-to-many relation added here
31
+
32
+ @@unique([interview_id, interviewer_id]) // 👈 updated uniqueness logic
33
+ @@index([interview_id])
34
+ @@index([interviewer_id])
35
+ }
@@ -0,0 +1,24 @@
1
+ model Panelist {
2
+ id String @id @default(uuid())
3
+ name String
4
+ designation String
5
+ experience String // e.g. "10+", keeping as String for flexibility
6
+ expertise String // e.g. "Product Strategy, Figma..."
7
+ suited_interview String // e.g. "Consulting, Customer understanding..."
8
+ industry String // e.g. "Healthcare, Fintech"
9
+ special_areas String? // Optional field
10
+ organisation_id String
11
+ user_id String @unique
12
+
13
+ user User @relation(fields: [user_id], references: [id])
14
+ organisation Organisation @relation(fields: [organisation_id], references: [id])
15
+ evaluationPlans EvaluationPlan[]
16
+ overallFeedbacks OverallFeedback[]
17
+ created_at DateTime @default(now())
18
+ updated_at DateTime @updatedAt
19
+ created_by String
20
+ updated_by String
21
+ is_active Boolean @default(true)
22
+
23
+ assessments Assessment[]
24
+ }
@@ -0,0 +1,13 @@
1
+ model Permission {
2
+ id String @id @default(uuid())
3
+ permissions String[] @default([])
4
+ created_by String?
5
+ updated_by String?
6
+ updated_at DateTime @updatedAt
7
+ created_at DateTime @default(now())
8
+ is_active Boolean @default(true)
9
+ user User?
10
+ user_roles UserRole?
11
+
12
+ @@index([created_at])
13
+ }
@@ -0,0 +1,36 @@
1
+ enum Difficulty {
2
+ EASY // simple/basic questions
3
+ MEDIUM // moderate difficulty
4
+ HARD // challenging questions
5
+ }
6
+
7
+ enum QuestionType {
8
+ MCQ
9
+ TRUE_FALSE
10
+ THEORY
11
+ CODING
12
+ }
13
+
14
+ model Question {
15
+ id String @id @default(uuid())
16
+ assessment_library_id String?
17
+ evaluation_plan_id String?
18
+ candidate_id String?
19
+ skill String?
20
+ question_type QuestionType?
21
+ question String
22
+ answer String
23
+ options String[] // For MCQ's
24
+ max_score Float?
25
+ difficulty Difficulty?
26
+ created_by String
27
+ updated_by String
28
+ created_at DateTime @default(now())
29
+ updated_at DateTime @updatedAt
30
+ is_active Boolean @default(true)
31
+ candidate User? @relation(fields: [candidate_id], references: [id], onDelete: SetNull)
32
+ assessments AssessmentQuestion[] @relation("QuestionToAssessmentQuestion")
33
+ assessmentLibrary AssessmentLibrary? @relation(fields: [assessment_library_id], references: [id], onDelete: Cascade)
34
+ evaluationPlan EvaluationPlan? @relation(fields: [evaluation_plan_id], references: [id], onDelete: SetNull)
35
+ candidateResponse CandidateQuestionResponse[]
36
+ }
@@ -0,0 +1,26 @@
1
+ model Resume {
2
+ id String @id @default(uuid())
3
+ user_id String?
4
+ organisation_id String?
5
+ job_description_id String?
6
+ uploaded_resume_path String?
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
+ user User? @relation(fields: [user_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
13
+ organisation Organisation? @relation(fields: [organisation_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
14
+ job_description JobDescription? @relation(fields: [job_description_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
15
+ applications Application[]
16
+ interviews Interview[]
17
+ ongoing_evaluations OngoingEvaluation[] // optional one-to-many
18
+
19
+ resume_data ResumeData[] // one-to-many link
20
+ fit_check FitCheck[] // one-to-many link
21
+ // inverse side of the relation — no foreign key here
22
+ candidate_profile CandidateProfile? // one-to-one link
23
+ yearsOfExperience Int?
24
+
25
+ @@index([user_id])
26
+ }
@@ -0,0 +1,15 @@
1
+ model ResumeData {
2
+ id String @id @default(uuid())
3
+ resume_id String
4
+ key String
5
+ value String
6
+ created_at DateTime @default(now())
7
+ updated_at DateTime @updatedAt
8
+ created_by String
9
+ updated_by String
10
+ is_active Boolean @default(true)
11
+
12
+ resume Resume @relation(fields: [resume_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
13
+
14
+ @@index([created_at])
15
+ }
@@ -0,0 +1,16 @@
1
+ // This is your Prisma schema file,
2
+ // learn more about it in the docs: https://pris.ly/d/prisma-schema
3
+
4
+ // Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
5
+ // Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
6
+
7
+ generator client {
8
+ provider = "prisma-client-js"
9
+ output = "../../client"
10
+ binaryTargets = ["native", "linux-arm64-openssl-1.1.x"]
11
+ }
12
+
13
+ datasource db {
14
+ provider = "postgresql"
15
+ url = env("DATABASE_URL")
16
+ }
@@ -0,0 +1,21 @@
1
+ model Suggestion {
2
+ id String @id @default(uuid())
3
+ interview_id String?
4
+ transcript_id String? @unique // ✅ ensures one-to-one
5
+ organisation_id String
6
+ suggestion String
7
+ question String?
8
+ created_at DateTime @default(now())
9
+ updated_at DateTime @updatedAt
10
+ created_by String
11
+ updated_by String
12
+ is_active Boolean @default(true)
13
+
14
+ // Relations
15
+ interview Interview? @relation(fields: [interview_id], references: [id], onDelete: SetNull)
16
+ transcripts Transcript[]
17
+ organisation Organisation @relation(fields: [organisation_id], references: [id], onDelete: Cascade)
18
+
19
+ @@index([interview_id])
20
+ @@index([transcript_id])
21
+ }
@@ -0,0 +1,26 @@
1
+ model Transcript {
2
+ id String @id @default(uuid())
3
+ interview_id String?
4
+ suggestion_id String?
5
+ intermediate_feedback_id String?
6
+ job_description_id String?
7
+ interviewer_timestamp DateTime?
8
+ candidate_timestamp DateTime?
9
+ interviewer String
10
+ candidate String
11
+ order_no Int @default(autoincrement())
12
+ created_at DateTime @default(now())
13
+ updated_at DateTime @updatedAt
14
+ created_by String
15
+ updated_by String
16
+ is_active Boolean @default(true)
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)
22
+
23
+ @@unique([interview_id, order_no])
24
+ @@index([interview_id])
25
+ @@index([job_description_id])
26
+ }
@@ -0,0 +1,68 @@
1
+ enum FirstLoginStatus {
2
+ PENDING
3
+ COMPLETED
4
+ }
5
+
6
+ model User {
7
+ id String @id @default(uuid())
8
+ email String @unique
9
+ password String
10
+ role_id String
11
+ role UserRole @relation(fields: [role_id], references: [id], onDelete: Restrict, onUpdate: Cascade)
12
+ // Back-relations are defined from Resume side via user_id
13
+ google_id String? @unique
14
+ refresh_token String?
15
+ created_at DateTime @default(now())
16
+ updated_at DateTime @updatedAt
17
+ created_by String
18
+ updated_by String
19
+ is_active Boolean @default(true)
20
+ is_self_registered Boolean @default(true)
21
+ permission_id String? @unique
22
+ permission Permission? @relation(fields: [permission_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
23
+ organisation_id String?
24
+ organisation Organisation? @relation(fields: [organisation_id], references: [id], onDelete: SetNull, onUpdate: Cascade)
25
+ applications Application[]
26
+ resume Resume[]
27
+ candidate_profile CandidateProfile?
28
+ user_profile UserProfile?
29
+ job_description JobDescription[]
30
+ hiring_manager_job_descriptions JobDescription[] @relation("HiringManager")
31
+ approvals Approval[]
32
+ panelist Panelist?
33
+ sent_messages Message[] @relation("Sent Messages")
34
+ received_messages Message[] @relation("Received Messages")
35
+ profile_created Boolean
36
+ first_login_status FirstLoginStatus @default(PENDING)
37
+ // Back-relations for interviews (optional but recommended for clarity)
38
+ candidate_interviews Interview[] @relation("CandidateInterviews")
39
+ interviewer_interviews Interview[] @relation("InterviewerInterviews")
40
+ assessment_results Assessment[]
41
+ candidate_assessments Assessment[] @relation("CandidateAssessments")
42
+ reviewer_assessments Assessment[] @relation("ReviewerAssessments")
43
+ candidateResponses CandidateQuestionResponse[]
44
+ questions Question[]
45
+ ongoing_evaluations OngoingEvaluation[] // optional one-to-many
46
+ actions Action[]
47
+ calendly Calendly?
48
+ google Google?
49
+
50
+ name String?
51
+ phone String?
52
+ description String?
53
+ date_of_birth DateTime?
54
+ designation String?
55
+ location String?
56
+ salary String?
57
+ work_experience Json?
58
+ education Json?
59
+ notice_period String?
60
+ gender String?
61
+ ethnicity String?
62
+ veteran_status String?
63
+ disability_status String?
64
+
65
+ @@index([role_id])
66
+ @@index([permission_id])
67
+ @@index([organisation_id])
68
+ }
@@ -0,0 +1,15 @@
1
+ model UserProfile {
2
+ id String @id @default(uuid())
3
+ created_at DateTime @default(now())
4
+ updated_at DateTime @updatedAt
5
+ name String
6
+ phone String
7
+ description String
8
+ date_of_birth String
9
+ designation String
10
+ is_active Boolean @default(true)
11
+ user User? @relation(fields: [user_id], references: [id])
12
+ user_id String? @unique
13
+
14
+ work_experience Json?
15
+ }