From c38f74414b955b571a7471074e9fff6fadd2b864 Mon Sep 17 00:00:00 2001 From: Pablo Baleztena Date: Thu, 17 Oct 2024 14:41:14 -0300 Subject: [PATCH] [fabric/sqlite-store] Refactor collection references to use new model definitions --- packages/fabric/sqlite-store/sqlite/filter-to-sql.test.ts | 4 ++-- packages/fabric/sqlite-store/sqlite/filter-to-sql.ts | 8 ++++---- packages/fabric/sqlite-store/sqlite/model-to-sql.test.ts | 4 ++-- packages/fabric/sqlite-store/sqlite/model-to-sql.ts | 4 ++-- packages/fabric/sqlite-store/sqlite/record-utils.ts | 5 ++++- packages/fabric/sqlite-store/sqlite/sql-to-value.ts | 4 ++-- packages/fabric/sqlite-store/state/query-builder.ts | 4 ++-- packages/fabric/sqlite-store/state/state-store.test.ts | 6 +++--- packages/fabric/sqlite-store/state/state-store.ts | 2 +- 9 files changed, 22 insertions(+), 19 deletions(-) diff --git a/packages/fabric/sqlite-store/sqlite/filter-to-sql.test.ts b/packages/fabric/sqlite-store/sqlite/filter-to-sql.test.ts index 14df5e0..e74c899 100644 --- a/packages/fabric/sqlite-store/sqlite/filter-to-sql.test.ts +++ b/packages/fabric/sqlite-store/sqlite/filter-to-sql.test.ts @@ -1,5 +1,5 @@ import { - defineCollection, + defineModel, Field, isGreaterOrEqualTo, isGreaterThan, @@ -13,7 +13,7 @@ import { describe, expect, test } from "@fabric/testing"; import { filterToParams, filterToSQL } from "./filter-to-sql.ts"; describe("SQL where clause from filter options", () => { - const col = defineCollection("users", { + const col = defineModel("users", { name: Field.string(), age: Field.integer(), status: Field.string(), diff --git a/packages/fabric/sqlite-store/sqlite/filter-to-sql.ts b/packages/fabric/sqlite-store/sqlite/filter-to-sql.ts index 60c96ff..e3c291f 100644 --- a/packages/fabric/sqlite-store/sqlite/filter-to-sql.ts +++ b/packages/fabric/sqlite-store/sqlite/filter-to-sql.ts @@ -1,12 +1,12 @@ // deno-lint-ignore-file no-explicit-any import { - Collection, FieldDefinition, FILTER_OPTION_OPERATOR_SYMBOL, FILTER_OPTION_TYPE_SYMBOL, FILTER_OPTION_VALUE_SYMBOL, FilterOptions, FilterValue, + Model, MultiFilterOption, SingleFilterOption, } from "@fabric/domain"; @@ -24,7 +24,7 @@ export function filterToSQL(filterOptions?: FilterOptions) { } export function filterToParams( - collection: Collection, + collection: Model, filterOptions?: FilterOptions, ) { if (!filterOptions) return {}; @@ -100,7 +100,7 @@ function getWhereFromKeyValue( } function getParamsFromMultiFilterOption( - collection: Collection, + collection: Model, filterOptions: MultiFilterOption, ) { return filterOptions.reduce( @@ -115,7 +115,7 @@ function getParamsFromMultiFilterOption( } function getParamsFromSingleFilterOption( - collection: Collection, + collection: Model, filterOptions: SingleFilterOption, opts: { postfix?: string } = {}, ) { diff --git a/packages/fabric/sqlite-store/sqlite/model-to-sql.test.ts b/packages/fabric/sqlite-store/sqlite/model-to-sql.test.ts index fc23cd5..ca89898 100644 --- a/packages/fabric/sqlite-store/sqlite/model-to-sql.test.ts +++ b/packages/fabric/sqlite-store/sqlite/model-to-sql.test.ts @@ -1,9 +1,9 @@ -import { defineCollection, Field } from "@fabric/domain"; +import { defineModel, Field } from "@fabric/domain"; import { describe, expect, test } from "@fabric/testing"; import { modelToSql } from "./model-to-sql.ts"; describe("ModelToSQL", () => { - const model = defineCollection("something", { + const model = defineModel("something", { id: Field.uuid({ isPrimaryKey: true }), name: Field.string(), age: Field.integer(), diff --git a/packages/fabric/sqlite-store/sqlite/model-to-sql.ts b/packages/fabric/sqlite-store/sqlite/model-to-sql.ts index 7a95068..741ee66 100644 --- a/packages/fabric/sqlite-store/sqlite/model-to-sql.ts +++ b/packages/fabric/sqlite-store/sqlite/model-to-sql.ts @@ -1,6 +1,6 @@ // deno-lint-ignore-file no-explicit-any import { Variant, VariantTag } from "@fabric/core"; -import { Collection, FieldDefinition, getTargetKey } from "@fabric/domain"; +import { FieldDefinition, getTargetKey, Model } from "@fabric/domain"; type FieldSQLDefinitionMap = { [K in FieldDefinition[VariantTag]]: ( @@ -61,7 +61,7 @@ function modifiersFromOpts(field: FieldDefinition) { } export function modelToSql( - model: Collection>, + model: Model>, ) { const fields = Object.entries(model.fields) .map(([name, type]) => fieldDefinitionToSQL(name, type)) diff --git a/packages/fabric/sqlite-store/sqlite/record-utils.ts b/packages/fabric/sqlite-store/sqlite/record-utils.ts index 93cdf82..fec48e0 100644 --- a/packages/fabric/sqlite-store/sqlite/record-utils.ts +++ b/packages/fabric/sqlite-store/sqlite/record-utils.ts @@ -23,7 +23,10 @@ export function recordToSQLKeyParams(record: Record) { /** * Unfold a record into a string of it's keys separated by commas. */ -export function recordToSQLParams(model: Model, record: Record) { +export function recordToSQLParams( + model: Model, + record: Record, +) { return Object.keys(record).reduce( (acc, key) => ({ ...acc, diff --git a/packages/fabric/sqlite-store/sqlite/sql-to-value.ts b/packages/fabric/sqlite-store/sqlite/sql-to-value.ts index d262edd..5157320 100644 --- a/packages/fabric/sqlite-store/sqlite/sql-to-value.ts +++ b/packages/fabric/sqlite-store/sqlite/sql-to-value.ts @@ -1,8 +1,8 @@ // deno-lint-ignore-file no-explicit-any import { PosixDate, VariantTag } from "@fabric/core"; -import { Collection, FieldDefinition, FieldToType } from "@fabric/domain"; +import { FieldDefinition, FieldToType, Model } from "@fabric/domain"; -export function transformRow(model: Collection) { +export function transformRow(model: Model) { return (row: Record) => { const result: Record = {}; for (const key in row) { diff --git a/packages/fabric/sqlite-store/state/query-builder.ts b/packages/fabric/sqlite-store/state/query-builder.ts index 8fd1ac8..3c197d5 100644 --- a/packages/fabric/sqlite-store/state/query-builder.ts +++ b/packages/fabric/sqlite-store/state/query-builder.ts @@ -1,8 +1,8 @@ // deno-lint-ignore-file no-explicit-any import { AsyncResult, Keyof, Optional } from "@fabric/core"; import { - Collection, FilterOptions, + Model, ModelSchema, OrderByOptions, SelectableQuery, @@ -128,7 +128,7 @@ export class QueryBuilder implements StoreQuery { } export function getSelectStatement( - collection: Collection, + collection: Model, query: StoreQueryDefinition, ): [string, Record] { const selectFields = query.keys ? query.keys.join(", ") : "*"; diff --git a/packages/fabric/sqlite-store/state/state-store.test.ts b/packages/fabric/sqlite-store/state/state-store.test.ts index 3b8a1f7..2442216 100644 --- a/packages/fabric/sqlite-store/state/state-store.test.ts +++ b/packages/fabric/sqlite-store/state/state-store.test.ts @@ -1,5 +1,5 @@ import { PosixDate, Run } from "@fabric/core"; -import { defineModel, Field, isLike, UUID } from "@fabric/domain"; +import { defineAggregateModel, Field, isLike, UUID } from "@fabric/domain"; import { UUIDGeneratorMock } from "@fabric/domain/mocks"; import { afterEach, @@ -13,11 +13,11 @@ import { SQLiteStateStore } from "./state-store.ts"; describe("State Store", () => { const models = [ - defineModel("demo", { + defineAggregateModel("demo", { value: Field.float(), owner: Field.reference({ targetModel: "users" }), }), - defineModel("users", { + defineAggregateModel("users", { name: Field.string(), }), ]; diff --git a/packages/fabric/sqlite-store/state/state-store.ts b/packages/fabric/sqlite-store/state/state-store.ts index a8d8b0a..a7dc8a1 100644 --- a/packages/fabric/sqlite-store/state/state-store.ts +++ b/packages/fabric/sqlite-store/state/state-store.ts @@ -1,6 +1,6 @@ import { AsyncResult, UnexpectedError } from "@fabric/core"; import { - Model, + type Model, ModelSchemaFromModels, ModelToType, StoreQuery,