@hirelink/database-prisma 1.0.3 ā 1.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.
- package/.github/workflows/github_publish.yml +63 -0
- package/package.json +7 -5
- package/prisma/migrations/20250219053800_initial_migration/migration.sql +103 -0
- package/prisma/migrations/20250225121028_user_table_password_hash_column_removed/migration.sql +8 -0
- package/prisma/migrations/20250325050646_new_table_added/migration.sql +157 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema.prisma +139 -2
@@ -0,0 +1,63 @@
|
|
1
|
+
##############################################################
|
2
|
+
# Description: Add npm packages to Github package repository #
|
3
|
+
# Author: Ubaidullah Khan #
|
4
|
+
# Organization: Turka Tech #
|
5
|
+
##############################################################
|
6
|
+
name: Publish Package
|
7
|
+
|
8
|
+
on:
|
9
|
+
push:
|
10
|
+
branches: [main] # Trigger on push to main
|
11
|
+
paths-ignore:
|
12
|
+
- 'README.md'
|
13
|
+
|
14
|
+
permissions:
|
15
|
+
contents: write
|
16
|
+
packages: write
|
17
|
+
|
18
|
+
jobs:
|
19
|
+
publish:
|
20
|
+
runs-on: ubuntu-latest
|
21
|
+
steps:
|
22
|
+
- name: Checkout code
|
23
|
+
uses: actions/checkout@v4
|
24
|
+
|
25
|
+
- name: Set up Node.js
|
26
|
+
uses: actions/setup-node@v4
|
27
|
+
with:
|
28
|
+
node-version: 20
|
29
|
+
registry-url: https://npm.pkg.github.com/
|
30
|
+
scope: "@hire-link"
|
31
|
+
|
32
|
+
- name: Install dependencies
|
33
|
+
run: npm ci
|
34
|
+
|
35
|
+
- name: Generate Prisma Client
|
36
|
+
run: npm run prisma:generate
|
37
|
+
|
38
|
+
- name: Auto Increment Version
|
39
|
+
run: |
|
40
|
+
git config --global user.name "github-actions[bot]"
|
41
|
+
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
42
|
+
|
43
|
+
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
|
44
|
+
npm version patch -m "chore(release): bump version to %s"
|
45
|
+
|
46
|
+
# Authenticate and push the commit
|
47
|
+
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git
|
48
|
+
git push origin $BRANCH_NAME --follow-tags
|
49
|
+
env:
|
50
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
51
|
+
|
52
|
+
- name: Publish to GitHub Packages
|
53
|
+
env:
|
54
|
+
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
55
|
+
run: npm publish
|
56
|
+
|
57
|
+
#- name: Notify Slack on New Package Version
|
58
|
+
##if: env.NEW_VERSION_PUBLISHED == 'true'
|
59
|
+
#uses: rtCamp/action-slack-notify@v2
|
60
|
+
#env:
|
61
|
+
#SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
|
62
|
+
#SLACK_MESSAGE: "š *New Package Published!*\nš¦ Package: `${{ env.PACKAGE_NAME }}@${{ env.PACKAGE_VERSION }}`\nš Check it out: https://github.com/${{ github.repository }}/packages"
|
63
|
+
#SLACK_COLOR: "#36a64f"
|
package/package.json
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
{
|
2
2
|
"name": "@hirelink/database-prisma",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.1.1",
|
4
4
|
"description": "A Prisma-based database package for Hirelink applications.",
|
5
5
|
"main": "index.js",
|
6
6
|
"scripts": {
|
7
|
-
"
|
8
|
-
"prisma:
|
9
|
-
"prisma:migrate:deploy": "npx prisma migrate deploy"
|
7
|
+
"build": "echo 'No build step required'",
|
8
|
+
"prisma:generate": "npx prisma generate"
|
10
9
|
},
|
11
10
|
"keywords": [
|
12
11
|
"prisma",
|
13
12
|
"database",
|
14
13
|
"hirelink"
|
15
14
|
],
|
15
|
+
"publishConfig": {
|
16
|
+
"access": "public"
|
17
|
+
},
|
16
18
|
"repository": {
|
17
19
|
"type": "git",
|
18
20
|
"url": "https://github.com/yourusername/your-repo.git"
|
@@ -25,4 +27,4 @@
|
|
25
27
|
"devDependencies": {
|
26
28
|
"prisma": "^6.3.1"
|
27
29
|
}
|
28
|
-
}
|
30
|
+
}
|
@@ -0,0 +1,103 @@
|
|
1
|
+
-- CreateEnum
|
2
|
+
CREATE TYPE "Role" AS ENUM ('admin', 'hr');
|
3
|
+
|
4
|
+
-- CreateEnum
|
5
|
+
CREATE TYPE "UserStatus" AS ENUM ('active', 'inactive', 'locked');
|
6
|
+
|
7
|
+
-- CreateEnum
|
8
|
+
CREATE TYPE "HrUserStatus" AS ENUM ('active', 'initiated', 'disabled');
|
9
|
+
|
10
|
+
-- CreateTable
|
11
|
+
CREATE TABLE "User" (
|
12
|
+
"id" TEXT NOT NULL,
|
13
|
+
"email" TEXT NOT NULL,
|
14
|
+
"first_name" TEXT,
|
15
|
+
"last_name" TEXT,
|
16
|
+
"password_hash" TEXT NOT NULL,
|
17
|
+
"role" "Role" NOT NULL,
|
18
|
+
"status" "UserStatus" NOT NULL DEFAULT 'active',
|
19
|
+
"created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP,
|
20
|
+
"updated_at" TIMESTAMP(3),
|
21
|
+
|
22
|
+
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
23
|
+
);
|
24
|
+
|
25
|
+
-- CreateTable
|
26
|
+
CREATE TABLE "Organization" (
|
27
|
+
"org_id" TEXT NOT NULL,
|
28
|
+
"legal_name" TEXT NOT NULL,
|
29
|
+
"display_name" TEXT,
|
30
|
+
"gst_number" TEXT,
|
31
|
+
"address_line_1" TEXT,
|
32
|
+
"address_line_2" TEXT,
|
33
|
+
"address_line_3" TEXT,
|
34
|
+
"city" TEXT,
|
35
|
+
"pincode" TEXT,
|
36
|
+
"state" TEXT,
|
37
|
+
"terms_accepted" BOOLEAN NOT NULL DEFAULT false,
|
38
|
+
"created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP,
|
39
|
+
"updated_at" TIMESTAMP(3),
|
40
|
+
|
41
|
+
CONSTRAINT "Organization_pkey" PRIMARY KEY ("org_id")
|
42
|
+
);
|
43
|
+
|
44
|
+
-- CreateTable
|
45
|
+
CREATE TABLE "HrUser" (
|
46
|
+
"hr_user_id" TEXT NOT NULL,
|
47
|
+
"org_id" TEXT NOT NULL,
|
48
|
+
"user_id" TEXT NOT NULL,
|
49
|
+
"status" "HrUserStatus" NOT NULL DEFAULT 'initiated',
|
50
|
+
"created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP,
|
51
|
+
"updated_at" TIMESTAMP(3),
|
52
|
+
|
53
|
+
CONSTRAINT "HrUser_pkey" PRIMARY KEY ("hr_user_id")
|
54
|
+
);
|
55
|
+
|
56
|
+
-- CreateTable
|
57
|
+
CREATE TABLE "OnboardingDetail" (
|
58
|
+
"onboarding_id" TEXT NOT NULL,
|
59
|
+
"org_id" TEXT NOT NULL,
|
60
|
+
"admin_user_id" TEXT NOT NULL,
|
61
|
+
"hr_emails" TEXT,
|
62
|
+
"default_list" TEXT,
|
63
|
+
"documents" JSONB,
|
64
|
+
"created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP,
|
65
|
+
"updated_at" TIMESTAMP(3),
|
66
|
+
|
67
|
+
CONSTRAINT "OnboardingDetail_pkey" PRIMARY KEY ("onboarding_id")
|
68
|
+
);
|
69
|
+
|
70
|
+
-- CreateTable
|
71
|
+
CREATE TABLE "Document" (
|
72
|
+
"doc_id" TEXT NOT NULL,
|
73
|
+
"org_id" TEXT NOT NULL,
|
74
|
+
"doc_name" TEXT NOT NULL,
|
75
|
+
"mandatory" BOOLEAN NOT NULL DEFAULT false,
|
76
|
+
"optional" BOOLEAN NOT NULL DEFAULT false,
|
77
|
+
"custom" BOOLEAN NOT NULL DEFAULT false,
|
78
|
+
"created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP,
|
79
|
+
"updated_at" TIMESTAMP(3),
|
80
|
+
|
81
|
+
CONSTRAINT "Document_pkey" PRIMARY KEY ("doc_id")
|
82
|
+
);
|
83
|
+
|
84
|
+
-- CreateIndex
|
85
|
+
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
86
|
+
|
87
|
+
-- CreateIndex
|
88
|
+
CREATE UNIQUE INDEX "Organization_gst_number_key" ON "Organization"("gst_number");
|
89
|
+
|
90
|
+
-- AddForeignKey
|
91
|
+
ALTER TABLE "HrUser" ADD CONSTRAINT "HrUser_org_id_fkey" FOREIGN KEY ("org_id") REFERENCES "Organization"("org_id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
92
|
+
|
93
|
+
-- AddForeignKey
|
94
|
+
ALTER TABLE "HrUser" ADD CONSTRAINT "HrUser_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
95
|
+
|
96
|
+
-- AddForeignKey
|
97
|
+
ALTER TABLE "OnboardingDetail" ADD CONSTRAINT "OnboardingDetail_org_id_fkey" FOREIGN KEY ("org_id") REFERENCES "Organization"("org_id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
98
|
+
|
99
|
+
-- AddForeignKey
|
100
|
+
ALTER TABLE "OnboardingDetail" ADD CONSTRAINT "OnboardingDetail_admin_user_id_fkey" FOREIGN KEY ("admin_user_id") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
101
|
+
|
102
|
+
-- AddForeignKey
|
103
|
+
ALTER TABLE "Document" ADD CONSTRAINT "Document_org_id_fkey" FOREIGN KEY ("org_id") REFERENCES "Organization"("org_id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
@@ -0,0 +1,157 @@
|
|
1
|
+
-- CreateEnum
|
2
|
+
CREATE TYPE "OtpStatus" AS ENUM ('Pending', 'Verified', 'Expired');
|
3
|
+
|
4
|
+
-- CreateEnum
|
5
|
+
CREATE TYPE "PasswordResetStatus" AS ENUM ('Pending', 'Used', 'Expired');
|
6
|
+
|
7
|
+
-- CreateEnum
|
8
|
+
CREATE TYPE "VerificationStatus" AS ENUM ('Pending', 'InProgress', 'Verified', 'Rejected');
|
9
|
+
|
10
|
+
-- CreateEnum
|
11
|
+
CREATE TYPE "HirelinkStatus" AS ENUM ('Active', 'Inactive');
|
12
|
+
|
13
|
+
-- CreateEnum
|
14
|
+
CREATE TYPE "NotificationStatus" AS ENUM ('Unread', 'Read');
|
15
|
+
|
16
|
+
-- AlterEnum
|
17
|
+
ALTER TYPE "Role" ADD VALUE 'candidate';
|
18
|
+
|
19
|
+
-- CreateTable
|
20
|
+
CREATE TABLE "PolicyMaster" (
|
21
|
+
"id" TEXT NOT NULL,
|
22
|
+
"document_name" TEXT NOT NULL,
|
23
|
+
"default_option" TEXT NOT NULL,
|
24
|
+
"additional_option" TEXT NOT NULL,
|
25
|
+
"created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP,
|
26
|
+
"updated_at" TIMESTAMP(3),
|
27
|
+
"org_id" TEXT NOT NULL,
|
28
|
+
"created_by" TEXT NOT NULL,
|
29
|
+
"active" BOOLEAN NOT NULL DEFAULT true,
|
30
|
+
|
31
|
+
CONSTRAINT "PolicyMaster_pkey" PRIMARY KEY ("id")
|
32
|
+
);
|
33
|
+
|
34
|
+
-- CreateTable
|
35
|
+
CREATE TABLE "CandidateDocument" (
|
36
|
+
"doc_id" TEXT NOT NULL,
|
37
|
+
"doc_name" TEXT NOT NULL,
|
38
|
+
"doc_type" TEXT NOT NULL,
|
39
|
+
"status" TEXT NOT NULL,
|
40
|
+
"uploaded_at" TEXT NOT NULL,
|
41
|
+
"user_id" TEXT NOT NULL,
|
42
|
+
"created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP,
|
43
|
+
"updated_at" TIMESTAMP(3),
|
44
|
+
|
45
|
+
CONSTRAINT "CandidateDocument_pkey" PRIMARY KEY ("doc_id")
|
46
|
+
);
|
47
|
+
|
48
|
+
-- CreateTable
|
49
|
+
CREATE TABLE "Session" (
|
50
|
+
"id" TEXT NOT NULL,
|
51
|
+
"user_id" TEXT NOT NULL,
|
52
|
+
"token" TEXT NOT NULL,
|
53
|
+
"expires_at" TIMESTAMP(3) NOT NULL,
|
54
|
+
|
55
|
+
CONSTRAINT "Session_pkey" PRIMARY KEY ("id")
|
56
|
+
);
|
57
|
+
|
58
|
+
-- CreateTable
|
59
|
+
CREATE TABLE "OtpRequest" (
|
60
|
+
"id" TEXT NOT NULL,
|
61
|
+
"user_id" TEXT NOT NULL,
|
62
|
+
"otp_code" VARCHAR(6) NOT NULL,
|
63
|
+
"status" "OtpStatus" NOT NULL,
|
64
|
+
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
65
|
+
"expires_at" TIMESTAMP(3) NOT NULL,
|
66
|
+
|
67
|
+
CONSTRAINT "OtpRequest_pkey" PRIMARY KEY ("id")
|
68
|
+
);
|
69
|
+
|
70
|
+
-- CreateTable
|
71
|
+
CREATE TABLE "PasswordResetRequest" (
|
72
|
+
"id" TEXT NOT NULL,
|
73
|
+
"user_id" TEXT NOT NULL,
|
74
|
+
"reset_token" VARCHAR(256) NOT NULL,
|
75
|
+
"status" "PasswordResetStatus" NOT NULL,
|
76
|
+
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
77
|
+
"expires_at" TIMESTAMP(3) NOT NULL,
|
78
|
+
|
79
|
+
CONSTRAINT "PasswordResetRequest_pkey" PRIMARY KEY ("id")
|
80
|
+
);
|
81
|
+
|
82
|
+
-- CreateTable
|
83
|
+
CREATE TABLE "VerificationRequest" (
|
84
|
+
"id" TEXT NOT NULL,
|
85
|
+
"user_id" TEXT NOT NULL,
|
86
|
+
"status" "VerificationStatus" NOT NULL,
|
87
|
+
"requested_at" TIMESTAMP(3) NOT NULL,
|
88
|
+
"completed_at" TIMESTAMP(3),
|
89
|
+
|
90
|
+
CONSTRAINT "VerificationRequest_pkey" PRIMARY KEY ("id")
|
91
|
+
);
|
92
|
+
|
93
|
+
-- CreateTable
|
94
|
+
CREATE TABLE "HirelinkId" (
|
95
|
+
"id" TEXT NOT NULL,
|
96
|
+
"user_id" TEXT NOT NULL,
|
97
|
+
"hirelink_url" TEXT NOT NULL,
|
98
|
+
"reference_name" VARCHAR(32) NOT NULL,
|
99
|
+
"status" "HirelinkStatus" NOT NULL,
|
100
|
+
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
101
|
+
|
102
|
+
CONSTRAINT "HirelinkId_pkey" PRIMARY KEY ("id")
|
103
|
+
);
|
104
|
+
|
105
|
+
-- CreateTable
|
106
|
+
CREATE TABLE "Notification" (
|
107
|
+
"id" TEXT NOT NULL,
|
108
|
+
"user_id" TEXT NOT NULL,
|
109
|
+
"message" TEXT NOT NULL,
|
110
|
+
"status" "NotificationStatus" NOT NULL,
|
111
|
+
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
112
|
+
|
113
|
+
CONSTRAINT "Notification_pkey" PRIMARY KEY ("id")
|
114
|
+
);
|
115
|
+
|
116
|
+
-- CreateTable
|
117
|
+
CREATE TABLE "Log" (
|
118
|
+
"id" TEXT NOT NULL,
|
119
|
+
"user_id" TEXT NOT NULL,
|
120
|
+
"action" TEXT NOT NULL,
|
121
|
+
"timestamp" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
122
|
+
|
123
|
+
CONSTRAINT "Log_pkey" PRIMARY KEY ("id")
|
124
|
+
);
|
125
|
+
|
126
|
+
-- CreateIndex
|
127
|
+
CREATE UNIQUE INDEX "PasswordResetRequest_reset_token_key" ON "PasswordResetRequest"("reset_token");
|
128
|
+
|
129
|
+
-- CreateIndex
|
130
|
+
CREATE UNIQUE INDEX "HirelinkId_hirelink_url_key" ON "HirelinkId"("hirelink_url");
|
131
|
+
|
132
|
+
-- AddForeignKey
|
133
|
+
ALTER TABLE "PolicyMaster" ADD CONSTRAINT "PolicyMaster_org_id_fkey" FOREIGN KEY ("org_id") REFERENCES "Organization"("org_id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
134
|
+
|
135
|
+
-- AddForeignKey
|
136
|
+
ALTER TABLE "CandidateDocument" ADD CONSTRAINT "CandidateDocument_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
137
|
+
|
138
|
+
-- AddForeignKey
|
139
|
+
ALTER TABLE "Session" ADD CONSTRAINT "Session_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
140
|
+
|
141
|
+
-- AddForeignKey
|
142
|
+
ALTER TABLE "OtpRequest" ADD CONSTRAINT "OtpRequest_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
143
|
+
|
144
|
+
-- AddForeignKey
|
145
|
+
ALTER TABLE "PasswordResetRequest" ADD CONSTRAINT "PasswordResetRequest_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
146
|
+
|
147
|
+
-- AddForeignKey
|
148
|
+
ALTER TABLE "VerificationRequest" ADD CONSTRAINT "VerificationRequest_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
149
|
+
|
150
|
+
-- AddForeignKey
|
151
|
+
ALTER TABLE "HirelinkId" ADD CONSTRAINT "HirelinkId_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
152
|
+
|
153
|
+
-- AddForeignKey
|
154
|
+
ALTER TABLE "Notification" ADD CONSTRAINT "Notification_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
155
|
+
|
156
|
+
-- AddForeignKey
|
157
|
+
ALTER TABLE "Log" ADD CONSTRAINT "Log_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
package/prisma/schema.prisma
CHANGED
@@ -17,13 +17,22 @@ model User {
|
|
17
17
|
created_at DateTime? @default(now())
|
18
18
|
updated_at DateTime? @updatedAt
|
19
19
|
|
20
|
-
hr_users
|
21
|
-
onboarding_details
|
20
|
+
hr_users HrUser[]
|
21
|
+
onboarding_details OnboardingDetail[]
|
22
|
+
candidate_documents CandidateDocument[]
|
23
|
+
sessions Session[]
|
24
|
+
otp_requests OtpRequest[]
|
25
|
+
verification_requests VerificationRequest[]
|
26
|
+
password_reset_requests PasswordResetRequest[]
|
27
|
+
notifications Notification[]
|
28
|
+
hirelink_ids HirelinkId[]
|
29
|
+
logs Log[]
|
22
30
|
}
|
23
31
|
|
24
32
|
enum Role {
|
25
33
|
admin
|
26
34
|
hr
|
35
|
+
candidate
|
27
36
|
}
|
28
37
|
|
29
38
|
enum UserStatus {
|
@@ -50,6 +59,7 @@ model Organization {
|
|
50
59
|
hr_users HrUser[]
|
51
60
|
onboarding_details OnboardingDetail[]
|
52
61
|
documents Document[]
|
62
|
+
policy_masters PolicyMaster[]
|
53
63
|
}
|
54
64
|
|
55
65
|
model HrUser {
|
@@ -96,3 +106,130 @@ model Document {
|
|
96
106
|
|
97
107
|
organization Organization @relation(fields: [org_id], references: [org_id])
|
98
108
|
}
|
109
|
+
|
110
|
+
model PolicyMaster {
|
111
|
+
id String @id
|
112
|
+
document_name String
|
113
|
+
default_option String
|
114
|
+
additional_option String
|
115
|
+
created_at DateTime? @default(now())
|
116
|
+
updated_at DateTime? @updatedAt
|
117
|
+
org_id String
|
118
|
+
created_by String
|
119
|
+
active Boolean @default(true)
|
120
|
+
|
121
|
+
organization Organization @relation(fields: [org_id], references: [org_id])
|
122
|
+
}
|
123
|
+
|
124
|
+
model CandidateDocument {
|
125
|
+
doc_id String @id
|
126
|
+
doc_name String
|
127
|
+
doc_type String
|
128
|
+
status String
|
129
|
+
uploaded_at String
|
130
|
+
user_id String
|
131
|
+
created_at DateTime? @default(now())
|
132
|
+
updated_at DateTime? @updatedAt
|
133
|
+
|
134
|
+
user User @relation(fields: [user_id], references: [id])
|
135
|
+
}
|
136
|
+
|
137
|
+
model Session {
|
138
|
+
id String @id @default(uuid())
|
139
|
+
user_id String
|
140
|
+
token String @db.Text
|
141
|
+
expires_at DateTime
|
142
|
+
|
143
|
+
user User @relation(fields: [user_id], references: [id])
|
144
|
+
}
|
145
|
+
|
146
|
+
model OtpRequest {
|
147
|
+
id String @id @default(uuid())
|
148
|
+
user_id String
|
149
|
+
otp_code String @db.VarChar(6)
|
150
|
+
status OtpStatus
|
151
|
+
created_at DateTime @default(now())
|
152
|
+
expires_at DateTime
|
153
|
+
|
154
|
+
user User @relation(fields: [user_id], references: [id])
|
155
|
+
}
|
156
|
+
|
157
|
+
enum OtpStatus {
|
158
|
+
Pending
|
159
|
+
Verified
|
160
|
+
Expired
|
161
|
+
}
|
162
|
+
|
163
|
+
model PasswordResetRequest {
|
164
|
+
id String @id @default(uuid())
|
165
|
+
user_id String
|
166
|
+
reset_token String @unique @db.VarChar(256)
|
167
|
+
status PasswordResetStatus
|
168
|
+
created_at DateTime @default(now())
|
169
|
+
expires_at DateTime
|
170
|
+
|
171
|
+
user User @relation(fields: [user_id], references: [id])
|
172
|
+
}
|
173
|
+
|
174
|
+
enum PasswordResetStatus {
|
175
|
+
Pending
|
176
|
+
Used
|
177
|
+
Expired
|
178
|
+
}
|
179
|
+
|
180
|
+
model VerificationRequest {
|
181
|
+
id String @id @default(uuid())
|
182
|
+
user_id String
|
183
|
+
status VerificationStatus
|
184
|
+
requested_at DateTime
|
185
|
+
completed_at DateTime?
|
186
|
+
|
187
|
+
user User @relation(fields: [user_id], references: [id])
|
188
|
+
}
|
189
|
+
|
190
|
+
enum VerificationStatus {
|
191
|
+
Pending
|
192
|
+
InProgress
|
193
|
+
Verified
|
194
|
+
Rejected
|
195
|
+
}
|
196
|
+
|
197
|
+
model HirelinkId {
|
198
|
+
id String @id @default(uuid())
|
199
|
+
user_id String
|
200
|
+
hirelink_url String @unique @db.Text
|
201
|
+
reference_name String @db.VarChar(32)
|
202
|
+
status HirelinkStatus
|
203
|
+
created_at DateTime @default(now())
|
204
|
+
|
205
|
+
user User @relation(fields: [user_id], references: [id])
|
206
|
+
}
|
207
|
+
|
208
|
+
enum HirelinkStatus {
|
209
|
+
Active
|
210
|
+
Inactive
|
211
|
+
}
|
212
|
+
|
213
|
+
model Notification {
|
214
|
+
id String @id @default(uuid())
|
215
|
+
user_id String
|
216
|
+
message String @db.Text
|
217
|
+
status NotificationStatus
|
218
|
+
created_at DateTime @default(now())
|
219
|
+
|
220
|
+
user User @relation(fields: [user_id], references: [id])
|
221
|
+
}
|
222
|
+
|
223
|
+
enum NotificationStatus {
|
224
|
+
Unread
|
225
|
+
Read
|
226
|
+
}
|
227
|
+
|
228
|
+
model Log {
|
229
|
+
id String @id @default(uuid())
|
230
|
+
user_id String
|
231
|
+
action String @db.Text
|
232
|
+
timestamp DateTime @default(now())
|
233
|
+
|
234
|
+
user User @relation(fields: [user_id], references: [id])
|
235
|
+
}
|