@adaptware/eagles-db 0.1.88 → 0.1.91
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/edge.js +10 -7
- package/client/index-browser.js +5 -2
- package/client/index.d.ts +184 -4
- package/client/index.js +10 -7
- package/client/package.json +1 -1
- package/client/schema.prisma +6 -0
- package/client/wasm.js +5 -2
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/prisma/.DS_Store +0 -0
- package/prisma/migrations/20260415120000_remove_job_profile_current_phase/migration.sql +2 -0
- package/prisma/migrations/20260422120000_add_integration_provider_zoom/migration.sql +2 -0
- package/prisma/migrations/20260422140000_add_zoom_meeting_tables/migration.sql +57 -0
- package/prisma/migrations/20260422180000_add_zoom_webhook_event/migration.sql +18 -0
- package/prisma/migrations/20260423140000_add_interview_platform/migration.sql +6 -0
- package/prisma/migrations/20260423150000_remove_interview_zoom_topic/migration.sql +2 -0
- package/prisma/migrations/20260423160000_zoom_meeting_uuid/migration.sql +4 -0
- package/prisma/migrations/20260424120000_auth_module_user_provider_unique/migration.sql +5 -0
- package/prisma/migrations/20260424130000_zoom_meeting_zoom_host_user_id/migration.sql +6 -0
- package/prisma/migrations/20260425100000_zoom_participant_user_enum/migration.sql +22 -0
- package/prisma/migrations/20260425110000_zoom_participant_zoom_id_required/migration.sql +13 -0
- package/prisma/migrations/20260425120000_zoom_participant_id_nullable/migration.sql +4 -0
- package/prisma/migrations/20260429140000_drop_evaluation_plan_job_order_unique/migration.sql +5 -0
- package/prisma/migrations/20260429180000_eval_plan_timeline_optional_ongoing_duration/migration.sql +15 -0
- package/prisma/migrations/20260430120000_drop_assessment_library_metadata_fields/migration.sql +8 -0
- package/prisma/migrations/20260430140000_drop_question_question_type/migration.sql +5 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema/assessment.prisma +4 -0
- package/prisma/schema/organisation.prisma +1 -0
- package/client/libquery_engine-darwin.dylib.node +0 -0
package/client/package.json
CHANGED
package/client/schema.prisma
CHANGED
|
@@ -180,10 +180,14 @@ model Assessment {
|
|
|
180
180
|
//data
|
|
181
181
|
score Float?
|
|
182
182
|
feedback Json?
|
|
183
|
+
// Scheduled Deadline Window
|
|
183
184
|
scheduled_start_time DateTime?
|
|
184
185
|
scheduled_end_time DateTime?
|
|
186
|
+
/// Actual Start and End Time
|
|
185
187
|
actual_start_time DateTime?
|
|
186
188
|
actual_end_time DateTime?
|
|
189
|
+
/// Attempt Expires At
|
|
190
|
+
attempt_expires_at DateTime?
|
|
187
191
|
/// Audit fields
|
|
188
192
|
created_at DateTime @default(now())
|
|
189
193
|
updated_at DateTime @updatedAt
|
|
@@ -640,6 +644,7 @@ enum IntegrationProvider {
|
|
|
640
644
|
GOOGLE
|
|
641
645
|
MICROSOFT
|
|
642
646
|
ZOOM
|
|
647
|
+
CALENDLY
|
|
643
648
|
}
|
|
644
649
|
|
|
645
650
|
enum IntegrationAuthType {
|
|
@@ -1129,6 +1134,7 @@ model Organisation {
|
|
|
1129
1134
|
integration_credentials IntegrationCredential[]
|
|
1130
1135
|
zoho_sync_mappings ZohoSyncMapping[]
|
|
1131
1136
|
assessments Assessment[]
|
|
1137
|
+
timezone String @default("Asia/Kolkata")
|
|
1132
1138
|
|
|
1133
1139
|
@@index([name])
|
|
1134
1140
|
}
|
package/client/wasm.js
CHANGED
|
@@ -225,6 +225,7 @@ exports.Prisma.AssessmentScalarFieldEnum = {
|
|
|
225
225
|
scheduled_end_time: 'scheduled_end_time',
|
|
226
226
|
actual_start_time: 'actual_start_time',
|
|
227
227
|
actual_end_time: 'actual_end_time',
|
|
228
|
+
attempt_expires_at: 'attempt_expires_at',
|
|
228
229
|
created_at: 'created_at',
|
|
229
230
|
updated_at: 'updated_at',
|
|
230
231
|
created_by: 'created_by',
|
|
@@ -713,7 +714,8 @@ exports.Prisma.OrganisationScalarFieldEnum = {
|
|
|
713
714
|
updated_by: 'updated_by',
|
|
714
715
|
is_active: 'is_active',
|
|
715
716
|
alias: 'alias',
|
|
716
|
-
logo: 'logo'
|
|
717
|
+
logo: 'logo',
|
|
718
|
+
timezone: 'timezone'
|
|
717
719
|
};
|
|
718
720
|
|
|
719
721
|
exports.Prisma.PermissionScalarFieldEnum = {
|
|
@@ -1057,7 +1059,8 @@ exports.IntegrationProvider = exports.$Enums.IntegrationProvider = {
|
|
|
1057
1059
|
LINKEDIN: 'LINKEDIN',
|
|
1058
1060
|
GOOGLE: 'GOOGLE',
|
|
1059
1061
|
MICROSOFT: 'MICROSOFT',
|
|
1060
|
-
ZOOM: 'ZOOM'
|
|
1062
|
+
ZOOM: 'ZOOM',
|
|
1063
|
+
CALENDLY: 'CALENDLY'
|
|
1061
1064
|
};
|
|
1062
1065
|
|
|
1063
1066
|
exports.IntegrationAuthType = exports.$Enums.IntegrationAuthType = {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { PrismaClient } from
|
|
1
|
+
import { PrismaClient } from '../client/index.js';
|
|
2
2
|
export declare const prisma: PrismaClient<{
|
|
3
|
-
log: ("error" | "
|
|
4
|
-
}, "error" | "
|
|
5
|
-
export type { PrismaClient } from
|
|
6
|
-
export * from
|
|
3
|
+
log: ("error" | "info" | "warn")[];
|
|
4
|
+
}, "error" | "info" | "warn", import("../client/runtime/library.js").DefaultArgs>;
|
|
5
|
+
export type { PrismaClient } from '../client/index.js';
|
|
6
|
+
export * from '../client/index.js';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,eAAO,MAAM,MAAM;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,eAAO,MAAM,MAAM;;iFAEjB,CAAC;AAGH,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,cAAc,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
import { PrismaClient } from
|
|
1
|
+
import { PrismaClient } from '../client/index.js';
|
|
2
2
|
// Never enable Prisma `query` logging — it prints full SQL to stdout.
|
|
3
3
|
export const prisma = new PrismaClient({
|
|
4
|
-
log:
|
|
5
|
-
? ["error", "warn"]
|
|
6
|
-
: ["error", "query"],
|
|
4
|
+
log: ['error', 'warn', 'info'],
|
|
7
5
|
});
|
|
8
6
|
// Export all Prisma types
|
|
9
|
-
export * from
|
|
7
|
+
export * from '../client/index.js';
|
|
10
8
|
// Graceful shutdown
|
|
11
|
-
process.on(
|
|
9
|
+
process.on('beforeExit', async () => {
|
|
12
10
|
await prisma.$disconnect();
|
|
13
11
|
});
|
|
14
|
-
process.on(
|
|
12
|
+
process.on('SIGINT', async () => {
|
|
15
13
|
await prisma.$disconnect();
|
|
16
14
|
process.exit(0);
|
|
17
15
|
});
|
|
18
|
-
process.on(
|
|
16
|
+
process.on('SIGTERM', async () => {
|
|
19
17
|
await prisma.$disconnect();
|
|
20
18
|
process.exit(0);
|
|
21
19
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,sEAAsE;AACtE,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;IACrC,GAAG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,sEAAsE;AACtE,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;IACrC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;CAC/B,CAAC,CAAC;AAKH,0BAA0B;AAC1B,cAAc,oBAAoB,CAAC;AAEnC,oBAAoB;AACpB,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;IAClC,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IAC9B,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;IAC/B,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
package/prisma/.DS_Store
ADDED
|
Binary file
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
-- CreateTable
|
|
2
|
+
CREATE TABLE "ZoomMeeting" (
|
|
3
|
+
"id" TEXT NOT NULL,
|
|
4
|
+
"interview_id" TEXT NOT NULL,
|
|
5
|
+
"zoom_meeting_id" TEXT NOT NULL,
|
|
6
|
+
"meeting_number" TEXT NOT NULL,
|
|
7
|
+
"join_url" TEXT NOT NULL,
|
|
8
|
+
"start_url" TEXT,
|
|
9
|
+
"password" TEXT,
|
|
10
|
+
"topic" TEXT,
|
|
11
|
+
"scheduled_start_time" TIMESTAMP(3),
|
|
12
|
+
"scheduled_end_time" TIMESTAMP(3),
|
|
13
|
+
"is_active" BOOLEAN NOT NULL DEFAULT true,
|
|
14
|
+
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
15
|
+
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
16
|
+
"created_by" TEXT NOT NULL,
|
|
17
|
+
"updated_by" TEXT NOT NULL,
|
|
18
|
+
|
|
19
|
+
CONSTRAINT "ZoomMeeting_pkey" PRIMARY KEY ("id")
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
-- CreateTable
|
|
23
|
+
CREATE TABLE "ZoomMeetingParticipant" (
|
|
24
|
+
"id" TEXT NOT NULL,
|
|
25
|
+
"zoom_meeting_row_id" TEXT NOT NULL,
|
|
26
|
+
"zoom_participant_id" TEXT,
|
|
27
|
+
"user_name" TEXT,
|
|
28
|
+
"user_email" TEXT,
|
|
29
|
+
"role" TEXT,
|
|
30
|
+
"join_time" TIMESTAMP(3),
|
|
31
|
+
"leave_time" TIMESTAMP(3),
|
|
32
|
+
"is_active" BOOLEAN NOT NULL DEFAULT true,
|
|
33
|
+
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
34
|
+
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
35
|
+
"created_by" TEXT NOT NULL,
|
|
36
|
+
"updated_by" TEXT NOT NULL,
|
|
37
|
+
|
|
38
|
+
CONSTRAINT "ZoomMeetingParticipant_pkey" PRIMARY KEY ("id")
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
-- CreateIndex
|
|
42
|
+
CREATE UNIQUE INDEX "ZoomMeeting_interview_id_key" ON "ZoomMeeting"("interview_id");
|
|
43
|
+
|
|
44
|
+
-- CreateIndex
|
|
45
|
+
CREATE INDEX "ZoomMeeting_interview_id_idx" ON "ZoomMeeting"("interview_id");
|
|
46
|
+
|
|
47
|
+
-- CreateIndex
|
|
48
|
+
CREATE INDEX "ZoomMeeting_zoom_meeting_id_idx" ON "ZoomMeeting"("zoom_meeting_id");
|
|
49
|
+
|
|
50
|
+
-- CreateIndex
|
|
51
|
+
CREATE INDEX "ZoomMeetingParticipant_zoom_meeting_row_id_idx" ON "ZoomMeetingParticipant"("zoom_meeting_row_id");
|
|
52
|
+
|
|
53
|
+
-- AddForeignKey
|
|
54
|
+
ALTER TABLE "ZoomMeeting" ADD CONSTRAINT "ZoomMeeting_interview_id_fkey" FOREIGN KEY ("interview_id") REFERENCES "Interview"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
55
|
+
|
|
56
|
+
-- AddForeignKey
|
|
57
|
+
ALTER TABLE "ZoomMeetingParticipant" ADD CONSTRAINT "ZoomMeetingParticipant_zoom_meeting_row_id_fkey" FOREIGN KEY ("zoom_meeting_row_id") REFERENCES "ZoomMeeting"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
-- CreateTable
|
|
2
|
+
CREATE TABLE "ZoomWebhookEvent" (
|
|
3
|
+
"id" TEXT NOT NULL,
|
|
4
|
+
"dedupe_key" TEXT NOT NULL,
|
|
5
|
+
"event" TEXT NOT NULL,
|
|
6
|
+
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
7
|
+
|
|
8
|
+
CONSTRAINT "ZoomWebhookEvent_pkey" PRIMARY KEY ("id")
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
-- CreateIndex
|
|
12
|
+
CREATE UNIQUE INDEX "ZoomWebhookEvent_dedupe_key_key" ON "ZoomWebhookEvent"("dedupe_key");
|
|
13
|
+
|
|
14
|
+
-- CreateIndex
|
|
15
|
+
CREATE INDEX "ZoomWebhookEvent_event_idx" ON "ZoomWebhookEvent"("event");
|
|
16
|
+
|
|
17
|
+
-- CreateIndex
|
|
18
|
+
CREATE INDEX "ZoomWebhookEvent_created_at_idx" ON "ZoomWebhookEvent"("created_at");
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
-- Zoom meeting instance UUID for RTMS `meeting.rtms_started` correlation (webhook `meeting_uuid`).
|
|
2
|
+
ALTER TABLE "ZoomMeeting" ADD COLUMN IF NOT EXISTS "zoom_meeting_uuid" TEXT;
|
|
3
|
+
|
|
4
|
+
CREATE INDEX IF NOT EXISTS "ZoomMeeting_zoom_meeting_uuid_idx" ON "ZoomMeeting"("zoom_meeting_uuid");
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
-- CreateEnum
|
|
2
|
+
CREATE TYPE "ZoomMeetingParticipantRole" AS ENUM ('CANDIDATE', 'INTERVIEWER');
|
|
3
|
+
|
|
4
|
+
-- Participant rows are re-derived on the next Zoom meeting upsert; old webhook denormalized rows are dropped.
|
|
5
|
+
TRUNCATE TABLE "ZoomMeetingParticipant";
|
|
6
|
+
|
|
7
|
+
-- AlterTable
|
|
8
|
+
ALTER TABLE "ZoomMeetingParticipant" DROP COLUMN "zoom_participant_id",
|
|
9
|
+
DROP COLUMN "user_name",
|
|
10
|
+
DROP COLUMN "user_email",
|
|
11
|
+
DROP COLUMN "join_time",
|
|
12
|
+
DROP COLUMN "leave_time",
|
|
13
|
+
DROP COLUMN "role";
|
|
14
|
+
|
|
15
|
+
ALTER TABLE "ZoomMeetingParticipant" ADD COLUMN "role" "ZoomMeetingParticipantRole" NOT NULL;
|
|
16
|
+
ALTER TABLE "ZoomMeetingParticipant" ADD COLUMN "user_id" TEXT NOT NULL;
|
|
17
|
+
|
|
18
|
+
-- AddForeignKey
|
|
19
|
+
ALTER TABLE "ZoomMeetingParticipant" ADD CONSTRAINT "ZoomMeetingParticipant_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
20
|
+
|
|
21
|
+
-- CreateIndex
|
|
22
|
+
CREATE INDEX "ZoomMeetingParticipant_user_id_idx" ON "ZoomMeetingParticipant"("user_id");
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
-- AlterTable
|
|
2
|
+
ALTER TABLE "ZoomMeetingParticipant" ADD COLUMN "zoom_participant_id" TEXT NOT NULL DEFAULT '';
|
|
3
|
+
|
|
4
|
+
UPDATE "ZoomMeetingParticipant" zmp
|
|
5
|
+
SET "zoom_participant_id" = COALESCE(NULLIF(TRIM(am."provider_account_id"), ''), '')
|
|
6
|
+
FROM "AuthModule" am
|
|
7
|
+
WHERE am."user_id" = zmp."user_id"
|
|
8
|
+
AND am."provider"::text = 'ZOOM'
|
|
9
|
+
AND am."is_active" = true;
|
|
10
|
+
|
|
11
|
+
ALTER TABLE "ZoomMeetingParticipant" ALTER COLUMN "zoom_participant_id" DROP DEFAULT;
|
|
12
|
+
|
|
13
|
+
CREATE INDEX "ZoomMeetingParticipant_zoom_participant_id_idx" ON "ZoomMeetingParticipant"("zoom_participant_id");
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
-- Optional: only present when that User has Zoom OAuth linked (typically interviewer; often unknown for candidate).
|
|
2
|
+
UPDATE "ZoomMeetingParticipant" SET "zoom_participant_id" = NULL WHERE "zoom_participant_id" = '';
|
|
3
|
+
|
|
4
|
+
ALTER TABLE "ZoomMeetingParticipant" ALTER COLUMN "zoom_participant_id" DROP NOT NULL;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
-- DropUnique: allows reorder/swap without a two-phase order_no dance; ordering is enforced in app logic.
|
|
2
|
+
ALTER TABLE "EvaluationPlan" DROP CONSTRAINT IF EXISTS "EvaluationPlan_job_description_id_order_no_key";
|
|
3
|
+
|
|
4
|
+
-- Non-unique index for lookups by job + order (e.g. swap).
|
|
5
|
+
CREATE INDEX "EvaluationPlan_job_description_id_order_no_idx" ON "EvaluationPlan"("job_description_id", "order_no");
|
package/prisma/migrations/20260429180000_eval_plan_timeline_optional_ongoing_duration/migration.sql
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
-- EvaluationPlan.timeline optional (legacy column; app uses duration/deadline/duration_unit).
|
|
2
|
+
ALTER TABLE "EvaluationPlan" ALTER COLUMN "timeline" DROP NOT NULL;
|
|
3
|
+
|
|
4
|
+
-- OngoingEvaluation: denormalized duration fields; migrate legacy timeline into duration (minutes) then drop timeline.
|
|
5
|
+
ALTER TABLE "OngoingEvaluation" ADD COLUMN "duration" INTEGER;
|
|
6
|
+
ALTER TABLE "OngoingEvaluation" ADD COLUMN "deadline" INTEGER;
|
|
7
|
+
ALTER TABLE "OngoingEvaluation" ADD COLUMN "duration_unit" "DurationUnit";
|
|
8
|
+
|
|
9
|
+
UPDATE "OngoingEvaluation"
|
|
10
|
+
SET
|
|
11
|
+
"duration" = "timeline",
|
|
12
|
+
"duration_unit" = 'MINUTES'::"DurationUnit"
|
|
13
|
+
WHERE "timeline" IS NOT NULL AND "duration" IS NULL;
|
|
14
|
+
|
|
15
|
+
ALTER TABLE "OngoingEvaluation" DROP COLUMN IF EXISTS "timeline";
|
package/prisma/migrations/20260430120000_drop_assessment_library_metadata_fields/migration.sql
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
-- Remove unused AssessmentLibrary metadata columns.
|
|
2
|
+
ALTER TABLE "AssessmentLibrary" DROP COLUMN IF EXISTS "assessment_type";
|
|
3
|
+
ALTER TABLE "AssessmentLibrary" DROP COLUMN IF EXISTS "description";
|
|
4
|
+
ALTER TABLE "AssessmentLibrary" DROP COLUMN IF EXISTS "assessment_category";
|
|
5
|
+
ALTER TABLE "AssessmentLibrary" DROP COLUMN IF EXISTS "created_by_ai";
|
|
6
|
+
|
|
7
|
+
-- Enum only referenced by dropped column.
|
|
8
|
+
DROP TYPE IF EXISTS "AssessmentCategory";
|
|
@@ -8,10 +8,14 @@ model Assessment {
|
|
|
8
8
|
//data
|
|
9
9
|
score Float?
|
|
10
10
|
feedback Json?
|
|
11
|
+
// Scheduled Deadline Window
|
|
11
12
|
scheduled_start_time DateTime?
|
|
12
13
|
scheduled_end_time DateTime?
|
|
14
|
+
/// Actual Start and End Time
|
|
13
15
|
actual_start_time DateTime?
|
|
14
16
|
actual_end_time DateTime?
|
|
17
|
+
/// Attempt Expires At
|
|
18
|
+
attempt_expires_at DateTime?
|
|
15
19
|
/// Audit fields
|
|
16
20
|
created_at DateTime @default(now())
|
|
17
21
|
updated_at DateTime @updatedAt
|
|
Binary file
|