@gelabs/ovr 0.2.0 → 0.2.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.
- package/dist/chunk-IB4JVGKJ.js +379 -0
- package/dist/data-mock-store.js +2 -0
- package/dist/data-prisma-store.js +3 -0
- package/dist/data.d.ts +1 -0
- package/dist/generated/client/edge.js +4 -3
- package/dist/generated/client/index-browser.js +1 -0
- package/dist/generated/client/index.d.ts +45 -1
- package/dist/generated/client/index.js +4 -3
- package/dist/generated/client/package.json +1 -1
- package/dist/generated/client/schema.prisma +1 -0
- package/dist/generated/client/wasm.js +4 -3
- package/dist/offline.d.ts +22 -19
- package/dist/offline.js +2 -375
- package/dist/types.d.ts +1 -0
- package/dist/ui-components-admin/admin-nav.js +4 -1
- package/dist/ui-components-admin/issuance-form.js +26 -12
- package/dist/ui-components-shared/ticket-receipt.js +2 -1
- package/package.json +5 -5
- package/prisma/migrations/20260611112111_init/migration.sql +142 -0
- package/prisma/migrations/20260611112121_add_ticket_sequence/migration.sql +4 -0
- package/prisma/migrations/20260612000000_split_violator_address/migration.sql +26 -0
- package/prisma/migrations/20260612000100_barangay_optional/migration.sql +2 -0
- package/prisma/migrations/20260622000000_add_issued_by/migration.sql +2 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema.prisma +1 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
-- CreateEnum
|
|
2
|
+
CREATE TYPE "ViolationCategory" AS ENUM ('TRAFFIC', 'ORDINANCE');
|
|
3
|
+
|
|
4
|
+
-- CreateEnum
|
|
5
|
+
CREATE TYPE "PaymentMethod" AS ENUM ('GCASH', 'MAYA', 'LANDBANK', 'OVER_THE_COUNTER');
|
|
6
|
+
|
|
7
|
+
-- CreateEnum
|
|
8
|
+
CREATE TYPE "PaymentStatus" AS ENUM ('UNPAID', 'PAID', 'CONTESTED');
|
|
9
|
+
|
|
10
|
+
-- CreateEnum
|
|
11
|
+
CREATE TYPE "UserRole" AS ENUM ('ENFORCER', 'ADMIN');
|
|
12
|
+
|
|
13
|
+
-- CreateTable
|
|
14
|
+
CREATE TABLE "Officer" (
|
|
15
|
+
"id" TEXT NOT NULL,
|
|
16
|
+
"name" TEXT NOT NULL,
|
|
17
|
+
"badgeNo" TEXT,
|
|
18
|
+
"office" TEXT NOT NULL,
|
|
19
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
20
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
21
|
+
|
|
22
|
+
CONSTRAINT "Officer_pkey" PRIMARY KEY ("id")
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
-- CreateTable
|
|
26
|
+
CREATE TABLE "ViolationCatalog" (
|
|
27
|
+
"code" TEXT NOT NULL,
|
|
28
|
+
"title" TEXT NOT NULL,
|
|
29
|
+
"category" "ViolationCategory" NOT NULL,
|
|
30
|
+
"basicFine" DECIMAL(12,2) NOT NULL,
|
|
31
|
+
"legalText" TEXT,
|
|
32
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
33
|
+
|
|
34
|
+
CONSTRAINT "ViolationCatalog_pkey" PRIMARY KEY ("code")
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
-- CreateTable
|
|
38
|
+
CREATE TABLE "Ticket" (
|
|
39
|
+
"ovrTicketNo" TEXT NOT NULL,
|
|
40
|
+
"orderOfPaymentNo" TEXT NOT NULL,
|
|
41
|
+
"billNo" TEXT NOT NULL,
|
|
42
|
+
"violatorFirstName" TEXT NOT NULL,
|
|
43
|
+
"violatorMiddleName" TEXT,
|
|
44
|
+
"violatorLastName" TEXT NOT NULL,
|
|
45
|
+
"violatorAddress" TEXT NOT NULL,
|
|
46
|
+
"violatorLicenseNumber" TEXT NOT NULL,
|
|
47
|
+
"violatorPlateNumber" TEXT,
|
|
48
|
+
"violatorContactNo" TEXT,
|
|
49
|
+
"apprehendedAt" TIMESTAMP(3) NOT NULL,
|
|
50
|
+
"placeOfViolation" TEXT,
|
|
51
|
+
"remarks" TEXT,
|
|
52
|
+
"officerId" TEXT NOT NULL,
|
|
53
|
+
"assessedAt" TIMESTAMP(3) NOT NULL,
|
|
54
|
+
"dueDate" TIMESTAMP(3) NOT NULL,
|
|
55
|
+
"basicFinesTotal" DECIMAL(12,2) NOT NULL,
|
|
56
|
+
"paymentStatus" "PaymentStatus" NOT NULL DEFAULT 'UNPAID',
|
|
57
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
58
|
+
|
|
59
|
+
CONSTRAINT "Ticket_pkey" PRIMARY KEY ("ovrTicketNo")
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
-- CreateTable
|
|
63
|
+
CREATE TABLE "TicketViolation" (
|
|
64
|
+
"id" TEXT NOT NULL,
|
|
65
|
+
"ticketOvrNo" TEXT NOT NULL,
|
|
66
|
+
"catalogCode" TEXT NOT NULL,
|
|
67
|
+
"title" TEXT NOT NULL,
|
|
68
|
+
"basicFine" DECIMAL(12,2) NOT NULL,
|
|
69
|
+
"details" TEXT,
|
|
70
|
+
|
|
71
|
+
CONSTRAINT "TicketViolation_pkey" PRIMARY KEY ("id")
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
-- CreateTable
|
|
75
|
+
CREATE TABLE "Payment" (
|
|
76
|
+
"id" TEXT NOT NULL,
|
|
77
|
+
"ticketOvrNo" TEXT NOT NULL,
|
|
78
|
+
"method" "PaymentMethod" NOT NULL,
|
|
79
|
+
"amount" DECIMAL(12,2) NOT NULL,
|
|
80
|
+
"referenceNo" TEXT NOT NULL,
|
|
81
|
+
"paidAt" TIMESTAMP(3) NOT NULL,
|
|
82
|
+
|
|
83
|
+
CONSTRAINT "Payment_pkey" PRIMARY KEY ("id")
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
-- CreateTable
|
|
87
|
+
CREATE TABLE "User" (
|
|
88
|
+
"id" TEXT NOT NULL,
|
|
89
|
+
"username" TEXT NOT NULL,
|
|
90
|
+
"passwordHash" TEXT NOT NULL,
|
|
91
|
+
"role" "UserRole" NOT NULL DEFAULT 'ENFORCER',
|
|
92
|
+
"active" BOOLEAN NOT NULL DEFAULT true,
|
|
93
|
+
"officerId" TEXT,
|
|
94
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
95
|
+
|
|
96
|
+
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
-- CreateIndex
|
|
100
|
+
CREATE UNIQUE INDEX "Ticket_orderOfPaymentNo_key" ON "Ticket"("orderOfPaymentNo");
|
|
101
|
+
|
|
102
|
+
-- CreateIndex
|
|
103
|
+
CREATE UNIQUE INDEX "Ticket_billNo_key" ON "Ticket"("billNo");
|
|
104
|
+
|
|
105
|
+
-- CreateIndex
|
|
106
|
+
CREATE INDEX "Ticket_violatorLastName_idx" ON "Ticket"("violatorLastName");
|
|
107
|
+
|
|
108
|
+
-- CreateIndex
|
|
109
|
+
CREATE INDEX "Ticket_violatorPlateNumber_idx" ON "Ticket"("violatorPlateNumber");
|
|
110
|
+
|
|
111
|
+
-- CreateIndex
|
|
112
|
+
CREATE INDEX "Ticket_paymentStatus_idx" ON "Ticket"("paymentStatus");
|
|
113
|
+
|
|
114
|
+
-- CreateIndex
|
|
115
|
+
CREATE INDEX "Ticket_createdAt_idx" ON "Ticket"("createdAt");
|
|
116
|
+
|
|
117
|
+
-- CreateIndex
|
|
118
|
+
CREATE INDEX "TicketViolation_ticketOvrNo_idx" ON "TicketViolation"("ticketOvrNo");
|
|
119
|
+
|
|
120
|
+
-- CreateIndex
|
|
121
|
+
CREATE UNIQUE INDEX "Payment_ticketOvrNo_key" ON "Payment"("ticketOvrNo");
|
|
122
|
+
|
|
123
|
+
-- CreateIndex
|
|
124
|
+
CREATE UNIQUE INDEX "Payment_referenceNo_key" ON "Payment"("referenceNo");
|
|
125
|
+
|
|
126
|
+
-- CreateIndex
|
|
127
|
+
CREATE UNIQUE INDEX "User_username_key" ON "User"("username");
|
|
128
|
+
|
|
129
|
+
-- CreateIndex
|
|
130
|
+
CREATE UNIQUE INDEX "User_officerId_key" ON "User"("officerId");
|
|
131
|
+
|
|
132
|
+
-- AddForeignKey
|
|
133
|
+
ALTER TABLE "Ticket" ADD CONSTRAINT "Ticket_officerId_fkey" FOREIGN KEY ("officerId") REFERENCES "Officer"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
134
|
+
|
|
135
|
+
-- AddForeignKey
|
|
136
|
+
ALTER TABLE "TicketViolation" ADD CONSTRAINT "TicketViolation_ticketOvrNo_fkey" FOREIGN KEY ("ticketOvrNo") REFERENCES "Ticket"("ovrTicketNo") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
137
|
+
|
|
138
|
+
-- AddForeignKey
|
|
139
|
+
ALTER TABLE "Payment" ADD CONSTRAINT "Payment_ticketOvrNo_fkey" FOREIGN KEY ("ticketOvrNo") REFERENCES "Ticket"("ovrTicketNo") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
140
|
+
|
|
141
|
+
-- AddForeignKey
|
|
142
|
+
ALTER TABLE "User" ADD CONSTRAINT "User_officerId_fkey" FOREIGN KEY ("officerId") REFERENCES "Officer"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
-- Global ticket sequence used by createTicket (SELECT nextval('ovr_ticket_seq')
|
|
2
|
+
-- inside the insert transaction — atomic and collision-free under concurrency).
|
|
3
|
+
-- Starts at 4 because the three seed tickets occupy sequence values 1-3.
|
|
4
|
+
CREATE SEQUENCE IF NOT EXISTS ovr_ticket_seq START WITH 4 INCREMENT BY 1;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
-- Split the single `violatorAddress` column into PH-standard address parts:
|
|
2
|
+
-- street (address line), barangay, city/municipality, province.
|
|
3
|
+
|
|
4
|
+
-- 1. Add the new columns as nullable so existing rows can be backfilled.
|
|
5
|
+
ALTER TABLE "Ticket" ADD COLUMN "violatorStreet" TEXT;
|
|
6
|
+
ALTER TABLE "Ticket" ADD COLUMN "violatorBarangay" TEXT;
|
|
7
|
+
ALTER TABLE "Ticket" ADD COLUMN "violatorCityMunicipality" TEXT;
|
|
8
|
+
ALTER TABLE "Ticket" ADD COLUMN "violatorProvince" TEXT;
|
|
9
|
+
|
|
10
|
+
-- 2. Backfill from the old comma-separated address
|
|
11
|
+
-- ("street, barangay, city, province"). Fall back to the LGU defaults so
|
|
12
|
+
-- sparsely-formatted legacy values still satisfy the NOT NULL constraints.
|
|
13
|
+
UPDATE "Ticket" SET
|
|
14
|
+
"violatorStreet" = COALESCE(NULLIF(TRIM(SPLIT_PART("violatorAddress", ',', 1)), ''), "violatorAddress"),
|
|
15
|
+
"violatorBarangay" = COALESCE(NULLIF(TRIM(SPLIT_PART("violatorAddress", ',', 2)), ''), '—'),
|
|
16
|
+
"violatorCityMunicipality" = COALESCE(NULLIF(TRIM(SPLIT_PART("violatorAddress", ',', 3)), ''), 'Iba'),
|
|
17
|
+
"violatorProvince" = COALESCE(NULLIF(TRIM(SPLIT_PART("violatorAddress", ',', 4)), ''), 'Zambales');
|
|
18
|
+
|
|
19
|
+
-- 3. Enforce NOT NULL now that every row has values.
|
|
20
|
+
ALTER TABLE "Ticket" ALTER COLUMN "violatorStreet" SET NOT NULL;
|
|
21
|
+
ALTER TABLE "Ticket" ALTER COLUMN "violatorBarangay" SET NOT NULL;
|
|
22
|
+
ALTER TABLE "Ticket" ALTER COLUMN "violatorCityMunicipality" SET NOT NULL;
|
|
23
|
+
ALTER TABLE "Ticket" ALTER COLUMN "violatorProvince" SET NOT NULL;
|
|
24
|
+
|
|
25
|
+
-- 4. Drop the old single column.
|
|
26
|
+
ALTER TABLE "Ticket" DROP COLUMN "violatorAddress";
|