From 4cc99aec910c23cec9a9dadb5acb3aceb821215c Mon Sep 17 00:00:00 2001 From: Pablo Baleztena Date: Wed, 16 Oct 2024 01:53:38 -0300 Subject: [PATCH] Format files and configure workspace formatting in vscode --- .vscode/settings.json | 5 +- .../fabric/core/src/array/array-element.ts | 12 ++-- .../fabric/core/src/error/tagged-error.ts | 6 +- .../fabric/core/src/result/async-result.ts | 4 +- packages/fabric/core/src/result/result.ts | 10 +-- packages/fabric/core/src/run/run.test.ts | 4 +- packages/fabric/core/src/run/run.ts | 44 ++++++++----- packages/fabric/core/src/time/posix-date.ts | 3 +- .../fabric/core/src/variant/match.test.ts | 2 +- packages/fabric/core/src/variant/match.ts | 12 ++-- .../src/errors/circular-dependency-error.ts | 3 +- .../fabric/domain/src/events/event-store.ts | 8 +-- packages/fabric/domain/src/events/event.ts | 2 +- .../fabric/domain/src/files/is-mime-type.ts | 2 +- .../domain/src/models/fields/decimal.ts | 5 +- .../domain/src/models/fields/embedded.ts | 5 +- .../domain/src/models/fields/field-to-type.ts | 17 ++--- .../fabric/domain/src/models/fields/float.ts | 5 +- .../domain/src/models/fields/integer.ts | 5 +- .../src/models/fields/reference-field.test.ts | 10 +-- .../src/models/fields/reference-field.ts | 22 +++---- .../domain/src/models/fields/string-field.ts | 5 +- .../domain/src/models/fields/timestamp.ts | 5 +- .../domain/src/models/fields/uuid-field.ts | 5 +- packages/fabric/domain/src/models/model.ts | 8 +-- .../domain/src/models/query/filter-options.ts | 9 ++- .../fabric/domain/src/models/query/query.ts | 16 ++--- .../fabric/domain/src/models/state-store.ts | 4 +- .../domain/src/projections/projection.ts | 2 +- .../src/use-case/use-case-definition.ts | 4 +- .../fabric/domain/src/use-case/use-case.ts | 6 +- .../src/utils/sort-by-dependencies.test.ts | 2 +- .../domain/src/utils/sort-by-dependencies.ts | 6 +- .../sqlite-store/src/events/event-store.ts | 33 +++++----- .../src/sqlite/filter-to-sql.test.ts | 2 +- .../sqlite-store/src/sqlite/filter-to-sql.ts | 62 +++++++++++-------- .../src/sqlite/model-to-sql.test.ts | 2 +- .../sqlite-store/src/sqlite/model-to-sql.ts | 4 +- .../sqlite-store/src/sqlite/record-utils.ts | 2 +- .../sqlite-store/src/sqlite/sql-to-value.ts | 2 +- .../src/sqlite/sqlite-database.ts | 4 +- .../sqlite-store/src/sqlite/value-to-sql.ts | 2 +- .../sqlite-store/src/state/query-builder.ts | 20 +++--- .../src/state/state-store.test.ts | 2 +- .../sqlite-store/src/state/state-store.ts | 41 ++++++------ 45 files changed, 230 insertions(+), 204 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 88651e3..9defb3e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -17,5 +17,8 @@ }, "typescript.preferences.importModuleSpecifierEnding": "js", "cSpell.words": ["autodocs", "Syntropy"], - "typescript.preferences.autoImportFileExcludePatterns": ["**/chai/**"] + "typescript.preferences.autoImportFileExcludePatterns": ["**/chai/**"], + "[typescript]": { + "editor.defaultFormatter": "denoland.vscode-deno" + } } diff --git a/packages/fabric/core/src/array/array-element.ts b/packages/fabric/core/src/array/array-element.ts index cb1c634..d122829 100644 --- a/packages/fabric/core/src/array/array-element.ts +++ b/packages/fabric/core/src/array/array-element.ts @@ -1,17 +1,17 @@ /** * Get the element type of an array. */ -export type ArrayElement = - T extends readonly (infer U)[] ? U : never; +export type ArrayElement = T extends + readonly (infer U)[] ? U : never; /** * Get the first element type of a tuple. */ -export type TupleFirstElement = - T extends readonly [infer U, ...unknown[]] ? U : never; +export type TupleFirstElement = T extends + readonly [infer U, ...unknown[]] ? U : never; /** * Get the LAST element type of a tuple. */ -export type TupleLastElement = - T extends readonly [...unknown[], infer U] ? U : never; +export type TupleLastElement = T extends + readonly [...unknown[], infer U] ? U : never; diff --git a/packages/fabric/core/src/error/tagged-error.ts b/packages/fabric/core/src/error/tagged-error.ts index 5c26f9e..4f9ee94 100644 --- a/packages/fabric/core/src/error/tagged-error.ts +++ b/packages/fabric/core/src/error/tagged-error.ts @@ -3,10 +3,8 @@ import { type TaggedVariant, VariantTag } from "../variant/index.ts"; /** * A TaggedError is a tagged variant with an error message. */ -export abstract class TaggedError - extends Error - implements TaggedVariant -{ +export abstract class TaggedError extends Error + implements TaggedVariant { readonly [VariantTag]: Tag; constructor(tag: Tag, message?: string) { diff --git a/packages/fabric/core/src/result/async-result.ts b/packages/fabric/core/src/result/async-result.ts index 82b35da..6bd6e58 100644 --- a/packages/fabric/core/src/result/async-result.ts +++ b/packages/fabric/core/src/result/async-result.ts @@ -10,13 +10,13 @@ import { Result } from "./result.ts"; */ export type AsyncResult< TValue = any, - TError extends TaggedError = never + TError extends TaggedError = never, > = Promise>; export namespace AsyncResult { export async function tryFrom( fn: () => MaybePromise, - errorMapper: (error: any) => TError + errorMapper: (error: any) => TError, ): AsyncResult { try { return Result.succeedWith(await fn()); diff --git a/packages/fabric/core/src/result/result.ts b/packages/fabric/core/src/result/result.ts index da51cca..dd1fda8 100644 --- a/packages/fabric/core/src/result/result.ts +++ b/packages/fabric/core/src/result/result.ts @@ -24,7 +24,7 @@ export class Result { static tryFrom( fn: () => T, - errorMapper: (error: any) => TError + errorMapper: (error: any) => TError, ): Result { try { return Result.succeedWith(fn()); @@ -83,7 +83,7 @@ export class Result { * Map a function over the value of the result. */ map( - fn: (value: TValue) => TMappedValue + fn: (value: TValue) => TMappedValue, ): Result { if (!isError(this.value)) { return Result.succeedWith(fn(this.value as TValue)); @@ -96,7 +96,7 @@ export class Result { * Maps a function over the value of the result and flattens the result. */ flatMap( - fn: (value: TValue) => Result + fn: (value: TValue) => Result, ): Result { if (!isError(this.value)) { return fn(this.value as TValue) as any; @@ -111,7 +111,7 @@ export class Result { */ tryMap( fn: (value: TValue) => TMappedValue, - errMapper: (error: any) => TError + errMapper: (error: any) => TError, ): Result { if (!isError(this.value)) { try { @@ -128,7 +128,7 @@ export class Result { * Map a function over the error of the result. */ mapError( - fn: (error: TError) => TMappedError + fn: (error: TError) => TMappedError, ): Result { if (isError(this.value)) { return Result.failWith(fn(this.value as TError)); diff --git a/packages/fabric/core/src/run/run.test.ts b/packages/fabric/core/src/run/run.test.ts index fc03d1e..36b4357 100644 --- a/packages/fabric/core/src/run/run.test.ts +++ b/packages/fabric/core/src/run/run.test.ts @@ -10,7 +10,7 @@ describe("Run", () => { const result = await Run.seq( async () => Result.succeedWith(1), async (x) => Result.succeedWith(x + 1), - async (x) => Result.succeedWith(x * 2) + async (x) => Result.succeedWith(x * 2), ); expect(result.unwrapOrThrow()).toEqual(4); @@ -20,7 +20,7 @@ describe("Run", () => { const result = await Run.seq( async () => Result.succeedWith(1), async () => Result.failWith(new UnexpectedError()), - async (x) => Result.succeedWith(x * 2) + async (x) => Result.succeedWith(x * 2), ); expect(result.isError()).toBe(true); diff --git a/packages/fabric/core/src/run/run.ts b/packages/fabric/core/src/run/run.ts index 462332f..133e836 100644 --- a/packages/fabric/core/src/run/run.ts +++ b/packages/fabric/core/src/run/run.ts @@ -5,17 +5,22 @@ import type { AsyncResult } from "../result/async-result.ts"; export namespace Run { // prettier-ignore export async function seq< - T1, TE1 extends TaggedError, - T2, TE2 extends TaggedError, + T1, + TE1 extends TaggedError, + T2, + TE2 extends TaggedError, >( fn1: () => AsyncResult, fn2: (value: T1) => AsyncResult, ): AsyncResult; // prettier-ignore export async function seq< - T1, TE1 extends TaggedError, - T2, TE2 extends TaggedError, - T3, TE3 extends TaggedError, + T1, + TE1 extends TaggedError, + T2, + TE2 extends TaggedError, + T3, + TE3 extends TaggedError, >( fn1: () => AsyncResult, fn2: (value: T1) => AsyncResult, @@ -23,10 +28,14 @@ export namespace Run { ): AsyncResult; // prettier-ignore export async function seq< - T1, TE1 extends TaggedError, - T2, TE2 extends TaggedError, - T3, TE3 extends TaggedError, - T4, TE4 extends TaggedError, + T1, + TE1 extends TaggedError, + T2, + TE2 extends TaggedError, + T3, + TE3 extends TaggedError, + T4, + TE4 extends TaggedError, >( fn1: () => AsyncResult, fn2: (value: T1) => AsyncResult, @@ -51,17 +60,22 @@ export namespace Run { // prettier-ignore export async function seqUNSAFE< - T1, TE1 extends TaggedError, - T2, TE2 extends TaggedError, + T1, + TE1 extends TaggedError, + T2, + TE2 extends TaggedError, >( fn1: () => AsyncResult, fn2: (value: T1) => AsyncResult, ): Promise; // prettier-ignore export async function seqUNSAFE< - T1,TE1 extends TaggedError, - T2,TE2 extends TaggedError, - T3,TE3 extends TaggedError, + T1, + TE1 extends TaggedError, + T2, + TE2 extends TaggedError, + T3, + TE3 extends TaggedError, >( fn1: () => AsyncResult, fn2: (value: T1) => AsyncResult, @@ -80,7 +94,7 @@ export namespace Run { } export async function UNSAFE( - fn: () => AsyncResult + fn: () => AsyncResult, ): Promise { return (await fn()).unwrapOrThrow(); } diff --git a/packages/fabric/core/src/time/posix-date.ts b/packages/fabric/core/src/time/posix-date.ts index 6b39054..03a3fbf 100644 --- a/packages/fabric/core/src/time/posix-date.ts +++ b/packages/fabric/core/src/time/posix-date.ts @@ -22,8 +22,9 @@ export class PosixDate { "timestamp" in value && value["type"] === "posix-date" && typeof value["timestamp"] === "number" - ) + ) { return true; + } return false; } } diff --git a/packages/fabric/core/src/variant/match.test.ts b/packages/fabric/core/src/variant/match.test.ts index 62c2f4f..ad19712 100644 --- a/packages/fabric/core/src/variant/match.test.ts +++ b/packages/fabric/core/src/variant/match.test.ts @@ -31,5 +31,5 @@ Deno.test( V2: (v) => v.b, }) ).toThrow("Non-exhaustive pattern match"); - } + }, ); diff --git a/packages/fabric/core/src/variant/match.ts b/packages/fabric/core/src/variant/match.ts index a6d29b1..ceb05fb 100644 --- a/packages/fabric/core/src/variant/match.ts +++ b/packages/fabric/core/src/variant/match.ts @@ -1,12 +1,16 @@ import type { Fn } from "../types/fn.ts"; -import { type TaggedVariant, type VariantFromTag, VariantTag } from "./variant.ts"; +import { + type TaggedVariant, + type VariantFromTag, + VariantTag, +} from "./variant.ts"; export type VariantMatcher, T> = { [K in TVariant[VariantTag]]: Fn, T>; }; export function match>( - v: TVariant + v: TVariant, ) { return { case< @@ -14,14 +18,14 @@ export function match>( const TMatcher extends VariantMatcher< TVariant, TReturnType - > = VariantMatcher + > = VariantMatcher, >(cases: TMatcher): TReturnType { if (!(v[VariantTag] in cases)) { throw new Error("Non-exhaustive pattern match"); } return cases[v[VariantTag] as TVariant[VariantTag]]( - v as Extract + v as Extract, ); }, }; diff --git a/packages/fabric/domain/src/errors/circular-dependency-error.ts b/packages/fabric/domain/src/errors/circular-dependency-error.ts index 954c8f2..02132d2 100644 --- a/packages/fabric/domain/src/errors/circular-dependency-error.ts +++ b/packages/fabric/domain/src/errors/circular-dependency-error.ts @@ -1,6 +1,7 @@ import { TaggedError } from "@fabric/core"; -export class CircularDependencyError extends TaggedError<"CircularDependencyError"> { +export class CircularDependencyError + extends TaggedError<"CircularDependencyError"> { context: { key: string; dep: string }; constructor(key: string, dep: string) { super("CircularDependencyError"); diff --git a/packages/fabric/domain/src/events/event-store.ts b/packages/fabric/domain/src/events/event-store.ts index e50c715..6df1d48 100644 --- a/packages/fabric/domain/src/events/event-store.ts +++ b/packages/fabric/domain/src/events/event-store.ts @@ -15,21 +15,21 @@ export interface EventStore { * Store a new event in the event store. */ append( - event: T + event: T, ): AsyncResult, StoreQueryError>; getEventsFromStream( - streamId: UUID + streamId: UUID, ): AsyncResult[], StoreQueryError>; subscribe( events: TEventKey[], - subscriber: EventSubscriber> + subscriber: EventSubscriber>, ): void; } export type EventSubscriber = ( - event: StoredEvent + event: StoredEvent, ) => MaybePromise; export interface EventFilterOptions { diff --git a/packages/fabric/domain/src/events/event.ts b/packages/fabric/domain/src/events/event.ts index 4e2894d..a363dba 100644 --- a/packages/fabric/domain/src/events/event.ts +++ b/packages/fabric/domain/src/events/event.ts @@ -14,5 +14,5 @@ export interface Event { export type EventFromKey< TEvents extends Event, - TKey extends TEvents[VariantTag] + TKey extends TEvents[VariantTag], > = Extract; diff --git a/packages/fabric/domain/src/files/is-mime-type.ts b/packages/fabric/domain/src/files/is-mime-type.ts index 67cd1d6..af07781 100644 --- a/packages/fabric/domain/src/files/is-mime-type.ts +++ b/packages/fabric/domain/src/files/is-mime-type.ts @@ -5,7 +5,7 @@ import type { MimeType } from "./mime-type.ts"; */ export function isMimeType( expectedMimeType: T, - actualMimeType: string + actualMimeType: string, ): actualMimeType is T { return actualMimeType.match("^" + expectedMimeType + "$") !== null; } diff --git a/packages/fabric/domain/src/models/fields/decimal.ts b/packages/fabric/domain/src/models/fields/decimal.ts index 42eb3fd..36269f0 100644 --- a/packages/fabric/domain/src/models/fields/decimal.ts +++ b/packages/fabric/domain/src/models/fields/decimal.ts @@ -8,11 +8,10 @@ export interface DecimalFieldOptions extends BaseField { } export interface DecimalField - extends TaggedVariant<"DecimalField">, - DecimalFieldOptions {} + extends TaggedVariant<"DecimalField">, DecimalFieldOptions {} export function createDecimalField( - opts: T = {} as T + opts: T = {} as T, ): DecimalField & T { return { [VariantTag]: "DecimalField", diff --git a/packages/fabric/domain/src/models/fields/embedded.ts b/packages/fabric/domain/src/models/fields/embedded.ts index 22ae2f4..0bda75a 100644 --- a/packages/fabric/domain/src/models/fields/embedded.ts +++ b/packages/fabric/domain/src/models/fields/embedded.ts @@ -5,12 +5,11 @@ import type { BaseField } from "./base-field.ts"; export interface EmbeddedFieldOptions extends BaseField {} export interface EmbeddedField - extends TaggedVariant<"EmbeddedField">, - EmbeddedFieldOptions {} + extends TaggedVariant<"EmbeddedField">, EmbeddedFieldOptions {} export function createEmbeddedField< K = any, - T extends EmbeddedFieldOptions = EmbeddedFieldOptions + T extends EmbeddedFieldOptions = EmbeddedFieldOptions, >(opts: T = {} as T): EmbeddedField & T { return { [VariantTag]: "EmbeddedField", diff --git a/packages/fabric/domain/src/models/fields/field-to-type.ts b/packages/fabric/domain/src/models/fields/field-to-type.ts index 823b938..1230405 100644 --- a/packages/fabric/domain/src/models/fields/field-to-type.ts +++ b/packages/fabric/domain/src/models/fields/field-to-type.ts @@ -14,23 +14,24 @@ import type { UUIDField } from "./uuid-field.ts"; * Converts a field definition to its corresponding TypeScript type. */ //prettier-ignore -export type FieldToType = - TField extends StringField ? MaybeOptional +export type FieldToType = TField extends StringField + ? MaybeOptional : TField extends UUIDField ? MaybeOptional : TField extends IntegerField ? IntegerFieldToType : TField extends ReferenceField ? MaybeOptional : TField extends DecimalField ? MaybeOptional : TField extends FloatField ? MaybeOptional : TField extends TimestampField ? MaybeOptional - : TField extends EmbeddedField ? MaybeOptional + : TField extends EmbeddedField + ? MaybeOptional : never; //prettier-ignore -type IntegerFieldToType = TField["hasArbitraryPrecision"] extends true - ? MaybeOptional - : TField["hasArbitraryPrecision"] extends false - ? MaybeOptional - : MaybeOptional; +type IntegerFieldToType = + TField["hasArbitraryPrecision"] extends true ? MaybeOptional + : TField["hasArbitraryPrecision"] extends false + ? MaybeOptional + : MaybeOptional; type MaybeOptional = TField extends { isOptional: true } ? TType | null diff --git a/packages/fabric/domain/src/models/fields/float.ts b/packages/fabric/domain/src/models/fields/float.ts index f80ed06..b107f7c 100644 --- a/packages/fabric/domain/src/models/fields/float.ts +++ b/packages/fabric/domain/src/models/fields/float.ts @@ -4,11 +4,10 @@ import type { BaseField } from "./base-field.ts"; export interface FloatFieldOptions extends BaseField {} export interface FloatField - extends TaggedVariant<"FloatField">, - FloatFieldOptions {} + extends TaggedVariant<"FloatField">, FloatFieldOptions {} export function createFloatField( - opts: T = {} as T + opts: T = {} as T, ): FloatField & T { return { [VariantTag]: "FloatField", diff --git a/packages/fabric/domain/src/models/fields/integer.ts b/packages/fabric/domain/src/models/fields/integer.ts index c5e0aeb..6b8cc58 100644 --- a/packages/fabric/domain/src/models/fields/integer.ts +++ b/packages/fabric/domain/src/models/fields/integer.ts @@ -7,11 +7,10 @@ export interface IntegerFieldOptions extends BaseField { } export interface IntegerField - extends TaggedVariant<"IntegerField">, - IntegerFieldOptions {} + extends TaggedVariant<"IntegerField">, IntegerFieldOptions {} export function createIntegerField( - opts: T = {} as T + opts: T = {} as T, ): IntegerField & T { return { [VariantTag]: "IntegerField", diff --git a/packages/fabric/domain/src/models/fields/reference-field.test.ts b/packages/fabric/domain/src/models/fields/reference-field.test.ts index 4b1ccf6..54b99eb 100644 --- a/packages/fabric/domain/src/models/fields/reference-field.test.ts +++ b/packages/fabric/domain/src/models/fields/reference-field.test.ts @@ -25,7 +25,7 @@ describe("Validate Reference Field", () => { schema, Field.reference({ targetModel: "foo", - }) + }), ).unwrapErrorOrThrow(); expect(result).toBeInstanceOf(InvalidReferenceFieldError); @@ -36,7 +36,7 @@ describe("Validate Reference Field", () => { schema, Field.reference({ targetModel: "User", - }) + }), ).unwrapOrThrow(); }); @@ -46,7 +46,7 @@ describe("Validate Reference Field", () => { Field.reference({ targetModel: "User", targetKey: "foo", - }) + }), ).unwrapErrorOrThrow(); expect(result).toBeInstanceOf(InvalidReferenceFieldError); @@ -58,7 +58,7 @@ describe("Validate Reference Field", () => { Field.reference({ targetModel: "User", targetKey: "otherNotUnique", - }) + }), ).unwrapErrorOrThrow(); expect(result).toBeInstanceOf(InvalidReferenceFieldError); @@ -70,7 +70,7 @@ describe("Validate Reference Field", () => { Field.reference({ targetModel: "User", targetKey: "otherUnique", - }) + }), ); if (isError(result)) { diff --git a/packages/fabric/domain/src/models/fields/reference-field.ts b/packages/fabric/domain/src/models/fields/reference-field.ts index 9b8f4ce..87c08dd 100644 --- a/packages/fabric/domain/src/models/fields/reference-field.ts +++ b/packages/fabric/domain/src/models/fields/reference-field.ts @@ -13,11 +13,10 @@ export interface ReferenceFieldOptions extends BaseField { } export interface ReferenceField - extends TaggedVariant<"ReferenceField">, - ReferenceFieldOptions {} + extends TaggedVariant<"ReferenceField">, ReferenceFieldOptions {} export function createReferenceField( - opts: T = {} as T + opts: T = {} as T, ): ReferenceField & T { return { [VariantTag]: "ReferenceField", @@ -31,21 +30,21 @@ export function getTargetKey(field: ReferenceField): string { export function validateReferenceField( schema: ModelSchema, - field: ReferenceField + field: ReferenceField, ): Result { if (!schema[field.targetModel]) { return Result.failWith( new InvalidReferenceFieldError( - `The target model '${field.targetModel}' is not in the schema.` - ) + `The target model '${field.targetModel}' is not in the schema.`, + ), ); } if (field.targetKey && !schema[field.targetModel]!.fields[field.targetKey]) { return Result.failWith( new InvalidReferenceFieldError( - `The target key '${field.targetKey}' is not in the target model '${field.targetModel}'.` - ) + `The target key '${field.targetKey}' is not in the target model '${field.targetModel}'.`, + ), ); } @@ -55,15 +54,16 @@ export function validateReferenceField( ) { return Result.failWith( new InvalidReferenceFieldError( - `The target key '${field.targetModel}'.'${field.targetKey}' is not unique.` - ) + `The target key '${field.targetModel}'.'${field.targetKey}' is not unique.`, + ), ); } return Result.ok(); } -export class InvalidReferenceFieldError extends TaggedError<"InvalidReferenceField"> { +export class InvalidReferenceFieldError + extends TaggedError<"InvalidReferenceField"> { constructor(readonly reason: string) { super("InvalidReferenceField"); } diff --git a/packages/fabric/domain/src/models/fields/string-field.ts b/packages/fabric/domain/src/models/fields/string-field.ts index 959ed77..d39654a 100644 --- a/packages/fabric/domain/src/models/fields/string-field.ts +++ b/packages/fabric/domain/src/models/fields/string-field.ts @@ -7,11 +7,10 @@ export interface StringFieldOptions extends BaseField { } export interface StringField - extends TaggedVariant<"StringField">, - StringFieldOptions {} + extends TaggedVariant<"StringField">, StringFieldOptions {} export function createStringField( - opts: T = {} as T + opts: T = {} as T, ): StringField & T { return { [VariantTag]: "StringField", diff --git a/packages/fabric/domain/src/models/fields/timestamp.ts b/packages/fabric/domain/src/models/fields/timestamp.ts index e55e2cb..5e4da2d 100644 --- a/packages/fabric/domain/src/models/fields/timestamp.ts +++ b/packages/fabric/domain/src/models/fields/timestamp.ts @@ -4,11 +4,10 @@ import type { BaseField } from "./base-field.ts"; export interface TimestampFieldOptions extends BaseField {} export interface TimestampField - extends TaggedVariant<"TimestampField">, - TimestampFieldOptions {} + extends TaggedVariant<"TimestampField">, TimestampFieldOptions {} export function createTimestampField( - opts: T = {} as T + opts: T = {} as T, ): TimestampField & T { return { [VariantTag]: "TimestampField", diff --git a/packages/fabric/domain/src/models/fields/uuid-field.ts b/packages/fabric/domain/src/models/fields/uuid-field.ts index 2df4850..c20b128 100644 --- a/packages/fabric/domain/src/models/fields/uuid-field.ts +++ b/packages/fabric/domain/src/models/fields/uuid-field.ts @@ -6,11 +6,10 @@ export interface UUIDFieldOptions extends BaseField { } export interface UUIDField - extends TaggedVariant<"UUIDField">, - UUIDFieldOptions {} + extends TaggedVariant<"UUIDField">, UUIDFieldOptions {} export function createUUIDField( - opts: T = {} as T + opts: T = {} as T, ): UUIDField & T { return { [VariantTag]: "UUIDField", diff --git a/packages/fabric/domain/src/models/model.ts b/packages/fabric/domain/src/models/model.ts index ac03c7c..ab800ee 100644 --- a/packages/fabric/domain/src/models/model.ts +++ b/packages/fabric/domain/src/models/model.ts @@ -6,7 +6,7 @@ export type CustomModelFields = Record; export interface Collection< TName extends string = string, - TFields extends CustomModelFields = CustomModelFields + TFields extends CustomModelFields = CustomModelFields, > { name: TName; fields: TFields; @@ -24,14 +24,14 @@ export const DefaultModelFields = { export interface Model< TName extends string = string, - TFields extends CustomModelFields = CustomModelFields + TFields extends CustomModelFields = CustomModelFields, > extends Collection { fields: typeof DefaultModelFields & TFields; } export function defineModel< TName extends string, - TFields extends CustomModelFields + TFields extends CustomModelFields, >(name: TName, fields: TFields): Model { return { name, @@ -41,7 +41,7 @@ export function defineModel< export function defineCollection< TName extends string, - TFields extends CustomModelFields + TFields extends CustomModelFields, >(name: TName, fields: TFields): Collection { return { name, diff --git a/packages/fabric/domain/src/models/query/filter-options.ts b/packages/fabric/domain/src/models/query/filter-options.ts index efe0c86..bbff14f 100644 --- a/packages/fabric/domain/src/models/query/filter-options.ts +++ b/packages/fabric/domain/src/models/query/filter-options.ts @@ -20,11 +20,10 @@ export const FILTER_OPTION_TYPE_SYMBOL = "_filter_type"; export const FILTER_OPTION_VALUE_SYMBOL = "_filter_value"; export const FILTER_OPTION_OPERATOR_SYMBOL = "_filter_operator"; -export type LikeFilterOption = T extends string - ? { - [FILTER_OPTION_TYPE_SYMBOL]: "like"; - [FILTER_OPTION_VALUE_SYMBOL]: string; - } +export type LikeFilterOption = T extends string ? { + [FILTER_OPTION_TYPE_SYMBOL]: "like"; + [FILTER_OPTION_VALUE_SYMBOL]: string; + } : never; export interface InFilterOption { diff --git a/packages/fabric/domain/src/models/query/query.ts b/packages/fabric/domain/src/models/query/query.ts index e5a01a9..63ed2f1 100644 --- a/packages/fabric/domain/src/models/query/query.ts +++ b/packages/fabric/domain/src/models/query/query.ts @@ -11,12 +11,12 @@ export interface StoreQuery { select(): AsyncResult; select>( - keys: K[] + keys: K[], ): AsyncResult[], StoreQueryError>; selectOne(): AsyncResult, StoreQueryError>; selectOne>( - keys: K[] + keys: K[], ): AsyncResult>, StoreQueryError>; } @@ -26,12 +26,12 @@ export interface StoreSortableQuery { select(): AsyncResult; select>( - keys: K[] + keys: K[], ): AsyncResult[], StoreQueryError>; selectOne(): AsyncResult, StoreQueryError>; selectOne>( - keys: K[] + keys: K[], ): AsyncResult>, StoreQueryError>; } @@ -40,24 +40,24 @@ export interface StoreLimitableQuery { select(): AsyncResult; select>( - keys: K[] + keys: K[], ): AsyncResult[], StoreQueryError>; selectOne(): AsyncResult, StoreQueryError>; selectOne>( - keys: K[] + keys: K[], ): AsyncResult>, StoreQueryError>; } export interface SelectableQuery { select(): AsyncResult; select>( - keys: K[] + keys: K[], ): AsyncResult[], StoreQueryError>; selectOne(): AsyncResult, StoreQueryError>; selectOne>( - keys: K[] + keys: K[], ): AsyncResult>, StoreQueryError>; } diff --git a/packages/fabric/domain/src/models/state-store.ts b/packages/fabric/domain/src/models/state-store.ts index 0c38278..6f9959d 100644 --- a/packages/fabric/domain/src/models/state-store.ts +++ b/packages/fabric/domain/src/models/state-store.ts @@ -6,7 +6,7 @@ import type { StoreQuery } from "./query/query.ts"; export interface ReadonlyStateStore { from>( - collection: T + collection: T, ): StoreQuery[T]>>; } @@ -14,6 +14,6 @@ export interface WritableStateStore extends ReadonlyStateStore { insertInto>( collection: T, - record: ModelToType[T]> + record: ModelToType[T]>, ): AsyncResult; } diff --git a/packages/fabric/domain/src/projections/projection.ts b/packages/fabric/domain/src/projections/projection.ts index cfc03bf..75e85b6 100644 --- a/packages/fabric/domain/src/projections/projection.ts +++ b/packages/fabric/domain/src/projections/projection.ts @@ -8,6 +8,6 @@ export interface Projection { events: TEvents[VariantTag][]; projection: ( event: StoredEvent, - model?: ModelToType + model?: ModelToType, ) => ModelToType; } diff --git a/packages/fabric/domain/src/use-case/use-case-definition.ts b/packages/fabric/domain/src/use-case/use-case-definition.ts index f3f76c2..1eb4726 100644 --- a/packages/fabric/domain/src/use-case/use-case-definition.ts +++ b/packages/fabric/domain/src/use-case/use-case-definition.ts @@ -6,14 +6,14 @@ export type UseCaseDefinition< TDependencies = any, TPayload = any, TOutput = any, - TErrors extends TaggedError = any + TErrors extends TaggedError = any, > = BasicUseCaseDefinition; interface BasicUseCaseDefinition< TDependencies, TPayload, TOutput, - TErrors extends TaggedError + TErrors extends TaggedError, > { /** * The use case name. diff --git a/packages/fabric/domain/src/use-case/use-case.ts b/packages/fabric/domain/src/use-case/use-case.ts index 330be6b..eeb8a2c 100644 --- a/packages/fabric/domain/src/use-case/use-case.ts +++ b/packages/fabric/domain/src/use-case/use-case.ts @@ -11,6 +11,6 @@ export type UseCase< > = TPayload extends undefined ? (dependencies: TDependencies) => AsyncResult : ( - dependencies: TDependencies, - payload: TPayload, - ) => AsyncResult; + dependencies: TDependencies, + payload: TPayload, + ) => AsyncResult; diff --git a/packages/fabric/domain/src/utils/sort-by-dependencies.test.ts b/packages/fabric/domain/src/utils/sort-by-dependencies.test.ts index a0edd87..4998d2b 100644 --- a/packages/fabric/domain/src/utils/sort-by-dependencies.test.ts +++ b/packages/fabric/domain/src/utils/sort-by-dependencies.test.ts @@ -35,7 +35,7 @@ describe("sortByDependencies", () => { sortByDependencies(array, { keyGetter: (element) => element.name, depGetter: (element) => element.dependencies, - }).unwrapErrorOrThrow() + }).unwrapErrorOrThrow(), ).toBeInstanceOf(CircularDependencyError); }); diff --git a/packages/fabric/domain/src/utils/sort-by-dependencies.ts b/packages/fabric/domain/src/utils/sort-by-dependencies.ts index 9a45f3e..81e7bbf 100644 --- a/packages/fabric/domain/src/utils/sort-by-dependencies.ts +++ b/packages/fabric/domain/src/utils/sort-by-dependencies.ts @@ -9,7 +9,7 @@ export function sortByDependencies( }: { keyGetter: (element: T) => string; depGetter: (element: T) => string[]; - } + }, ): Result { const graph = new Map(); const visited = new Set(); @@ -40,9 +40,9 @@ export function sortByDependencies( visit(key, []); }); return sorted.map( - (key) => array.find((element) => keyGetter(element) === key) as T + (key) => array.find((element) => keyGetter(element) === key) as T, ); }, - (e) => e as CircularDependencyError + (e) => e as CircularDependencyError, ); } diff --git a/packages/fabric/sqlite-store/src/events/event-store.ts b/packages/fabric/sqlite-store/src/events/event-store.ts index 752a05a..4516cbe 100644 --- a/packages/fabric/sqlite-store/src/events/event-store.ts +++ b/packages/fabric/sqlite-store/src/events/event-store.ts @@ -18,8 +18,7 @@ import { import { SQLiteDatabase } from "../sqlite/sqlite-database.ts"; export class SQLiteEventStore - implements EventStore -{ + implements EventStore { private db: SQLiteDatabase; private streamVersions = new Map(); @@ -46,15 +45,15 @@ export class SQLiteEventStore timestamp NUMERIC NOT NULL, payload TEXT NOT NULL, UNIQUE(streamId, version) - )` + )`, ); }, - (error) => new StoreQueryError(error.message) + (error) => new StoreQueryError(error.message), ); } getEventsFromStream( - streamId: UUID + streamId: UUID, ): AsyncResult[], StoreQueryError> { return AsyncResult.tryFrom( () => { @@ -70,16 +69,16 @@ export class SQLiteEventStore version: BigInt(e.version), timestamp: new PosixDate(e.timestamp), payload: JSONUtils.parse(e.payload), - }) + }), ); return events; }, - (error) => new StoreQueryError(error.message) + (error) => new StoreQueryError(error.message), ); } append( - event: T + event: T, ): AsyncResult, StoreQueryError> { return Run.seq( () => this.getLastVersion(event.streamId), @@ -93,7 +92,7 @@ export class SQLiteEventStore AsyncResult.from(async () => { await this.notifySubscribers(storedEvent); return storedEvent; - }) + }), ); } @@ -111,20 +110,20 @@ export class SQLiteEventStore `SELECT max(version) as lastVersion FROM events WHERE streamId = $id`, { $id: streamId, - } + }, ); return !lastVersion ? 0n : BigInt(lastVersion); }, - (error) => new StoreQueryError(error.message) + (error) => new StoreQueryError(error.message), ); } subscribe( eventNames: TEventKey[], subscriber: ( - event: StoredEvent> - ) => MaybePromise + event: StoredEvent>, + ) => MaybePromise, ): void { eventNames.forEach((event) => { const subscribers = this.eventSubscribers.get(event) || []; @@ -139,14 +138,14 @@ export class SQLiteEventStore close(): AsyncResult { return AsyncResult.tryFrom( () => this.db.close(), - (error) => new StoreQueryError(error.message) + (error) => new StoreQueryError(error.message), ); } private storeEvent( streamId: UUID, version: bigint, - event: T + event: T, ): AsyncResult, StoreQueryError> { return AsyncResult.tryFrom( () => { @@ -165,11 +164,11 @@ export class SQLiteEventStore $version: storedEvent.version.toString(), $timestamp: storedEvent.timestamp.timestamp, $payload: JSON.stringify(storedEvent.payload), - } + }, ); return storedEvent; }, - (error) => new StoreQueryError(error.message) + (error) => new StoreQueryError(error.message), ); } } diff --git a/packages/fabric/sqlite-store/src/sqlite/filter-to-sql.test.ts b/packages/fabric/sqlite-store/src/sqlite/filter-to-sql.test.ts index ed2d951..14df5e0 100644 --- a/packages/fabric/sqlite-store/src/sqlite/filter-to-sql.test.ts +++ b/packages/fabric/sqlite-store/src/sqlite/filter-to-sql.test.ts @@ -135,7 +135,7 @@ describe("SQL where clause from filter options", () => { const result = filterToSQL(opts); const params = filterToParams(col, opts); expect(result).toEqual( - "WHERE (name IN ($where_name_0_0,$where_name_0_1) AND age > $where_age_0) OR (status <> $where_status_1 AND salary > $where_salary_1) OR (rating < $where_rating_2 AND quantity >= $where_quantity_2)" + "WHERE (name IN ($where_name_0_0,$where_name_0_1) AND age > $where_age_0) OR (status <> $where_status_1 AND salary > $where_salary_1) OR (rating < $where_rating_2 AND quantity >= $where_quantity_2)", ); expect(params).toEqual({ $where_name_0_0: "John", diff --git a/packages/fabric/sqlite-store/src/sqlite/filter-to-sql.ts b/packages/fabric/sqlite-store/src/sqlite/filter-to-sql.ts index a43f971..60c96ff 100644 --- a/packages/fabric/sqlite-store/src/sqlite/filter-to-sql.ts +++ b/packages/fabric/sqlite-store/src/sqlite/filter-to-sql.ts @@ -16,20 +16,22 @@ import { fieldValueToSQL } from "./value-to-sql.ts"; export function filterToSQL(filterOptions?: FilterOptions) { if (!filterOptions) return ""; - if (Array.isArray(filterOptions)) + if (Array.isArray(filterOptions)) { return `WHERE ${getWhereFromMultiOption(filterOptions)}`; + } return `WHERE ${getWhereFromSingleOption(filterOptions)}`; } export function filterToParams( collection: Collection, - filterOptions?: FilterOptions + filterOptions?: FilterOptions, ) { if (!filterOptions) return {}; - if (Array.isArray(filterOptions)) + if (Array.isArray(filterOptions)) { return getParamsFromMultiFilterOption(collection, filterOptions); + } return getParamsFromSingleFilterOption(collection, filterOptions); } @@ -38,14 +40,14 @@ function getWhereFromMultiOption(filterOptions: MultiFilterOption) { return filterOptions .map( (option, i) => - `(${getWhereFromSingleOption(option, { postfix: `_${i}` })})` + `(${getWhereFromSingleOption(option, { postfix: `_${i}` })})`, ) .join(" OR "); } function getWhereFromSingleOption( filterOptions: SingleFilterOption, - opts: { postfix?: string } = {} + opts: { postfix?: string } = {}, ) { return Object.entries(filterOptions) .map(([key, value]) => getWhereFromKeyValue(key, value, opts)) @@ -61,7 +63,7 @@ function getWhereParamKey(key: string, opts: { postfix?: string } = {}) { function getWhereFromKeyValue( key: string, value: FilterValue, - opts: { postfix?: string } = {} + opts: { postfix?: string } = {}, ) { if (value == undefined) { return `${key} IS NULL`; @@ -73,19 +75,25 @@ function getWhereFromKeyValue( } if (value[FILTER_OPTION_TYPE_SYMBOL] === "in") { - return `${key} IN (${value[FILTER_OPTION_VALUE_SYMBOL].map( - (_v: any, i: number) => - `${getWhereParamKey(key, { - postfix: opts.postfix ? `${opts.postfix}_${i}` : `_${i}`, - })}` - ).join(",")})`; + return `${key} IN (${ + value[FILTER_OPTION_VALUE_SYMBOL].map( + (_v: any, i: number) => + `${ + getWhereParamKey(key, { + postfix: opts.postfix ? `${opts.postfix}_${i}` : `_${i}`, + }) + }`, + ).join(",") + })`; } if (value[FILTER_OPTION_TYPE_SYMBOL] === "comparison") { - return `${key} ${value[FILTER_OPTION_OPERATOR_SYMBOL]} ${getWhereParamKey( - key, - opts - )}`; + return `${key} ${value[FILTER_OPTION_OPERATOR_SYMBOL]} ${ + getWhereParamKey( + key, + opts, + ) + }`; } } return `${key} = ${getWhereParamKey(key, opts)}`; @@ -93,7 +101,7 @@ function getWhereFromKeyValue( function getParamsFromMultiFilterOption( collection: Collection, - filterOptions: MultiFilterOption + filterOptions: MultiFilterOption, ) { return filterOptions.reduce( (acc, filterOption, i) => ({ @@ -102,14 +110,14 @@ function getParamsFromMultiFilterOption( postfix: `_${i}`, }), }), - {} + {}, ); } function getParamsFromSingleFilterOption( collection: Collection, filterOptions: SingleFilterOption, - opts: { postfix?: string } = {} + opts: { postfix?: string } = {}, ) { return Object.entries(filterOptions) .filter(([, value]) => { @@ -122,10 +130,10 @@ function getParamsFromSingleFilterOption( collection.fields[key]!, key, value, - opts + opts, ), }), - {} + {}, ); } @@ -147,7 +155,7 @@ function getParamsForFilterKeyValue( field: FieldDefinition, key: string, value: FilterValue, - opts: { postfix?: string } = {} + opts: { postfix?: string } = {}, ) { if (typeof value === "object") { if (value[FILTER_OPTION_TYPE_SYMBOL] === "in") { @@ -155,12 +163,14 @@ function getParamsForFilterKeyValue( (acc: Record, _: any, i: number) => { return { ...acc, - [getWhereParamKey(key, { - postfix: opts.postfix ? `${opts.postfix}_${i}` : `_${i}`, - })]: value[FILTER_OPTION_VALUE_SYMBOL][i], + [ + getWhereParamKey(key, { + postfix: opts.postfix ? `${opts.postfix}_${i}` : `_${i}`, + }) + ]: value[FILTER_OPTION_VALUE_SYMBOL][i], }; }, - {} + {}, ); } } diff --git a/packages/fabric/sqlite-store/src/sqlite/model-to-sql.test.ts b/packages/fabric/sqlite-store/src/sqlite/model-to-sql.test.ts index 2749655..fc23cd5 100644 --- a/packages/fabric/sqlite-store/src/sqlite/model-to-sql.test.ts +++ b/packages/fabric/sqlite-store/src/sqlite/model-to-sql.test.ts @@ -16,7 +16,7 @@ describe("ModelToSQL", () => { const result = modelToSql(model); expect(result).toEqual( - `CREATE TABLE something (id TEXT PRIMARY KEY, name TEXT NOT NULL, age INTEGER NOT NULL, date NUMERIC NOT NULL, reference TEXT NOT NULL REFERENCES somethingElse(id))` + `CREATE TABLE something (id TEXT PRIMARY KEY, name TEXT NOT NULL, age INTEGER NOT NULL, date NUMERIC NOT NULL, reference TEXT NOT NULL REFERENCES somethingElse(id))`, ); }); }); diff --git a/packages/fabric/sqlite-store/src/sqlite/model-to-sql.ts b/packages/fabric/sqlite-store/src/sqlite/model-to-sql.ts index 724d582..7a95068 100644 --- a/packages/fabric/sqlite-store/src/sqlite/model-to-sql.ts +++ b/packages/fabric/sqlite-store/src/sqlite/model-to-sql.ts @@ -5,7 +5,7 @@ import { Collection, FieldDefinition, getTargetKey } from "@fabric/domain"; type FieldSQLDefinitionMap = { [K in FieldDefinition[VariantTag]]: ( name: string, - field: Extract + field: Extract, ) => string; }; @@ -61,7 +61,7 @@ function modifiersFromOpts(field: FieldDefinition) { } export function modelToSql( - model: Collection> + model: Collection>, ) { const fields = Object.entries(model.fields) .map(([name, type]) => fieldDefinitionToSQL(name, type)) diff --git a/packages/fabric/sqlite-store/src/sqlite/record-utils.ts b/packages/fabric/sqlite-store/src/sqlite/record-utils.ts index 1c6ab9c..93cdf82 100644 --- a/packages/fabric/sqlite-store/src/sqlite/record-utils.ts +++ b/packages/fabric/sqlite-store/src/sqlite/record-utils.ts @@ -29,7 +29,7 @@ export function recordToSQLParams(model: Model, record: Record) { ...acc, [keyToParam(key)]: fieldValueToSQL(model.fields[key]!, record[key]), }), - {} + {}, ); } diff --git a/packages/fabric/sqlite-store/src/sqlite/sql-to-value.ts b/packages/fabric/sqlite-store/src/sqlite/sql-to-value.ts index 96b20f6..d262edd 100644 --- a/packages/fabric/sqlite-store/src/sqlite/sql-to-value.ts +++ b/packages/fabric/sqlite-store/src/sqlite/sql-to-value.ts @@ -24,7 +24,7 @@ function valueFromSQL(field: FieldDefinition, value: any): any { type FieldSQLInsertMap = { [K in FieldDefinition[VariantTag]]: ( field: Extract, - value: any + value: any, ) => FieldToType>; }; const FieldSQLInsertMap: FieldSQLInsertMap = { diff --git a/packages/fabric/sqlite-store/src/sqlite/sqlite-database.ts b/packages/fabric/sqlite-store/src/sqlite/sqlite-database.ts index a9a9b01..dfee30a 100644 --- a/packages/fabric/sqlite-store/src/sqlite/sqlite-database.ts +++ b/packages/fabric/sqlite-store/src/sqlite/sqlite-database.ts @@ -44,7 +44,7 @@ export class SQLiteDatabase { allPrepared( sql: string, params?: Record, - transformer?: (row: any) => any + transformer?: (row: any) => any, ) { const cachedStmt = this.getCachedStatement(sql); @@ -56,7 +56,7 @@ export class SQLiteDatabase { onePrepared( sql: string, params?: Record, - transformer?: (row: any) => any + transformer?: (row: any) => any, ) { const cachedStmt = this.getCachedStatement(sql); diff --git a/packages/fabric/sqlite-store/src/sqlite/value-to-sql.ts b/packages/fabric/sqlite-store/src/sqlite/value-to-sql.ts index fb507dc..9e449df 100644 --- a/packages/fabric/sqlite-store/src/sqlite/value-to-sql.ts +++ b/packages/fabric/sqlite-store/src/sqlite/value-to-sql.ts @@ -5,7 +5,7 @@ import { FieldDefinition, FieldToType } from "@fabric/domain"; type FieldSQLInsertMap = { [K in FieldDefinition[VariantTag]]: ( field: Extract, - value: FieldToType> + value: FieldToType>, ) => any; }; const FieldSQLInsertMap: FieldSQLInsertMap = { diff --git a/packages/fabric/sqlite-store/src/state/query-builder.ts b/packages/fabric/sqlite-store/src/state/query-builder.ts index 555e4fc..3a555a6 100644 --- a/packages/fabric/sqlite-store/src/state/query-builder.ts +++ b/packages/fabric/sqlite-store/src/state/query-builder.ts @@ -20,7 +20,7 @@ export class QueryBuilder implements StoreQuery { constructor( private db: SQLiteDatabase, private schema: ModelSchema, - private query: QueryDefinition + private query: QueryDefinition, ) {} where(where: FilterOptions): StoreSortableQuery { @@ -47,7 +47,7 @@ export class QueryBuilder implements StoreQuery { select(): AsyncResult; select>( - keys: K[] + keys: K[], ): AsyncResult[], StoreQueryError>; select>(keys?: K[]): AsyncResult { return AsyncResult.tryFrom( @@ -57,21 +57,21 @@ export class QueryBuilder implements StoreQuery { { ...this.query, keys: keys!, - } + }, ); return this.db.allPrepared( sql, params, - transformRow(this.schema[this.query.from]!) + transformRow(this.schema[this.query.from]!), ); }, - (err) => new StoreQueryError(err.message) + (err) => new StoreQueryError(err.message), ); } selectOne(): AsyncResult, StoreQueryError>; selectOne>( - keys: K[] + keys: K[], ): AsyncResult>, StoreQueryError>; selectOne>(keys?: K[]): AsyncResult { return AsyncResult.tryFrom( @@ -82,22 +82,22 @@ export class QueryBuilder implements StoreQuery { ...this.query, keys: keys!, limit: 1, - } + }, ); return await this.db.onePrepared( stmt, params, - transformRow(this.schema[this.query.from]!) + transformRow(this.schema[this.query.from]!), ); }, - (err) => new StoreQueryError(err.message) + (err) => new StoreQueryError(err.message), ); } } export function getSelectStatement( collection: Collection, - query: QueryDefinition + query: QueryDefinition, ): [string, Record] { const selectFields = query.keys ? query.keys.join(", ") : "*"; diff --git a/packages/fabric/sqlite-store/src/state/state-store.test.ts b/packages/fabric/sqlite-store/src/state/state-store.test.ts index 96ed741..1521a00 100644 --- a/packages/fabric/sqlite-store/src/state/state-store.test.ts +++ b/packages/fabric/sqlite-store/src/state/state-store.test.ts @@ -110,7 +110,7 @@ describe("State Store", () => { streamId: UUIDGeneratorMock.generate(), streamVersion: 1n, deletedAt: null, - }) + }), ); const result = await Run.UNSAFE(() => diff --git a/packages/fabric/sqlite-store/src/state/state-store.ts b/packages/fabric/sqlite-store/src/state/state-store.ts index 12d1843..a8d8b0a 100644 --- a/packages/fabric/sqlite-store/src/state/state-store.ts +++ b/packages/fabric/sqlite-store/src/state/state-store.ts @@ -20,8 +20,7 @@ import { SQLiteDatabase } from "../sqlite/sqlite-database.ts"; import { QueryBuilder } from "./query-builder.ts"; export class SQLiteStateStore - implements WritableStateStore -{ + implements WritableStateStore { private schema: ModelSchemaFromModels; private db: SQLiteDatabase; @@ -38,25 +37,27 @@ export class SQLiteStateStore insertInto>( collection: T, - record: ModelToType[T]> + record: ModelToType[T]>, ): AsyncResult { const model = this.schema[collection]; return AsyncResult.tryFrom( () => { this.db.runPrepared( - `INSERT INTO ${model.name} (${recordToSQLKeys( - record - )}) VALUES (${recordToSQLKeyParams(record)})`, - recordToSQLParams(model, record) + `INSERT INTO ${model.name} (${ + recordToSQLKeys( + record, + ) + }) VALUES (${recordToSQLKeyParams(record)})`, + recordToSQLParams(model, record), ); }, - (error) => new StoreQueryError(error.message) + (error) => new StoreQueryError(error.message), ); } from>( - collection: T + collection: T, ): StoreQuery[T]>> { return new QueryBuilder(this.db, this.schema, { from: collection, @@ -66,7 +67,7 @@ export class SQLiteStateStore update>( collection: T, id: UUID, - record: Partial[T]>> + record: Partial[T]>>, ): AsyncResult { const model = this.schema[collection]; @@ -77,19 +78,21 @@ export class SQLiteStateStore id, }); this.db.runPrepared( - `UPDATE ${model.name} SET ${recordToSQLSet( - record - )} WHERE id = ${keyToParam("id")}`, - params + `UPDATE ${model.name} SET ${ + recordToSQLSet( + record, + ) + } WHERE id = ${keyToParam("id")}`, + params, ); }, - (error) => new StoreQueryError(error.message) + (error) => new StoreQueryError(error.message), ); } delete>( collection: T, - id: UUID + id: UUID, ): AsyncResult { const model = this.schema[collection]; @@ -97,10 +100,10 @@ export class SQLiteStateStore () => { this.db.runPrepared( `DELETE FROM ${model.name} WHERE id = ${keyToParam("id")}`, - { $id: id } + { $id: id }, ); }, - (error) => new StoreQueryError(error.message) + (error) => new StoreQueryError(error.message), ); } @@ -116,7 +119,7 @@ export class SQLiteStateStore } }); }, - (error) => new StoreQueryError(error.message) + (error) => new StoreQueryError(error.message), ); }