From e50bcf2bfecc007f1497c284090a93c68f419a83 Mon Sep 17 00:00:00 2001 From: Samuel Stroschein <35429197+samuelstroschein@users.noreply.github.com> Date: Fri, 18 Oct 2024 17:46:47 +0200 Subject: [PATCH] refactor: use null Closes https://github.com/opral/lix-sdk/issues/55 --- lix/packages/sdk/src/database/schema.ts | 10 +++++----- lix/packages/sdk/src/merge/merge.ts | 9 ++++----- .../sdk/src/query-utilities/is-in-simulated-branch.ts | 1 - .../resolve-conflict-by-selecting.test.ts | 6 +++--- .../resolve-conflict-with-new-change.test.ts | 8 ++------ .../resolve-conflict-with-new-change.ts | 5 ++--- 6 files changed, 16 insertions(+), 23 deletions(-) diff --git a/lix/packages/sdk/src/database/schema.ts b/lix/packages/sdk/src/database/schema.ts index 39333e016b..6be097df16 100644 --- a/lix/packages/sdk/src/database/schema.ts +++ b/lix/packages/sdk/src/database/schema.ts @@ -91,7 +91,7 @@ type SnapshotTable = { * - For a csv cell change, the value would be the new cell value. * - For an inlang message change, the value would be the new message. */ - content?: Record; + content: Record | null; }; // TODO #185 rename content to snapshot_content @@ -104,8 +104,8 @@ export type Conflict = Selectable; export type NewConflict = Insertable; export type ConflictUpdate = Updateable; type ConflictTable = { - meta?: Record; - reason?: string; + meta: Record | null; + reason: string | null; change_id: ChangeTable["id"]; conflicting_change_id: ChangeTable["id"]; /** @@ -114,7 +114,7 @@ type ConflictTable = { * Can be the change_id, conflicting_change_id, or another change_id * that resulted from a merge. */ - resolved_change_id?: ChangeTable["id"]; + resolved_change_id: ChangeTable["id"] | null; }; // ------ discussions ------ @@ -139,7 +139,7 @@ export type NewComment = Insertable; export type CommentUpdate = Updateable; type CommentTable = { id: Generated; - parent_id?: string; + parent_id: string | null; discussion_id: string; created_at: Generated; body: string; diff --git a/lix/packages/sdk/src/merge/merge.ts b/lix/packages/sdk/src/merge/merge.ts index efc39cf3d3..1920ea7461 100644 --- a/lix/packages/sdk/src/merge/merge.ts +++ b/lix/packages/sdk/src/merge/merge.ts @@ -140,11 +140,10 @@ export async function merge(args: { await trx .insertInto("change") .values( - // https://github.com/opral/inlang-message-sdk/issues/123 - sourceChangesWithSnapshot.map((change) => { - delete change.content; - return change; - }), + sourceChangesWithSnapshot.map((c) => ({ + ...c, + content: undefined, + })), ) // ignore if already exists .onConflict((oc) => oc.doNothing()) diff --git a/lix/packages/sdk/src/query-utilities/is-in-simulated-branch.ts b/lix/packages/sdk/src/query-utilities/is-in-simulated-branch.ts index 4bfd003105..7d677477ed 100644 --- a/lix/packages/sdk/src/query-utilities/is-in-simulated-branch.ts +++ b/lix/packages/sdk/src/query-utilities/is-in-simulated-branch.ts @@ -36,7 +36,6 @@ export function isInSimulatedCurrentBranch( .where("conflict.resolved_change_id", "is", null), ), // change is in a conflict and is the resolved one - // @ts-expect-error - no idea why eb("change.id", "in", (subquery) => subquery.selectFrom("conflict").select("conflict.resolved_change_id"), ), diff --git a/lix/packages/sdk/src/resolve-conflict/resolve-conflict-by-selecting.test.ts b/lix/packages/sdk/src/resolve-conflict/resolve-conflict-by-selecting.test.ts index 9710535ee1..39fee66265 100644 --- a/lix/packages/sdk/src/resolve-conflict/resolve-conflict-by-selecting.test.ts +++ b/lix/packages/sdk/src/resolve-conflict/resolve-conflict-by-selecting.test.ts @@ -110,9 +110,9 @@ test("it should throw if the change id does not belong to the conflict", async ( conflict: { change_id: "change1", conflicting_change_id: "change2", - meta: undefined, - reason: undefined, - resolved_change_id: undefined, + meta: null, + reason: null, + resolved_change_id: null, }, selectChangeId: "change3", }), diff --git a/lix/packages/sdk/src/resolve-conflict/resolve-conflict-with-new-change.test.ts b/lix/packages/sdk/src/resolve-conflict/resolve-conflict-with-new-change.test.ts index 260a059325..b6b4594bf5 100644 --- a/lix/packages/sdk/src/resolve-conflict/resolve-conflict-with-new-change.test.ts +++ b/lix/packages/sdk/src/resolve-conflict/resolve-conflict-with-new-change.test.ts @@ -89,7 +89,7 @@ test("it should throw if the to be resolved with change already exists", async ( parentIds: [changes[0]!.id], newChange: { ...changes[0]!, - content: mockSnapshots[0]?.content, + content: mockSnapshots[0]?.content ?? null, }, }), ).rejects.toThrowError(ChangeAlreadyExistsError); @@ -310,11 +310,7 @@ test("resolving a conflict with a new change should insert the change and mark t await lix.db .insertInto("snapshot") - .values( - mockSnapshots.map((s) => { - return { content: s.content }; - }), - ) + .values(mockSnapshots.map((s) => ({ content: s.content }))) .returningAll() .execute(); diff --git a/lix/packages/sdk/src/resolve-conflict/resolve-conflict-with-new-change.ts b/lix/packages/sdk/src/resolve-conflict/resolve-conflict-with-new-change.ts index 41e99f29d8..9a0f6156b6 100644 --- a/lix/packages/sdk/src/resolve-conflict/resolve-conflict-with-new-change.ts +++ b/lix/packages/sdk/src/resolve-conflict/resolve-conflict-with-new-change.ts @@ -67,7 +67,6 @@ export async function resolveConflictWithNewChange(args: { }); const snapshotContent = args.newChange.content!; - delete args.newChange.content; await args.lix.db.transaction().execute(async (trx) => { await trx @@ -87,12 +86,12 @@ export async function resolveConflictWithNewChange(args: { .returningAll() .executeTakeFirstOrThrow(); - delete args.newChange.content; - const insertedChange = await trx .insertInto("change") .values({ ...args.newChange, + // @ts-expect-error - newChange is a change with a snapshot + content: undefined, snapshot_id: snapshot.id, }) .returning("id")