@hirelink/database-prisma 1.0.3 → 1.1.2

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.
@@ -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,21 @@
1
1
  {
2
2
  "name": "@hirelink/database-prisma",
3
- "version": "1.0.3",
3
+ "version": "1.1.2",
4
4
  "description": "A Prisma-based database package for Hirelink applications.",
5
5
  "main": "index.js",
6
6
  "scripts": {
7
- "prisma:generate": "npx prisma format && npx prisma generate",
8
- "prisma:migrate:dev": "npx prisma migrate dev",
9
- "prisma:migrate:deploy": "npx prisma migrate deploy"
7
+ "build": "echo 'No build step required'",
8
+ "prisma:generate": "npx prisma generate",
9
+ "prisma:migrate": "npx prisma migrate dev"
10
10
  },
11
11
  "keywords": [
12
12
  "prisma",
13
13
  "database",
14
14
  "hirelink"
15
15
  ],
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
16
19
  "repository": {
17
20
  "type": "git",
18
21
  "url": "https://github.com/yourusername/your-repo.git"
@@ -25,4 +28,4 @@
25
28
  "devDependencies": {
26
29
  "prisma": "^6.3.1"
27
30
  }
28
- }
31
+ }
@@ -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,8 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - You are about to drop the column `password_hash` on the `User` table. All the data in the column will be lost.
5
+
6
+ */
7
+ -- AlterTable
8
+ ALTER TABLE "User" DROP COLUMN "password_hash";
@@ -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;
@@ -0,0 +1,5 @@
1
+ -- CreateEnum
2
+ CREATE TYPE "Work_experience" AS ENUM ('experience', 'fresher');
3
+
4
+ -- AlterTable
5
+ ALTER TABLE "User" ADD COLUMN "work_experience" "Work_experience";
@@ -0,0 +1,3 @@
1
+ # Please do not edit this file manually
2
+ # It should be added in your version-control system (e.g., Git)
3
+ provider = "postgresql"
@@ -16,14 +16,29 @@ model User {
16
16
  status UserStatus @default(active)
17
17
  created_at DateTime? @default(now())
18
18
  updated_at DateTime? @updatedAt
19
+ work_experience Work_experience?
19
20
 
20
- hr_users HrUser[]
21
- onboarding_details OnboardingDetail[]
21
+ hr_users HrUser[]
22
+ onboarding_details OnboardingDetail[]
23
+ candidate_documents CandidateDocument[]
24
+ sessions Session[]
25
+ otp_requests OtpRequest[]
26
+ verification_requests VerificationRequest[]
27
+ password_reset_requests PasswordResetRequest[]
28
+ notifications Notification[]
29
+ hirelink_ids HirelinkId[]
30
+ logs Log[]
22
31
  }
23
32
 
24
33
  enum Role {
25
34
  admin
26
35
  hr
36
+ candidate
37
+ }
38
+
39
+ enum Work_experience {
40
+ experience
41
+ fresher
27
42
  }
28
43
 
29
44
  enum UserStatus {
@@ -50,6 +65,7 @@ model Organization {
50
65
  hr_users HrUser[]
51
66
  onboarding_details OnboardingDetail[]
52
67
  documents Document[]
68
+ policy_masters PolicyMaster[]
53
69
  }
54
70
 
55
71
  model HrUser {
@@ -96,3 +112,130 @@ model Document {
96
112
 
97
113
  organization Organization @relation(fields: [org_id], references: [org_id])
98
114
  }
115
+
116
+ model PolicyMaster {
117
+ id String @id
118
+ document_name String
119
+ default_option String
120
+ additional_option String
121
+ created_at DateTime? @default(now())
122
+ updated_at DateTime? @updatedAt
123
+ org_id String
124
+ created_by String
125
+ active Boolean @default(true)
126
+
127
+ organization Organization @relation(fields: [org_id], references: [org_id])
128
+ }
129
+
130
+ model CandidateDocument {
131
+ doc_id String @id
132
+ doc_name String
133
+ doc_type String
134
+ status String
135
+ uploaded_at String
136
+ user_id String
137
+ created_at DateTime? @default(now())
138
+ updated_at DateTime? @updatedAt
139
+
140
+ user User @relation(fields: [user_id], references: [id])
141
+ }
142
+
143
+ model Session {
144
+ id String @id @default(uuid())
145
+ user_id String
146
+ token String @db.Text
147
+ expires_at DateTime
148
+
149
+ user User @relation(fields: [user_id], references: [id])
150
+ }
151
+
152
+ model OtpRequest {
153
+ id String @id @default(uuid())
154
+ user_id String
155
+ otp_code String @db.VarChar(6)
156
+ status OtpStatus
157
+ created_at DateTime @default(now())
158
+ expires_at DateTime
159
+
160
+ user User @relation(fields: [user_id], references: [id])
161
+ }
162
+
163
+ enum OtpStatus {
164
+ Pending
165
+ Verified
166
+ Expired
167
+ }
168
+
169
+ model PasswordResetRequest {
170
+ id String @id @default(uuid())
171
+ user_id String
172
+ reset_token String @unique @db.VarChar(256)
173
+ status PasswordResetStatus
174
+ created_at DateTime @default(now())
175
+ expires_at DateTime
176
+
177
+ user User @relation(fields: [user_id], references: [id])
178
+ }
179
+
180
+ enum PasswordResetStatus {
181
+ Pending
182
+ Used
183
+ Expired
184
+ }
185
+
186
+ model VerificationRequest {
187
+ id String @id @default(uuid())
188
+ user_id String
189
+ status VerificationStatus
190
+ requested_at DateTime
191
+ completed_at DateTime?
192
+
193
+ user User @relation(fields: [user_id], references: [id])
194
+ }
195
+
196
+ enum VerificationStatus {
197
+ Pending
198
+ InProgress
199
+ Verified
200
+ Rejected
201
+ }
202
+
203
+ model HirelinkId {
204
+ id String @id @default(uuid())
205
+ user_id String
206
+ hirelink_url String @unique @db.Text
207
+ reference_name String @db.VarChar(32)
208
+ status HirelinkStatus
209
+ created_at DateTime @default(now())
210
+
211
+ user User @relation(fields: [user_id], references: [id])
212
+ }
213
+
214
+ enum HirelinkStatus {
215
+ Active
216
+ Inactive
217
+ }
218
+
219
+ model Notification {
220
+ id String @id @default(uuid())
221
+ user_id String
222
+ message String @db.Text
223
+ status NotificationStatus
224
+ created_at DateTime @default(now())
225
+
226
+ user User @relation(fields: [user_id], references: [id])
227
+ }
228
+
229
+ enum NotificationStatus {
230
+ Unread
231
+ Read
232
+ }
233
+
234
+ model Log {
235
+ id String @id @default(uuid())
236
+ user_id String
237
+ action String @db.Text
238
+ timestamp DateTime @default(now())
239
+
240
+ user User @relation(fields: [user_id], references: [id])
241
+ }