diff --git a/packages/common/infra/src/orm/core/__tests__/entity.spec.ts b/packages/common/infra/src/orm/core/__tests__/entity.spec.ts index bcb8478228..9d9d2c778f 100644 --- a/packages/common/infra/src/orm/core/__tests__/entity.spec.ts +++ b/packages/common/infra/src/orm/core/__tests__/entity.spec.ts @@ -122,4 +122,29 @@ describe('ORM entity CRUD', () => { const tag2 = client.tags.get(tag.id); expect(tag2).toBe(null); }); + + test('should be able to recover entity', t => { + const { client } = t; + + client.tags.create({ + id: '1', + name: 'test', + color: 'red', + }); + + client.tags.delete('1'); + + client.tags.create({ + id: '1', + name: 'test', + color: 'red', + }); + + const tag = client.tags.get('1'); + expect(tag).toEqual({ + id: '1', + name: 'test', + color: 'red', + }); + }); }); diff --git a/packages/common/infra/src/orm/core/__tests__/yjs.spec.ts b/packages/common/infra/src/orm/core/__tests__/yjs.spec.ts index b7aa055410..3463261a17 100644 --- a/packages/common/infra/src/orm/core/__tests__/yjs.spec.ts +++ b/packages/common/infra/src/orm/core/__tests__/yjs.spec.ts @@ -118,6 +118,31 @@ describe('ORM entity CRUD', () => { expect(tag2).toBe(null); }); + test('should be able to recover entity', t => { + const { client } = t; + + client.tags.create({ + id: '1', + name: 'test', + color: 'red', + }); + + client.tags.delete('1'); + + client.tags.create({ + id: '1', + name: 'test', + color: 'red', + }); + + const tag = client.tags.get('1'); + expect(tag).toEqual({ + id: '1', + name: 'test', + color: 'red', + }); + }); + test('should be able to list keys', t => { const { client } = t; diff --git a/packages/common/infra/src/orm/core/adapters/yjs/table.ts b/packages/common/infra/src/orm/core/adapters/yjs/table.ts index 7948a0c2af..3bfc3e9aae 100644 --- a/packages/common/infra/src/orm/core/adapters/yjs/table.ts +++ b/packages/common/infra/src/orm/core/adapters/yjs/table.ts @@ -57,6 +57,7 @@ export class YjsTableAdapter implements TableAdapter { } this.keyBy(record, key); + record.set(this.deleteFlagKey, false); }, this.origin); this.markCacheStaled(); @@ -148,7 +149,7 @@ export class YjsTableAdapter implements TableAdapter { } private isDeleted(record: YMap) { - return record.has(this.deleteFlagKey); + return record.get(this.deleteFlagKey) === true; } private record(key: Key) {