diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index 6607ca568a..6eabe37f5e 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -23847,10 +23847,16 @@ components: type: object description: Fork origin info with schema snapshot properties: - original_name: + original_dbname: type: string + description: Original instance database name (instance datatables only) + original_resource: + type: object + description: Original resource value before fork (resource datatables only) + additionalProperties: true schema: type: object + description: Schema snapshot at fork time additionalProperties: true DataTableSchema: type: object diff --git a/frontend/src/lib/components/workspaceSettings/CreateWorkspaceInner.svelte b/frontend/src/lib/components/workspaceSettings/CreateWorkspaceInner.svelte index ecfbe170a3..3b2e72fb3f 100644 --- a/frontend/src/lib/components/workspaceSettings/CreateWorkspaceInner.svelte +++ b/frontend/src/lib/components/workspaceSettings/CreateWorkspaceInner.svelte @@ -243,28 +243,29 @@ if (job._isInstance) { // Instance: update resource_path and set forked_from with schema snapshot if (datatableConfig.datatables[job.name]) { - const originalPath = datatableConfig.datatables[job.name].database.resource_path + const originalDbname = datatableConfig.datatables[job.name].database.resource_path datatableConfig.datatables[job.name].database.resource_path = job._newDbName datatableConfig.datatables[job.name].forked_from = { - original_name: originalPath, + original_dbname: originalDbname, schema: job._schema ?? {} } } } else { // Resource: update the resource's dbname and set non_diffable const resourcePath = job._resourcePath + let originalResource: Record | undefined try { const res = await ResourceService.getResource({ workspace: forkWorkspaceId, path: resourcePath }) - const value = (res.value as Record) ?? {} - value.dbname = job._newDbName + originalResource = (res.value as Record) ?? {} + const updatedValue = { ...originalResource, dbname: job._newDbName } await ResourceService.updateResource({ workspace: forkWorkspaceId, path: resourcePath, requestBody: { - value, + value: updatedValue, non_diffable: true } }) @@ -275,7 +276,7 @@ // Also set forked_from on the datatable config if (datatableConfig.datatables[job.name]) { datatableConfig.datatables[job.name].forked_from = { - original_name: job._resourcePath, + original_resource: originalResource ?? {}, schema: job._schema ?? {} } }