@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.
@@ -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.0.3",
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
- "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"
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,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,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"
@@ -17,13 +17,22 @@ model User {
17
17
  created_at DateTime? @default(now())
18
18
  updated_at DateTime? @updatedAt
19
19
 
20
- hr_users HrUser[]
21
- onboarding_details OnboardingDetail[]
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
+ }