Skip to content

Commit 05528bc

Browse files
committed
Refactor Diff.ts and loadQuery to Query.ts
1 parent 18ee204 commit 05528bc

9 files changed

Lines changed: 326 additions & 286 deletions

File tree

packages/common/src/local-first/Db.ts

Lines changed: 11 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import { ok, Result } from "../Result.js";
1818
import {
1919
createSqlite,
2020
CreateSqliteDriverDep,
21-
explainSqliteQueryPlan,
2221
sql,
2322
SqliteDep,
2423
SqliteError,
@@ -31,7 +30,6 @@ import {
3130
MessageHandlers,
3231
Worker,
3332
} from "../Worker.js";
34-
import { makePatches, QueryPatches } from "./Diff.js";
3533
import {
3634
AppOwner,
3735
createAppOwner,
@@ -45,11 +43,11 @@ import {
4543
} from "./Owner.js";
4644
import { ProtocolError, protocolVersion } from "./Protocol.js";
4745
import {
48-
createQueryRowsCache,
49-
deserializeQuery,
50-
emptyRows,
46+
createGetQueryRowsCache,
47+
GetQueryRowsCacheDep,
48+
loadQueries,
5149
Query,
52-
QueryRowsCache,
50+
QueryPatches,
5351
} from "./Query.js";
5452
import {
5553
DbSchema,
@@ -316,24 +314,20 @@ type DbWorkerDeps = Omit<
316314
DbWorkerPlatformDeps,
317315
keyof CreateSqliteDriverDep | keyof CreateWebSocketDep
318316
> &
317+
AppOwnerDep &
319318
GetQueryRowsCacheDep &
320319
PostMessageDep &
321320
SqliteDep &
322-
SyncDep &
323-
AppOwnerDep;
321+
SyncDep;
324322

325-
interface GetQueryRowsCacheDep {
326-
readonly getQueryRowsCache: (tabId: Id) => QueryRowsCache;
323+
export interface AppOwnerDep {
324+
readonly appOwner: AppOwner;
327325
}
328326

329327
export interface PostMessageDep {
330328
readonly postMessage: (message: DbWorkerOutput) => void;
331329
}
332330

333-
export interface AppOwnerDep {
334-
readonly appOwner: AppOwner;
335-
}
336-
337331
export const createDbWorkerForPlatform = (
338332
platformDeps: DbWorkerPlatformDeps,
339333
): DbWorker =>
@@ -432,8 +426,8 @@ const createDbWorkerDeps = async (
432426
if (!result.ok) return result;
433427
}
434428

435-
const result = ensureDbSchema(deps)(initMessage.dbSchema, dbSchema.value);
436-
if (!result.ok) return result;
429+
const result1 = ensureDbSchema(deps)(initMessage.dbSchema, dbSchema.value);
430+
if (!result1.ok) return result1;
437431

438432
const sync = createSync({
439433
...deps,
@@ -456,20 +450,9 @@ const createDbWorkerDeps = async (
456450

457451
sync.value.useOwner(true, appOwner);
458452

459-
const tabQueryRowsCacheMap = new Map<Id, QueryRowsCache>();
460-
461-
const getQueryRowsCache = (tabId: Id) => {
462-
let cache = tabQueryRowsCacheMap.get(tabId);
463-
if (!cache) {
464-
cache = createQueryRowsCache();
465-
tabQueryRowsCacheMap.set(tabId, cache);
466-
}
467-
return cache;
468-
};
469-
470453
return ok({
471454
...deps,
472-
getQueryRowsCache,
455+
getQueryRowsCache: createGetQueryRowsCache(),
473456
postMessage,
474457
sync: sync.value,
475458
appOwner,
@@ -718,41 +701,3 @@ const handlers: Omit<MessageHandlers<DbWorkerInput, DbWorkerDeps>, "init"> = {
718701
deps.sync.useOwner(message.use, message.owner);
719702
},
720703
};
721-
722-
const loadQueries =
723-
(deps: GetQueryRowsCacheDep & SqliteDep) =>
724-
(
725-
tabId: Id,
726-
queries: ReadonlyArray<Query>,
727-
): Result<ReadonlyArray<QueryPatches>, SqliteError> => {
728-
const queriesRows = [];
729-
730-
for (const query of queries) {
731-
const sqlQuery = deserializeQuery(query);
732-
const result = deps.sqlite.exec(sqlQuery);
733-
if (!result.ok) return result;
734-
735-
queriesRows.push([query, result.value.rows] as const);
736-
if (sqlQuery.options?.logExplainQueryPlan) {
737-
explainSqliteQueryPlan(deps)(sqlQuery);
738-
}
739-
}
740-
741-
const queryRowsCache = deps.getQueryRowsCache(tabId);
742-
743-
const previousState = queryRowsCache.get();
744-
queryRowsCache.set(queriesRows);
745-
746-
const currentState = queryRowsCache.get();
747-
748-
const queryPatchesArray = queries.map(
749-
(query): QueryPatches => ({
750-
query,
751-
patches: makePatches(
752-
previousState.get(query),
753-
currentState.get(query) ?? emptyRows,
754-
),
755-
}),
756-
);
757-
return ok(queryPatchesArray);
758-
};

packages/common/src/local-first/Diff.ts

Lines changed: 0 additions & 144 deletions
This file was deleted.

packages/common/src/local-first/Evolu.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@ import {
3737
} from "../Type.js";
3838
import { IntentionalNever } from "../Types.js";
3939
import { CreateDbWorkerDep, DbConfig, defaultDbConfig } from "./Db.js";
40-
import { applyPatches } from "./Diff.js";
4140
import { AppOwner } from "./Owner.js";
4241
import { FlushSyncDep, ReloadAppDep } from "./Platform.js";
4342
import { ProtocolError } from "./Protocol.js";
4443
import {
44+
applyPatches,
4545
createSubscribedQueries,
4646
emptyRows,
4747
Queries,

packages/common/src/local-first/PublicKysely.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
TableNode,
1414
ValueNode,
1515
} from "kysely";
16-
import { kyselyJsonIdentifier } from "./Diff.js";
16+
import { kyselyJsonIdentifier } from "./Query.js";
1717

1818
export { sql } from "kysely";
1919
export type { NotNull } from "kysely";

0 commit comments

Comments
 (0)