diff --git a/src/collections/config/classes.ts b/src/collections/config/classes.ts index fdf28501..7eff288c 100644 --- a/src/collections/config/classes.ts +++ b/src/collections/config/classes.ts @@ -148,7 +148,7 @@ export class MergeWithExisting { } static objectTTL(current: WeaviateObjectTTLConfig, update: ObjectTTLConfigUpdate): WeaviateObjectTTLConfig { - if (current === undefined) throw Error('Object TTL config is missing from the class schema.'); + if (current === undefined) return update; return { enabled: update.enabled ?? current.enabled, deleteOn: update.deleteOn ?? current.deleteOn, diff --git a/src/collections/config/utils.ts b/src/collections/config/utils.ts index 9af0fe66..69ad19df 100644 --- a/src/collections/config/utils.ts +++ b/src/collections/config/utils.ts @@ -403,11 +403,16 @@ class ConfigMapping { return { enabled: false }; } return { + ...v, enabled: v.enabled ?? false, - deleteOn: v.deleteOn, + deleteOn: + v.deleteOn == '_creationTimeUnix' + ? 'creationTime' + : v.deleteOn == '_lastUpdateTimeUnix' + ? 'updateTime' + : v.deleteOn, defaultTTLSeconds: v.defaultTtl, filterExpiredObjects: v.filterExpiredObjects, - ...v, }; } static multiTenancy(v?: WeaviateMultiTenancyConfig): MultiTenancyConfig { diff --git a/test/collections/config/integration.test.ts b/test/collections/config/integration.test.ts index ecb16447..69964789 100644 --- a/test/collections/config/integration.test.ts +++ b/test/collections/config/integration.test.ts @@ -1095,7 +1095,7 @@ describe('Testing of the collection.config namespace', () => { const created = await collection.config.get(); expect(created.objectTTL).toBeDefined(); expect(created.objectTTL.enabled).toEqual(true); - expect(created.objectTTL.deleteOn).toEqual('_creationTimeUnix'); + expect(created.objectTTL.deleteOn).toEqual('creationTime'); expect(created.objectTTL.defaultTTLSeconds).toEqual(120); await collection.config.update({ @@ -1105,7 +1105,7 @@ describe('Testing of the collection.config namespace', () => { const updated = await collection.config.get(); expect(updated.objectTTL).toBeDefined(); expect(updated.objectTTL.enabled).toEqual(true); - expect(updated.objectTTL.deleteOn).toEqual('_lastUpdateTimeUnix'); + expect(updated.objectTTL.deleteOn).toEqual('updateTime'); expect(updated.objectTTL.defaultTTLSeconds).toEqual(400); await collection.config.update({