Skip to content

Commit b696bbb

Browse files
authored
Add TaskScheduleInstance projectId (#2897)
Summary - Add nullable projectId field to TaskScheduleInstance. - Create an index for TaskScheduleInstance.environmentId (added only if it doesn’t exist, handled concurrently). - Ensure TaskScheduleInstance.projectId is set everywhere in the codebase. Backfilling projectIds, once this is live ```sql UPDATE "TaskScheduleInstance" tsi SET "projectId" = ts."projectId" FROM "TaskSchedule" ts WHERE tsi."taskScheduleId" = ts."id"; ```
1 parent aa69b90 commit b696bbb

File tree

7 files changed

+32
-2
lines changed

7 files changed

+32
-2
lines changed

apps/webapp/app/v3/services/createBackgroundWorker.server.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -593,6 +593,7 @@ export async function syncDeclarativeSchedules(
593593
create: [
594594
{
595595
environmentId: environment.id,
596+
projectId: environment.projectId,
596597
},
597598
],
598599
},

apps/webapp/app/v3/services/upsertTaskSchedule.server.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ export class UpsertTaskScheduleService extends BaseService {
109109
data: {
110110
taskScheduleId: scheduleRecord.id,
111111
environmentId,
112+
projectId,
112113
},
113114
include: {
114115
environment: {
@@ -183,6 +184,7 @@ export class UpsertTaskScheduleService extends BaseService {
183184
data: {
184185
taskScheduleId: scheduleRecord.id,
185186
environmentId,
187+
projectId: existingSchedule.projectId,
186188
},
187189
include: {
188190
environment: {
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
-- AlterTable
2+
ALTER TABLE "public"."TaskScheduleInstance"
3+
ADD COLUMN IF NOT EXISTS "projectId" TEXT;
4+
5+
-- AddForeignKey
6+
DO $$
7+
BEGIN
8+
IF NOT EXISTS (
9+
SELECT 1 FROM pg_constraint WHERE conname = 'TaskScheduleInstance_projectId_fkey'
10+
) THEN
11+
ALTER TABLE "public"."TaskScheduleInstance"
12+
ADD CONSTRAINT "TaskScheduleInstance_projectId_fkey"
13+
FOREIGN KEY ("projectId") REFERENCES "public"."Project" ("id")
14+
ON DELETE CASCADE ON UPDATE CASCADE;
15+
END IF;
16+
END $$;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
-- CreateIndex
2+
CREATE INDEX CONCURRENTLY IF NOT EXISTS "TaskScheduleInstance_environmentId_idx" ON "public"."TaskScheduleInstance" ("environmentId");

internal-packages/database/prisma/schema.prisma

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,8 @@ model Project {
404404
connectedGithubRepository ConnectedGithubRepository?
405405
customerQueries CustomerQuery[]
406406
407-
buildSettings Json?
407+
buildSettings Json?
408+
taskScheduleInstances TaskScheduleInstance[]
408409
}
409410

410411
enum ProjectVersion {
@@ -589,7 +590,7 @@ model TaskRun {
589590
/// Debounce options: { key: string, delay: string, createdAt: Date }
590591
debounce Json?
591592
592-
taskIdentifier String
593+
taskIdentifier String
593594
594595
isTest Boolean @default(false)
595596
@@ -1945,6 +1946,9 @@ model TaskScheduleInstance {
19451946
environment RuntimeEnvironment @relation(fields: [environmentId], references: [id], onDelete: Cascade, onUpdate: Cascade)
19461947
environmentId String
19471948
1949+
project Project? @relation(fields: [projectId], references: [id], onDelete: Cascade, onUpdate: Cascade)
1950+
projectId String?
1951+
19481952
createdAt DateTime @default(now())
19491953
updatedAt DateTime @updatedAt
19501954
@@ -1955,6 +1959,7 @@ model TaskScheduleInstance {
19551959
19561960
//you can only have a schedule attached to each environment once
19571961
@@unique([taskScheduleId, environmentId])
1962+
@@index([environmentId])
19581963
}
19591964

19601965
model RuntimeEnvironmentSession {

internal-packages/schedule-engine/test/scheduleEngine.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ describe("ScheduleEngine Integration", () => {
9393
data: {
9494
taskScheduleId: taskSchedule.id,
9595
environmentId: environment.id,
96+
projectId: project.id,
9697
active: true,
9798
},
9899
});

internal-packages/schedule-engine/test/scheduleRecovery.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ describe("Schedule Recovery", () => {
7979
data: {
8080
taskScheduleId: taskSchedule.id,
8181
environmentId: environment.id,
82+
projectId: project.id,
8283
active: true,
8384
},
8485
});
@@ -184,6 +185,7 @@ describe("Schedule Recovery", () => {
184185
data: {
185186
taskScheduleId: taskSchedule.id,
186187
environmentId: environment.id,
188+
projectId: project.id,
187189
active: true,
188190
},
189191
});
@@ -293,6 +295,7 @@ describe("Schedule Recovery", () => {
293295
data: {
294296
taskScheduleId: taskSchedule.id,
295297
environmentId: environment.id,
298+
projectId: project.id,
296299
active: true,
297300
},
298301
});

0 commit comments

Comments
 (0)