Skip to content
This repository was archived by the owner on Jun 14, 2025. It is now read-only.

Commit f2595db

Browse files
committed
fix: resolve all TypeScript and ESLint errors across the application
- Fixed type safety issues in all page components (projects, tasks) - Replaced 'any' types with proper TypeScript interfaces - Updated database field references to match Prisma schema: - project.name → project.title - project.teamMembers → project.members - task.subtasks → task.subTasks - task.timeTracking → task.timeEntries - task.assignee → task.assignments - taskAssignments → assignedTasks - createdTasks → ownedTasks - Completely rewrote task router with proper Prisma types - Fixed unsafe member access and type assertions - Added proper error handling with explicit type annotations - Implemented modern TypeScript practices (nullish coalescing, optional chaining) - Added accessibility improvements (aria-labels) - Removed references to non-existent schema fields - All TypeScript compilation and ESLint checks now pass cleanly
1 parent 9fe5d3e commit f2595db

File tree

19 files changed

+4366
-76
lines changed

19 files changed

+4366
-76
lines changed
Lines changed: 246 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,246 @@
1+
/*
2+
Warnings:
3+
4+
- Added the required column `updatedAt` to the `User` table without a default value. This is not possible if the table is not empty.
5+
6+
*/
7+
-- CreateEnum
8+
CREATE TYPE "UserRole" AS ENUM ('USER', 'ADMIN');
9+
10+
-- CreateEnum
11+
CREATE TYPE "TaskPriority" AS ENUM ('LOW', 'MEDIUM', 'HIGH', 'URGENT');
12+
13+
-- CreateEnum
14+
CREATE TYPE "TaskStatus" AS ENUM ('TODO', 'IN_PROGRESS', 'REVIEW', 'COMPLETED');
15+
16+
-- AlterTable
17+
ALTER TABLE "User" ADD COLUMN "bio" TEXT,
18+
ADD COLUMN "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
19+
ADD COLUMN "role" "UserRole" NOT NULL DEFAULT 'USER',
20+
ADD COLUMN "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP;
21+
22+
-- CreateTable
23+
CREATE TABLE "Project" (
24+
"id" TEXT NOT NULL,
25+
"title" TEXT NOT NULL,
26+
"description" TEXT,
27+
"timeline" TEXT,
28+
"ownerId" TEXT NOT NULL,
29+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
30+
"updatedAt" TIMESTAMP(3) NOT NULL,
31+
32+
CONSTRAINT "Project_pkey" PRIMARY KEY ("id")
33+
);
34+
35+
-- CreateTable
36+
CREATE TABLE "ProjectMember" (
37+
"id" TEXT NOT NULL,
38+
"projectId" TEXT NOT NULL,
39+
"userId" TEXT NOT NULL,
40+
"joinedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
41+
42+
CONSTRAINT "ProjectMember_pkey" PRIMARY KEY ("id")
43+
);
44+
45+
-- CreateTable
46+
CREATE TABLE "Milestone" (
47+
"id" TEXT NOT NULL,
48+
"title" TEXT NOT NULL,
49+
"description" TEXT,
50+
"dueDate" TIMESTAMP(3),
51+
"completed" BOOLEAN NOT NULL DEFAULT false,
52+
"projectId" TEXT NOT NULL,
53+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
54+
"updatedAt" TIMESTAMP(3) NOT NULL,
55+
56+
CONSTRAINT "Milestone_pkey" PRIMARY KEY ("id")
57+
);
58+
59+
-- CreateTable
60+
CREATE TABLE "Task" (
61+
"id" TEXT NOT NULL,
62+
"title" TEXT NOT NULL,
63+
"description" TEXT,
64+
"dueDate" TIMESTAMP(3),
65+
"priority" "TaskPriority" NOT NULL DEFAULT 'MEDIUM',
66+
"status" "TaskStatus" NOT NULL DEFAULT 'TODO',
67+
"userId" TEXT,
68+
"projectId" TEXT,
69+
"parentTaskId" TEXT,
70+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
71+
"updatedAt" TIMESTAMP(3) NOT NULL,
72+
73+
CONSTRAINT "Task_pkey" PRIMARY KEY ("id")
74+
);
75+
76+
-- CreateTable
77+
CREATE TABLE "TaskAssignment" (
78+
"id" TEXT NOT NULL,
79+
"taskId" TEXT NOT NULL,
80+
"userId" TEXT NOT NULL,
81+
"assignedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
82+
83+
CONSTRAINT "TaskAssignment_pkey" PRIMARY KEY ("id")
84+
);
85+
86+
-- CreateTable
87+
CREATE TABLE "TaskComment" (
88+
"id" TEXT NOT NULL,
89+
"content" TEXT NOT NULL,
90+
"taskId" TEXT NOT NULL,
91+
"userId" TEXT NOT NULL,
92+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
93+
"updatedAt" TIMESTAMP(3) NOT NULL,
94+
95+
CONSTRAINT "TaskComment_pkey" PRIMARY KEY ("id")
96+
);
97+
98+
-- CreateTable
99+
CREATE TABLE "TaskAttachment" (
100+
"id" TEXT NOT NULL,
101+
"filename" TEXT NOT NULL,
102+
"fileUrl" TEXT NOT NULL,
103+
"fileSize" INTEGER,
104+
"mimeType" TEXT,
105+
"taskId" TEXT NOT NULL,
106+
"uploadedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
107+
108+
CONSTRAINT "TaskAttachment_pkey" PRIMARY KEY ("id")
109+
);
110+
111+
-- CreateTable
112+
CREATE TABLE "TaskActivity" (
113+
"id" TEXT NOT NULL,
114+
"action" TEXT NOT NULL,
115+
"description" TEXT,
116+
"taskId" TEXT NOT NULL,
117+
"userId" TEXT NOT NULL,
118+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
119+
120+
CONSTRAINT "TaskActivity_pkey" PRIMARY KEY ("id")
121+
);
122+
123+
-- CreateTable
124+
CREATE TABLE "TaskTag" (
125+
"id" TEXT NOT NULL,
126+
"name" TEXT NOT NULL,
127+
"color" TEXT,
128+
129+
CONSTRAINT "TaskTag_pkey" PRIMARY KEY ("id")
130+
);
131+
132+
-- CreateTable
133+
CREATE TABLE "TaskCategory" (
134+
"id" TEXT NOT NULL,
135+
"name" TEXT NOT NULL,
136+
"color" TEXT,
137+
138+
CONSTRAINT "TaskCategory_pkey" PRIMARY KEY ("id")
139+
);
140+
141+
-- CreateTable
142+
CREATE TABLE "TaskTagRelation" (
143+
"id" TEXT NOT NULL,
144+
"taskId" TEXT NOT NULL,
145+
"tagId" TEXT NOT NULL,
146+
147+
CONSTRAINT "TaskTagRelation_pkey" PRIMARY KEY ("id")
148+
);
149+
150+
-- CreateTable
151+
CREATE TABLE "TaskCategoryRelation" (
152+
"id" TEXT NOT NULL,
153+
"taskId" TEXT NOT NULL,
154+
"categoryId" TEXT NOT NULL,
155+
156+
CONSTRAINT "TaskCategoryRelation_pkey" PRIMARY KEY ("id")
157+
);
158+
159+
-- CreateTable
160+
CREATE TABLE "TaskTimeEntry" (
161+
"id" TEXT NOT NULL,
162+
"description" TEXT,
163+
"startTime" TIMESTAMP(3) NOT NULL,
164+
"endTime" TIMESTAMP(3),
165+
"duration" INTEGER,
166+
"taskId" TEXT NOT NULL,
167+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
168+
"updatedAt" TIMESTAMP(3) NOT NULL,
169+
170+
CONSTRAINT "TaskTimeEntry_pkey" PRIMARY KEY ("id")
171+
);
172+
173+
-- CreateIndex
174+
CREATE UNIQUE INDEX "ProjectMember_projectId_userId_key" ON "ProjectMember"("projectId", "userId");
175+
176+
-- CreateIndex
177+
CREATE UNIQUE INDEX "TaskAssignment_taskId_userId_key" ON "TaskAssignment"("taskId", "userId");
178+
179+
-- CreateIndex
180+
CREATE UNIQUE INDEX "TaskTag_name_key" ON "TaskTag"("name");
181+
182+
-- CreateIndex
183+
CREATE UNIQUE INDEX "TaskCategory_name_key" ON "TaskCategory"("name");
184+
185+
-- CreateIndex
186+
CREATE UNIQUE INDEX "TaskTagRelation_taskId_tagId_key" ON "TaskTagRelation"("taskId", "tagId");
187+
188+
-- CreateIndex
189+
CREATE UNIQUE INDEX "TaskCategoryRelation_taskId_categoryId_key" ON "TaskCategoryRelation"("taskId", "categoryId");
190+
191+
-- AddForeignKey
192+
ALTER TABLE "Project" ADD CONSTRAINT "Project_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
193+
194+
-- AddForeignKey
195+
ALTER TABLE "ProjectMember" ADD CONSTRAINT "ProjectMember_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
196+
197+
-- AddForeignKey
198+
ALTER TABLE "ProjectMember" ADD CONSTRAINT "ProjectMember_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
199+
200+
-- AddForeignKey
201+
ALTER TABLE "Milestone" ADD CONSTRAINT "Milestone_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
202+
203+
-- AddForeignKey
204+
ALTER TABLE "Task" ADD CONSTRAINT "Task_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
205+
206+
-- AddForeignKey
207+
ALTER TABLE "Task" ADD CONSTRAINT "Task_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
208+
209+
-- AddForeignKey
210+
ALTER TABLE "Task" ADD CONSTRAINT "Task_parentTaskId_fkey" FOREIGN KEY ("parentTaskId") REFERENCES "Task"("id") ON DELETE CASCADE ON UPDATE CASCADE;
211+
212+
-- AddForeignKey
213+
ALTER TABLE "TaskAssignment" ADD CONSTRAINT "TaskAssignment_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "Task"("id") ON DELETE CASCADE ON UPDATE CASCADE;
214+
215+
-- AddForeignKey
216+
ALTER TABLE "TaskAssignment" ADD CONSTRAINT "TaskAssignment_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
217+
218+
-- AddForeignKey
219+
ALTER TABLE "TaskComment" ADD CONSTRAINT "TaskComment_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "Task"("id") ON DELETE CASCADE ON UPDATE CASCADE;
220+
221+
-- AddForeignKey
222+
ALTER TABLE "TaskComment" ADD CONSTRAINT "TaskComment_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
223+
224+
-- AddForeignKey
225+
ALTER TABLE "TaskAttachment" ADD CONSTRAINT "TaskAttachment_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "Task"("id") ON DELETE CASCADE ON UPDATE CASCADE;
226+
227+
-- AddForeignKey
228+
ALTER TABLE "TaskActivity" ADD CONSTRAINT "TaskActivity_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "Task"("id") ON DELETE CASCADE ON UPDATE CASCADE;
229+
230+
-- AddForeignKey
231+
ALTER TABLE "TaskActivity" ADD CONSTRAINT "TaskActivity_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
232+
233+
-- AddForeignKey
234+
ALTER TABLE "TaskTagRelation" ADD CONSTRAINT "TaskTagRelation_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "Task"("id") ON DELETE CASCADE ON UPDATE CASCADE;
235+
236+
-- AddForeignKey
237+
ALTER TABLE "TaskTagRelation" ADD CONSTRAINT "TaskTagRelation_tagId_fkey" FOREIGN KEY ("tagId") REFERENCES "TaskTag"("id") ON DELETE CASCADE ON UPDATE CASCADE;
238+
239+
-- AddForeignKey
240+
ALTER TABLE "TaskCategoryRelation" ADD CONSTRAINT "TaskCategoryRelation_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "Task"("id") ON DELETE CASCADE ON UPDATE CASCADE;
241+
242+
-- AddForeignKey
243+
ALTER TABLE "TaskCategoryRelation" ADD CONSTRAINT "TaskCategoryRelation_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "TaskCategory"("id") ON DELETE CASCADE ON UPDATE CASCADE;
244+
245+
-- AddForeignKey
246+
ALTER TABLE "TaskTimeEntry" ADD CONSTRAINT "TaskTimeEntry_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "Task"("id") ON DELETE CASCADE ON UPDATE CASCADE;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
-- AlterTable
2+
ALTER TABLE "User" ALTER COLUMN "updatedAt" DROP DEFAULT;

0 commit comments

Comments
 (0)