From 7c87349bac8b33c463a04f209c93c37c84ecbbc8 Mon Sep 17 00:00:00 2001 From: Aidan Jones Date: Mon, 20 Oct 2025 10:09:55 -0500 Subject: [PATCH 1/8] Add db migration --- .../prisma/migrations/14_start_rebuilds_at_state/migration.sql | 2 ++ src/lib/prisma/schema.prisma | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 src/lib/prisma/migrations/14_start_rebuilds_at_state/migration.sql diff --git a/src/lib/prisma/migrations/14_start_rebuilds_at_state/migration.sql b/src/lib/prisma/migrations/14_start_rebuilds_at_state/migration.sql new file mode 100644 index 0000000000..cea28fc6fe --- /dev/null +++ b/src/lib/prisma/migrations/14_start_rebuilds_at_state/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "ProductDefinitions" ADD COLUMN "StartManualRebuildAt" TEXT; diff --git a/src/lib/prisma/schema.prisma b/src/lib/prisma/schema.prisma index 6e96d47d64..bea42b2da2 100644 --- a/src/lib/prisma/schema.prisma +++ b/src/lib/prisma/schema.prisma @@ -218,6 +218,8 @@ model ProductDefinitions { Description String? WorkflowId Int RebuildWorkflowId Int? + StartManualRebuildAt String? + AutoRebuildWorkflowId Int? RepublishWorkflowId Int? Properties String? OrganizationProductDefinitions OrganizationProductDefinitions[] From b9c8df533cd92ed69693fdee3e32feb73099bb04 Mon Sep 17 00:00:00 2001 From: Aidan Jones Date: Mon, 20 Oct 2025 10:52:38 -0500 Subject: [PATCH 2/8] Add i18n strings --- src/lib/locales/en-US.json | 1 + src/lib/locales/es-419.json | 1 + src/lib/locales/fr-FR.json | 1 + 3 files changed, 3 insertions(+) diff --git a/src/lib/locales/en-US.json b/src/lib/locales/en-US.json index cfe0a95e20..7721c0c6b8 100644 --- a/src/lib/locales/en-US.json +++ b/src/lib/locales/en-US.json @@ -534,6 +534,7 @@ "prodDefs_emptyType": "Need to select an Application Type", "prodDefs_emptyFlow": "Need to select a Workflow definition", "prodDefs_noFlow": "No Workflow Required", + "prodDefs_startAt": "Start Manual Rebuilds at", "stores_emptyStoreType": "Need to select a store type for this store", "storeTypes_title": "Store Types", "storeTypes_name": "Store Type Name", diff --git a/src/lib/locales/es-419.json b/src/lib/locales/es-419.json index 91272dfdf1..6e939586e7 100644 --- a/src/lib/locales/es-419.json +++ b/src/lib/locales/es-419.json @@ -535,6 +535,7 @@ "prodDefs_emptyType": "Necesita seleccionar un tipo de aplicación", "prodDefs_emptyFlow": "Need to select a Workflow definition", "prodDefs_noFlow": "No Workflow Required", + "prodDefs_startAt": "Start Manual Rebuilds at", "storeTypes_title": "Tipos de tienda", "storeTypes_name": "Store Type Name", "storeTypes_add": "Añadir tipo de tienda", diff --git a/src/lib/locales/fr-FR.json b/src/lib/locales/fr-FR.json index 2720fc5c1e..784fba2671 100644 --- a/src/lib/locales/fr-FR.json +++ b/src/lib/locales/fr-FR.json @@ -509,6 +509,7 @@ "prodDefs_emptyType": "Need to select an Application Type", "prodDefs_emptyFlow": "Need to select a Workflow definition", "prodDefs_noFlow": "No Workflow Required", + "prodDefs_startAt": "Start Manual Rebuilds at", "stores_emptyStoreType": "Need to select a store type for this store", "storeTypes_title": "Store Types", "storeTypes_name": "Store Type Name", From 79e4d68462f2ac50686fa497c7608f7132fdee90 Mon Sep 17 00:00:00 2001 From: Aidan Jones Date: Mon, 20 Oct 2025 10:53:03 -0500 Subject: [PATCH 3/8] Add fields in product definitions new/edit --- .../product-definitions/edit/+page.server.ts | 7 ++++++- .../product-definitions/edit/+page.svelte | 15 +++++++++++++++ .../product-definitions/new/+page.server.ts | 6 +++++- .../settings/product-definitions/new/+page.svelte | 15 +++++++++++++++ 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/routes/(authenticated)/admin/settings/product-definitions/edit/+page.server.ts b/src/routes/(authenticated)/admin/settings/product-definitions/edit/+page.server.ts index 5eb8cbd14f..5a7026ab19 100644 --- a/src/routes/(authenticated)/admin/settings/product-definitions/edit/+page.server.ts +++ b/src/routes/(authenticated)/admin/settings/product-definitions/edit/+page.server.ts @@ -5,6 +5,7 @@ import * as v from 'valibot'; import type { Actions, PageServerLoad } from './$types'; import { localizeHref } from '$lib/paraglide/runtime'; import { DatabaseReads, DatabaseWrites } from '$lib/server/database'; +import { WorkflowStateMachine } from '$lib/server/workflow/state-machine'; import { idSchema, propertiesSchema } from '$lib/valibot'; const editSchema = v.object({ @@ -13,6 +14,7 @@ const editSchema = v.object({ applicationType: idSchema, workflow: idSchema, rebuildWorkflow: v.nullable(idSchema), + startManualRebuildAt: v.nullable(v.string()), republishWorkflow: v.nullable(idSchema), description: v.nullable(v.string()), properties: propertiesSchema @@ -25,7 +27,8 @@ export const load = (async ({ url, locals }) => { } const options = { applicationTypes: await DatabaseReads.applicationTypes.findMany(), - workflows: await DatabaseReads.workflowDefinitions.findMany() + workflows: await DatabaseReads.workflowDefinitions.findMany(), + startAt: Object.keys(WorkflowStateMachine.states) }; const data = await DatabaseReads.productDefinitions.findFirst({ where: { @@ -40,6 +43,7 @@ export const load = (async ({ url, locals }) => { applicationType: data.TypeId, workflow: data.WorkflowId, rebuildWorkflow: data.RebuildWorkflowId, + startManualRebuildAt: data.StartManualRebuildAt, republishWorkflow: data.RepublishWorkflowId, description: data.Description, properties: data.Properties @@ -65,6 +69,7 @@ export const actions = { Name: form.data.name, WorkflowId: form.data.workflow, RebuildWorkflowId: form.data.rebuildWorkflow, + StartManualRebuildAt: form.data.startManualRebuildAt, RepublishWorkflowId: form.data.republishWorkflow, Description: form.data.description, Properties: form.data.properties diff --git a/src/routes/(authenticated)/admin/settings/product-definitions/edit/+page.svelte b/src/routes/(authenticated)/admin/settings/product-definitions/edit/+page.svelte index 023592f5f6..4983c778ee 100644 --- a/src/routes/(authenticated)/admin/settings/product-definitions/edit/+page.svelte +++ b/src/routes/(authenticated)/admin/settings/product-definitions/edit/+page.svelte @@ -95,6 +95,21 @@   + {#if $form.rebuildWorkflow} + + +   + + {/if}   + {#if $form.rebuildWorkflow} + + +   + + {/if}   diff --git a/src/routes/(authenticated)/admin/settings/product-definitions/new/+page.server.ts b/src/routes/(authenticated)/admin/settings/product-definitions/new/+page.server.ts index 7d38c062a7..f227245188 100644 --- a/src/routes/(authenticated)/admin/settings/product-definitions/new/+page.server.ts +++ b/src/routes/(authenticated)/admin/settings/product-definitions/new/+page.server.ts @@ -4,15 +4,15 @@ import { valibot } from 'sveltekit-superforms/adapters'; import * as v from 'valibot'; import type { Actions, PageServerLoad } from './$types'; import { DatabaseReads, DatabaseWrites } from '$lib/server/database'; -import { WorkflowStateMachine } from '$lib/server/workflow/state-machine'; import { propertiesSchema } from '$lib/valibot'; +import { WorkflowState } from '$lib/workflowTypes'; const createSchema = v.object({ name: v.nullable(v.string()), applicationType: v.pipe(v.number(), v.minValue(1), v.integer()), workflow: v.pipe(v.number(), v.minValue(1), v.integer()), rebuildWorkflow: v.nullable(v.pipe(v.number(), v.minValue(1), v.integer())), - startManualRebuildAt: v.nullable(v.string()), + startManualRebuildAt: v.nullable(v.literal(String(WorkflowState.Synchronize_Data))), republishWorkflow: v.nullable(v.pipe(v.number(), v.minValue(1), v.integer())), description: v.nullable(v.string()), properties: propertiesSchema @@ -23,8 +23,7 @@ export const load = (async ({ url, locals }) => { const form = await superValidate(valibot(createSchema)); const options = { applicationTypes: await DatabaseReads.applicationTypes.findMany(), - workflows: await DatabaseReads.workflowDefinitions.findMany(), - startAt: Object.keys(WorkflowStateMachine.states) + workflows: await DatabaseReads.workflowDefinitions.findMany() }; return { form, options }; }) satisfies PageServerLoad; diff --git a/src/routes/(authenticated)/admin/settings/product-definitions/new/+page.svelte b/src/routes/(authenticated)/admin/settings/product-definitions/new/+page.svelte index bd0008d1cd..9ac26bef47 100644 --- a/src/routes/(authenticated)/admin/settings/product-definitions/new/+page.svelte +++ b/src/routes/(authenticated)/admin/settings/product-definitions/new/+page.svelte @@ -8,6 +8,7 @@ import { getLocale, localizeHref } from '$lib/paraglide/runtime'; import { toast } from '$lib/utils'; import { byName } from '$lib/utils/sorting'; + import { WorkflowState } from '$lib/workflowTypes'; interface Props { data: PageData; @@ -100,10 +101,8 @@ name="startManualRebuildAt" bind:value={$form.startManualRebuildAt} > - - {#each data.options.startAt as startAt} - - {/each} + +   From 4464b9fdba6387d26f23dd54f76208f7d95368dc Mon Sep 17 00:00:00 2001 From: Aidan Jones Date: Wed, 22 Oct 2025 08:58:19 -0500 Subject: [PATCH 8/8] Translate i18n string to Spanish Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- src/lib/locales/es-419.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/locales/es-419.json b/src/lib/locales/es-419.json index 6e939586e7..6ca1c198e3 100644 --- a/src/lib/locales/es-419.json +++ b/src/lib/locales/es-419.json @@ -535,7 +535,7 @@ "prodDefs_emptyType": "Necesita seleccionar un tipo de aplicación", "prodDefs_emptyFlow": "Need to select a Workflow definition", "prodDefs_noFlow": "No Workflow Required", - "prodDefs_startAt": "Start Manual Rebuilds at", + "prodDefs_startAt": "Iniciar reconstrucciones manuales en", "storeTypes_title": "Tipos de tienda", "storeTypes_name": "Store Type Name", "storeTypes_add": "Añadir tipo de tienda",