@livestore/common 0.1.0 → 0.2.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/__tests__/fixture.d.ts +46 -34
  3. package/dist/__tests__/fixture.d.ts.map +1 -1
  4. package/dist/adapter-types.d.ts +1 -1
  5. package/dist/adapter-types.js +1 -1
  6. package/dist/derived-mutations.d.ts +4 -4
  7. package/dist/derived-mutations.d.ts.map +1 -1
  8. package/dist/derived-mutations.js.map +1 -1
  9. package/dist/devtools/devtools-messages.d.ts +45 -45
  10. package/dist/devtools/devtools-messages.js +1 -1
  11. package/dist/devtools/devtools-messages.js.map +1 -1
  12. package/dist/index.d.ts +1 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +1 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/mutation.d.ts +1 -1
  17. package/dist/mutation.d.ts.map +1 -1
  18. package/dist/mutation.js +6 -1
  19. package/dist/mutation.js.map +1 -1
  20. package/dist/query-builder/api.d.ts +190 -0
  21. package/dist/query-builder/api.d.ts.map +1 -0
  22. package/dist/query-builder/api.js +8 -0
  23. package/dist/query-builder/api.js.map +1 -0
  24. package/dist/query-builder/impl.d.ts +12 -0
  25. package/dist/query-builder/impl.d.ts.map +1 -0
  26. package/dist/query-builder/impl.js +226 -0
  27. package/dist/query-builder/impl.js.map +1 -0
  28. package/dist/query-builder/impl.test.d.ts +2 -0
  29. package/dist/query-builder/impl.test.d.ts.map +1 -0
  30. package/dist/query-builder/impl.test.js +183 -0
  31. package/dist/query-builder/impl.test.js.map +1 -0
  32. package/dist/query-builder/mod.d.ts +10 -0
  33. package/dist/query-builder/mod.d.ts.map +1 -0
  34. package/dist/query-builder/mod.js +10 -0
  35. package/dist/query-builder/mod.js.map +1 -0
  36. package/dist/query-info.d.ts +29 -39
  37. package/dist/query-info.d.ts.map +1 -1
  38. package/dist/query-info.js +4 -35
  39. package/dist/query-info.js.map +1 -1
  40. package/dist/schema/index.d.ts +2 -2
  41. package/dist/schema/index.d.ts.map +1 -1
  42. package/dist/schema/index.js +1 -0
  43. package/dist/schema/index.js.map +1 -1
  44. package/dist/schema/schema-helpers.d.ts +2 -2
  45. package/dist/schema/schema-helpers.d.ts.map +1 -1
  46. package/dist/schema/system-tables.d.ts +246 -204
  47. package/dist/schema/system-tables.d.ts.map +1 -1
  48. package/dist/schema/table-def.d.ts +45 -24
  49. package/dist/schema/table-def.d.ts.map +1 -1
  50. package/dist/schema/table-def.js +10 -1
  51. package/dist/schema/table-def.js.map +1 -1
  52. package/dist/sql-queries/sql-queries.d.ts +1 -0
  53. package/dist/sql-queries/sql-queries.d.ts.map +1 -1
  54. package/dist/sql-queries/sql-queries.js +8 -5
  55. package/dist/sql-queries/sql-queries.js.map +1 -1
  56. package/dist/version.d.ts +1 -1
  57. package/dist/version.js +1 -1
  58. package/package.json +3 -3
  59. package/src/adapter-types.ts +1 -1
  60. package/src/derived-mutations.ts +4 -8
  61. package/src/devtools/devtools-messages.ts +1 -1
  62. package/src/index.ts +1 -0
  63. package/src/mutation.ts +9 -2
  64. package/src/query-builder/api.ts +288 -0
  65. package/src/query-builder/impl.test.ts +205 -0
  66. package/src/query-builder/impl.ts +268 -0
  67. package/src/query-builder/mod.ts +10 -0
  68. package/src/query-info.ts +66 -93
  69. package/src/schema/index.ts +4 -2
  70. package/src/schema/schema-helpers.ts +2 -2
  71. package/src/schema/table-def.ts +99 -68
  72. package/src/sql-queries/sql-queries.ts +9 -6
  73. package/src/version.ts +1 -1
package/dist/index.js CHANGED
@@ -13,4 +13,5 @@ export * as Devtools from './devtools/index.js';
13
13
  export * from './debug-info.js';
14
14
  export * from './bounded-collections.js';
15
15
  export * from './version.js';
16
+ export * from './query-builder/mod.js';
16
17
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,uCAAuC,CAAA;AACrD,cAAc,mCAAmC,CAAA;AACjD,cAAc,eAAe,CAAA;AAC7B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,uCAAuC,CAAA;AACrD,cAAc,mCAAmC,CAAA;AACjD,cAAc,eAAe,CAAA;AAC7B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,cAAc,CAAA;AAC5B,cAAc,wBAAwB,CAAA"}
@@ -10,5 +10,5 @@ export declare const getExecArgsFromMutation: ({ mutationDef, mutationEventDecod
10
10
  writeTables: ReadonlySet<string> | undefined;
11
11
  }>;
12
12
  export declare const makeShouldExcludeMutationFromLog: (schema: LiveStoreSchema) => (mutationName: string, mutationEventDecoded: MutationEvent.Any) => boolean;
13
- export declare const replaceSessionIdSymbol: (bindValues: Record<string, unknown>, sessionId: string) => void;
13
+ export declare const replaceSessionIdSymbol: (bindValues: Record<string, unknown> | ReadonlyArray<unknown>, sessionId: string) => void;
14
14
  //# sourceMappingURL=mutation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mutation.d.ts","sourceRoot":"","sources":["../src/mutation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAGnD,eAAO,MAAM,uBAAuB,2CAGjC;IACD,WAAW,EAAE,WAAW,CAAC,GAAG,CAAA;IAC5B,oBAAoB,EAAE,aAAa,CAAC,GAAG,CAAA;CACxC,KAAG,aAAa,CAAC;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,kBAAkB,CAAA;IAC9B,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;CAC7C,CAiCA,CAAA;AAED,eAAO,MAAM,gCAAgC,WAAyB,eAAe,oBAO7D,MAAM,wBAAwB,aAAa,CAAC,GAAG,KAAG,OAQxE,CAAA;AAIF,eAAO,MAAM,sBAAsB,eAAgB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,MAAM,SAE5F,CAAA"}
1
+ {"version":3,"file":"mutation.d.ts","sourceRoot":"","sources":["../src/mutation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAGnD,eAAO,MAAM,uBAAuB,2CAGjC;IACD,WAAW,EAAE,WAAW,CAAC,GAAG,CAAA;IAC5B,oBAAoB,EAAE,aAAa,CAAC,GAAG,CAAA;CACxC,KAAG,aAAa,CAAC;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,kBAAkB,CAAA;IAC9B,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;CAC7C,CAiCA,CAAA;AAED,eAAO,MAAM,gCAAgC,WAAyB,eAAe,oBAO7D,MAAM,wBAAwB,aAAa,CAAC,GAAG,KAAG,OAQxE,CAAA;AAIF,eAAO,MAAM,sBAAsB,eACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,aACjD,MAAM,SAGlB,CAAA"}
package/dist/mutation.js CHANGED
@@ -49,7 +49,12 @@ export const replaceSessionIdSymbol = (bindValues, sessionId) => {
49
49
  const deepReplaceValue = (input, searchValue, replaceValue) => {
50
50
  if (Array.isArray(input)) {
51
51
  for (const i in input) {
52
- deepReplaceValue(input[i], searchValue, replaceValue);
52
+ if (input[i] === searchValue) {
53
+ input[i] = replaceValue;
54
+ }
55
+ else {
56
+ deepReplaceValue(input[i], searchValue, replaceValue);
57
+ }
53
58
  }
54
59
  }
55
60
  else if (typeof input === 'object' && input !== null) {
@@ -1 +1 @@
1
- {"version":3,"file":"mutation.js","sourceRoot":"","sources":["../src/mutation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutation.js","sourceRoot":"","sources":["../src/mutation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,190 @@
1
+ import type { GetValForKey } from '@livestore/utils';
2
+ import { type Option, type Schema } from '@livestore/utils/effect';
3
+ import type { SessionIdSymbol } from '../adapter-types.js';
4
+ import type { QueryInfo } from '../query-info.js';
5
+ import type { DbSchema } from '../schema/index.js';
6
+ import type { SqliteDsl } from '../schema/table-def.js';
7
+ import type { SqlValue } from '../util.js';
8
+ export type QueryBuilderAst = QueryBuilderAst.SelectQuery | QueryBuilderAst.CountQuery | QueryBuilderAst.RowQuery;
9
+ export declare namespace QueryBuilderAst {
10
+ type SelectQuery = {
11
+ readonly _tag: 'SelectQuery';
12
+ readonly columns: string[];
13
+ readonly pickFirst: false | {
14
+ fallback: () => any;
15
+ };
16
+ readonly select: {
17
+ columns: ReadonlyArray<string>;
18
+ };
19
+ readonly orderBy: ReadonlyArray<OrderBy>;
20
+ readonly offset: Option.Option<number>;
21
+ readonly limit: Option.Option<number>;
22
+ readonly tableDef: DbSchema.TableDefBase;
23
+ readonly where: ReadonlyArray<QueryBuilderAst.Where>;
24
+ readonly resultSchemaSingle: Schema.Schema<any>;
25
+ };
26
+ type CountQuery = {
27
+ readonly _tag: 'CountQuery';
28
+ readonly tableDef: DbSchema.TableDefBase;
29
+ readonly where: ReadonlyArray<QueryBuilderAst.Where>;
30
+ readonly resultSchema: Schema.Schema<number, ReadonlyArray<{
31
+ count: number;
32
+ }>>;
33
+ };
34
+ type RowQuery = {
35
+ readonly _tag: 'RowQuery';
36
+ readonly tableDef: DbSchema.TableDefBase;
37
+ readonly id: string | SessionIdSymbol;
38
+ readonly insertValues: Record<string, unknown>;
39
+ };
40
+ type Where = {
41
+ readonly col: string;
42
+ readonly op: QueryBuilder.WhereOps;
43
+ readonly value: unknown;
44
+ };
45
+ type OrderBy = {
46
+ readonly col: string;
47
+ readonly direction: 'asc' | 'desc';
48
+ };
49
+ }
50
+ export declare const QueryBuilderAstSymbol: unique symbol;
51
+ export type QueryBuilderAstSymbol = typeof QueryBuilderAstSymbol;
52
+ export declare const TypeId: unique symbol;
53
+ export type TypeId = typeof TypeId;
54
+ export declare const isQueryBuilder: (value: unknown) => value is QueryBuilder<any, any, any>;
55
+ export type QueryBuilder<TResult, TTableDef extends DbSchema.TableDefBase,
56
+ /** Used to gradually remove features from the API based on the query context */
57
+ TWithout extends QueryBuilder.ApiFeature = never, TQueryInfo extends QueryInfo = QueryInfo.None> = {
58
+ readonly [TypeId]: TypeId;
59
+ readonly [QueryBuilderAstSymbol]: QueryBuilderAst;
60
+ readonly asSql: () => {
61
+ query: string;
62
+ bindValues: SqlValue[];
63
+ };
64
+ readonly toString: () => string;
65
+ } & Omit<QueryBuilder.ApiFull<TResult, TTableDef, TWithout, TQueryInfo>, TWithout>;
66
+ export declare namespace QueryBuilder {
67
+ type Any = QueryBuilder<any, any, any, any>;
68
+ type WhereOps = WhereOps.Equality | WhereOps.Order | WhereOps.Like | WhereOps.In;
69
+ namespace WhereOps {
70
+ type Equality = '=' | '!=';
71
+ type Order = '<' | '>' | '<=' | '>=';
72
+ type Like = 'LIKE' | 'NOT LIKE' | 'ILIKE' | 'NOT ILIKE';
73
+ type In = 'IN' | 'NOT IN';
74
+ type SingleValue = Equality | Order | Like;
75
+ type MultiValue = In;
76
+ }
77
+ type ApiFeature = 'select' | 'where' | 'count' | 'orderBy' | 'offset' | 'limit' | 'first' | 'row';
78
+ type WhereParams<TTableDef extends DbSchema.TableDefBase> = Partial<{
79
+ [K in keyof TTableDef['sqliteDef']['columns']]: TTableDef['sqliteDef']['columns'][K]['schema']['Type'] | {
80
+ op: QueryBuilder.WhereOps.SingleValue;
81
+ value: TTableDef['sqliteDef']['columns'][K]['schema']['Type'];
82
+ } | {
83
+ op: QueryBuilder.WhereOps.MultiValue;
84
+ value: ReadonlyArray<TTableDef['sqliteDef']['columns'][K]['schema']['Type']>;
85
+ } | undefined;
86
+ }>;
87
+ type OrderByParams<TTableDef extends DbSchema.TableDefBase> = ReadonlyArray<{
88
+ col: keyof TTableDef['sqliteDef']['columns'] & string;
89
+ direction: 'asc' | 'desc';
90
+ }>;
91
+ type ApiFull<TResult, TTableDef extends DbSchema.TableDefBase, TWithout extends ApiFeature, TQueryInfo extends QueryInfo> = {
92
+ /**
93
+ * `SELECT *` is the default
94
+ *
95
+ * Example:
96
+ * ```ts
97
+ * db.todos.select('id', 'text', 'completed')
98
+ * db.todos.select('id', { pluck: true })
99
+ * ```
100
+ */
101
+ readonly select: {
102
+ <TColumn extends keyof TTableDef['sqliteDef']['columns'] & string, TPluck extends boolean = false>(column: TColumn, options?: {
103
+ pluck: TPluck;
104
+ }): QueryBuilder<TPluck extends true ? ReadonlyArray<TTableDef['sqliteDef']['columns'][TColumn]['schema']['Type']> : ReadonlyArray<{
105
+ readonly [K in TColumn]: TTableDef['sqliteDef']['columns'][K]['schema']['Type'];
106
+ }>, TTableDef, TWithout | 'row' | 'select', TQueryInfo>;
107
+ <TColumns extends keyof TTableDef['sqliteDef']['columns'] & string>(...columns: TColumns[]): QueryBuilder<ReadonlyArray<{
108
+ readonly [K in TColumns]: TTableDef['sqliteDef']['columns'][K]['schema']['Type'];
109
+ }>, TTableDef, TWithout | 'row' | 'select' | 'count', TQueryInfo>;
110
+ };
111
+ /**
112
+ * Notes:
113
+ * - All where clauses are `AND`ed together by default.
114
+ * - `null` values only support `=` and `!=` which is translated to `IS NULL` and `IS NOT NULL`.
115
+ *
116
+ * Example:
117
+ * ```ts
118
+ * db.todos.where('completed', true)
119
+ * db.todos.where('completed', '!=', true)
120
+ * db.todos.where({ completed: true })
121
+ * db.todos.where({ completed: { op: '!=', value: true } })
122
+ * ```
123
+ *
124
+ * TODO: Also support `OR`
125
+ */
126
+ readonly where: {
127
+ <TParams extends QueryBuilder.WhereParams<TTableDef>>(params: TParams): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select', TQueryInfo>;
128
+ <TColName extends keyof TTableDef['sqliteDef']['columns']>(col: TColName, value: TTableDef['sqliteDef']['columns'][TColName]['schema']['Type']): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select', TQueryInfo>;
129
+ <TColName extends keyof TTableDef['sqliteDef']['columns']>(col: TColName, op: QueryBuilder.WhereOps, value: TTableDef['sqliteDef']['columns'][TColName]['schema']['Type']): QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'select', TQueryInfo>;
130
+ };
131
+ /**
132
+ * Example:
133
+ * ```ts
134
+ * db.todos.count()
135
+ * db.todos.count().where('completed', true)
136
+ * ```
137
+ */
138
+ readonly count: () => QueryBuilder<number, TTableDef, TWithout | 'row' | 'count' | 'select' | 'orderBy' | 'first' | 'offset' | 'limit', TQueryInfo>;
139
+ /**
140
+ * Example:
141
+ * ```ts
142
+ * db.todos.orderBy('createdAt', 'desc')
143
+ * ```
144
+ */
145
+ readonly orderBy: {
146
+ <TColName extends keyof TTableDef['sqliteDef']['columns'] & string>(col: TColName, direction: 'asc' | 'desc'): QueryBuilder<TResult, TTableDef, TWithout, TQueryInfo>;
147
+ <TParams extends QueryBuilder.OrderByParams<TTableDef>>(params: TParams): QueryBuilder<TResult, TTableDef, TWithout, TQueryInfo>;
148
+ };
149
+ /**
150
+ * Example:
151
+ * ```ts
152
+ * db.todos.offset(10)
153
+ * ```
154
+ */
155
+ readonly offset: (offset: number) => QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'offset' | 'orderBy', TQueryInfo>;
156
+ /**
157
+ * Example:
158
+ * ```ts
159
+ * db.todos.limit(10)
160
+ * ```
161
+ */
162
+ readonly limit: (limit: number) => QueryBuilder<TResult, TTableDef, TWithout | 'row' | 'limit' | 'offset' | 'first' | 'orderBy', TQueryInfo>;
163
+ /**
164
+ * Example:
165
+ * ```ts
166
+ * db.todos.first()
167
+ * ```
168
+ */
169
+ readonly first: <TFallback extends GetSingle<TResult> = never>(options?: {
170
+ fallback?: () => TFallback;
171
+ }) => QueryBuilder<TFallback | GetSingle<TResult>, TTableDef, TWithout | 'row' | 'first' | 'orderBy' | 'select' | 'limit' | 'offset' | 'where', TQueryInfo>;
172
+ /**
173
+ *
174
+ */
175
+ readonly row: TTableDef['options']['isSingleton'] extends true ? () => QueryBuilder<RowQuery.Result<TTableDef>, TTableDef, QueryBuilder.ApiFeature, QueryInfo.Row> : TTableDef['options']['deriveMutations']['enabled'] extends false ? (_: 'Error: Need to enable deriveMutations to use row()') => any : TTableDef['options']['requiredInsertColumnNames'] extends never ? (id: string | SessionIdSymbol) => QueryBuilder<RowQuery.Result<TTableDef>, TTableDef, QueryBuilder.ApiFeature, QueryInfo.Row> : <TOptions extends RowQuery.RequiredColumnsOptions<TTableDef>>(id: string | SessionIdSymbol, opts: TOptions) => QueryBuilder<RowQuery.Result<TTableDef>, TTableDef, QueryBuilder.ApiFeature, QueryInfo.Row>;
176
+ };
177
+ }
178
+ export declare namespace RowQuery {
179
+ type RequiredColumnsOptions<TTableDef extends DbSchema.TableDefBase> = {
180
+ /**
181
+ * Values to be inserted into the row if it doesn't exist yet
182
+ */
183
+ insertValues: Pick<SqliteDsl.FromColumns.RowDecodedAll<TTableDef['sqliteDef']['columns']>, SqliteDsl.FromColumns.RequiredInsertColumnNames<Omit<TTableDef['sqliteDef']['columns'], 'id'>>>;
184
+ };
185
+ type Result<TTableDef extends DbSchema.TableDefBase> = TTableDef['options']['isSingleColumn'] extends true ? GetValForKey<SqliteDsl.FromColumns.RowDecoded<TTableDef['sqliteDef']['columns']>, 'value'> : SqliteDsl.FromColumns.RowDecoded<TTableDef['sqliteDef']['columns']>;
186
+ type ResultEncoded<TTableDef extends DbSchema.TableDefBase> = TTableDef['options']['isSingleColumn'] extends true ? GetValForKey<SqliteDsl.FromColumns.RowEncoded<TTableDef['sqliteDef']['columns']>, 'value'> : SqliteDsl.FromColumns.RowEncoded<TTableDef['sqliteDef']['columns']>;
187
+ }
188
+ type GetSingle<T> = T extends ReadonlyArray<infer U> ? U : never;
189
+ export {};
190
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/query-builder/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Predicate } from '@livestore/utils/effect';
2
+ export const QueryBuilderAstSymbol = Symbol.for('QueryBuilderAst');
3
+ export const TypeId = Symbol.for('QueryBuilder');
4
+ export const isQueryBuilder = (value) => Predicate.hasProperty(value, TypeId);
5
+ // export type QueryBuilderParamRef = { _tag: 'QueryBuilderParamRef' }
6
+ // export type QueryBuilderSelectParams = { [key: string]: QueryBuilderSelectParam }
7
+ // export type QueryBuilderSelectParam = boolean | ((ref: QueryBuilderParamRef) => QueryBuilder<any, any>)
8
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/query-builder/api.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,SAAS,EAAe,MAAM,yBAAyB,CAAA;AAoD7E,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;AAElE,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;AAGhD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAc,EAAwC,EAAE,CACrF,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;AAkOtC,sEAAsE;AACtE,oFAAoF;AACpF,0GAA0G"}
@@ -0,0 +1,12 @@
1
+ import { Schema } from '@livestore/utils/effect';
2
+ import type { QueryInfo } from '../query-info.js';
3
+ import type { DbSchema } from '../schema/index.js';
4
+ import type { QueryBuilder, QueryBuilderAst } from './api.js';
5
+ export declare const makeQueryBuilder: <TResult, TTableDef extends DbSchema.TableDefBase>(tableDef: TTableDef, ast?: QueryBuilderAst) => QueryBuilder<TResult, TTableDef, never, QueryInfo.None>;
6
+ export declare const invalidQueryBuilder: (msg?: string) => never;
7
+ export declare const getResultSchema: (qb: QueryBuilder<any, any, any>) => Schema.Array$<Schema.Schema<any, any, never>> | Schema.SchemaClass<any, readonly any[], never> | Schema.SchemaClass<number, readonly {
8
+ readonly count: number;
9
+ }[], never> | Schema.SchemaClass<any, readonly {
10
+ readonly value: any;
11
+ }[], never>;
12
+ //# sourceMappingURL=impl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impl.d.ts","sourceRoot":"","sources":["../../src/query-builder/impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG7D,eAAO,MAAM,gBAAgB,GAAI,OAAO,EAAE,SAAS,SAAS,QAAQ,CAAC,YAAY,YACrE,SAAS,QACd,eAAe,KACnB,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,CAqJxD,CAAA;AAsFD,eAAO,MAAM,mBAAmB,SAAU,MAAM,UAE/C,CAAA;AAED,eAAO,MAAM,eAAe,OAAQ,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;;;;WAkB9D,CAAA"}
@@ -0,0 +1,226 @@
1
+ import { Option, Predicate, Schema } from '@livestore/utils/effect';
2
+ import { QueryBuilderAstSymbol, TypeId } from './api.js';
3
+ export const makeQueryBuilder = (tableDef, ast = emptyAst(tableDef)) => {
4
+ const api = {
5
+ // eslint-disable-next-line prefer-arrow/prefer-arrow-functions
6
+ select() {
7
+ assertQueryBuilderAst(ast);
8
+ // eslint-disable-next-line prefer-rest-params
9
+ const params = [...arguments];
10
+ if (params.length === 2 && typeof params[0] === 'string' && typeof params[1] === 'object') {
11
+ const [col, options] = params;
12
+ return makeQueryBuilder(tableDef, {
13
+ ...ast,
14
+ resultSchemaSingle: options.pluck ? ast.resultSchemaSingle.pipe(Schema.pluck(col)) : ast.resultSchemaSingle,
15
+ select: { columns: [col] },
16
+ });
17
+ }
18
+ const columns = params;
19
+ return makeQueryBuilder(tableDef, {
20
+ ...ast,
21
+ resultSchemaSingle: columns.length === 0 ? ast.resultSchemaSingle : ast.resultSchemaSingle.pipe(Schema.pick(...columns)),
22
+ select: { columns },
23
+ });
24
+ },
25
+ // eslint-disable-next-line prefer-arrow/prefer-arrow-functions
26
+ where() {
27
+ if (isRowQuery(ast))
28
+ return invalidQueryBuilder();
29
+ if (arguments.length === 1) {
30
+ // eslint-disable-next-line prefer-rest-params
31
+ const params = arguments[0];
32
+ const newOps = Object.entries(params)
33
+ .filter(([, value]) => value !== undefined)
34
+ .map(([col, value]) => Predicate.hasProperty(value, 'op') && Predicate.hasProperty(value, 'value')
35
+ ? { col, op: value.op, value: value.value }
36
+ : { col, op: '=', value });
37
+ return makeQueryBuilder(tableDef, {
38
+ ...ast,
39
+ where: [...ast.where, ...newOps],
40
+ });
41
+ }
42
+ // eslint-disable-next-line prefer-rest-params
43
+ const [col, opOrValue, valueOrUndefined] = arguments;
44
+ const op = valueOrUndefined === undefined ? '=' : opOrValue;
45
+ const value = valueOrUndefined === undefined ? opOrValue : valueOrUndefined;
46
+ return makeQueryBuilder(tableDef, {
47
+ ...ast,
48
+ where: [...ast.where, { col, op, value }],
49
+ });
50
+ },
51
+ // eslint-disable-next-line prefer-arrow/prefer-arrow-functions
52
+ orderBy() {
53
+ assertQueryBuilderAst(ast);
54
+ if (arguments.length === 0 || arguments.length > 2)
55
+ return invalidQueryBuilder();
56
+ if (arguments.length === 1) {
57
+ // eslint-disable-next-line prefer-rest-params
58
+ const params = arguments[0];
59
+ return makeQueryBuilder(tableDef, {
60
+ ...ast,
61
+ orderBy: [...ast.orderBy, ...params],
62
+ });
63
+ }
64
+ // eslint-disable-next-line prefer-rest-params
65
+ const [col, direction] = arguments;
66
+ return makeQueryBuilder(tableDef, {
67
+ ...ast,
68
+ orderBy: [...ast.orderBy, { col, direction }],
69
+ });
70
+ },
71
+ limit: (limit) => {
72
+ assertQueryBuilderAst(ast);
73
+ return makeQueryBuilder(tableDef, { ...ast, limit: Option.some(limit) });
74
+ },
75
+ offset: (offset) => {
76
+ assertQueryBuilderAst(ast);
77
+ return makeQueryBuilder(tableDef, { ...ast, offset: Option.some(offset) });
78
+ },
79
+ count: () => {
80
+ if (isRowQuery(ast))
81
+ return invalidQueryBuilder();
82
+ return makeQueryBuilder(tableDef, {
83
+ ...ast,
84
+ resultSchema: Schema.Struct({ count: Schema.Number }).pipe(Schema.pluck('count'), Schema.Array, Schema.headOrElse()),
85
+ _tag: 'CountQuery',
86
+ });
87
+ },
88
+ first: (options) => {
89
+ assertQueryBuilderAst(ast);
90
+ if (ast.limit._tag === 'Some')
91
+ return invalidQueryBuilder(`.first() can't be called after .limit()`);
92
+ return makeQueryBuilder(tableDef, {
93
+ ...ast,
94
+ limit: Option.some(1),
95
+ pickFirst: options?.fallback ? { fallback: options.fallback } : false,
96
+ });
97
+ },
98
+ // eslint-disable-next-line prefer-arrow/prefer-arrow-functions
99
+ row() {
100
+ // eslint-disable-next-line prefer-rest-params
101
+ const params = [...arguments];
102
+ let id;
103
+ if (tableDef.options.isSingleton) {
104
+ id = tableDef.sqliteDef.columns.id.default.pipe(Option.getOrThrow);
105
+ }
106
+ else {
107
+ id = params[0];
108
+ if (id === undefined) {
109
+ invalidQueryBuilder(`Id missing for row query on non-singleton table ${tableDef.sqliteDef.name}`);
110
+ }
111
+ }
112
+ // TODO validate all required columns are present and values are matching the schema
113
+ const insertValues = params[1]?.insertValues ?? {};
114
+ return makeQueryBuilder(tableDef, {
115
+ _tag: 'RowQuery',
116
+ id,
117
+ tableDef,
118
+ insertValues,
119
+ });
120
+ },
121
+ };
122
+ return {
123
+ [TypeId]: TypeId,
124
+ [QueryBuilderAstSymbol]: ast,
125
+ asSql: () => astToSql(ast),
126
+ toString: () => astToSql(ast).query,
127
+ ...api,
128
+ };
129
+ };
130
+ const emptyAst = (tableDef) => ({
131
+ _tag: 'SelectQuery',
132
+ columns: [],
133
+ pickFirst: false,
134
+ select: { columns: [] },
135
+ orderBy: [],
136
+ offset: Option.none(),
137
+ limit: Option.none(),
138
+ tableDef,
139
+ where: [],
140
+ resultSchemaSingle: tableDef.schema,
141
+ });
142
+ const astToSql = (ast) => {
143
+ if (isRowQuery(ast)) {
144
+ // TODO
145
+ return { query: `SELECT * FROM '${ast.tableDef.sqliteDef.name}' WHERE id = ?`, bindValues: [ast.id] };
146
+ }
147
+ const bindValues = [];
148
+ // TODO bind values
149
+ const whereStmt = ast.where.length > 0
150
+ ? `WHERE ${ast.where
151
+ .map(({ col, op, value }) => {
152
+ if (value === null) {
153
+ if (op !== '=' && op !== '!=') {
154
+ throw new Error(`Unsupported operator for NULL value: ${op}`);
155
+ }
156
+ const opStmt = op === '=' ? 'IS' : 'IS NOT';
157
+ return `${col} ${opStmt} NULL`;
158
+ }
159
+ else {
160
+ const colDef = ast.tableDef.sqliteDef.columns[col];
161
+ if (colDef === undefined) {
162
+ throw new Error(`Column ${col} not found`);
163
+ }
164
+ const encodedValue = Schema.encodeSync(colDef.schema)(value);
165
+ bindValues.push(encodedValue);
166
+ return `${col} ${op} ?`;
167
+ }
168
+ })
169
+ .join(' AND ')}`
170
+ : '';
171
+ if (ast._tag === 'CountQuery') {
172
+ const selectFromStmt = `SELECT COUNT(*) as count FROM '${ast.tableDef.sqliteDef.name}'`;
173
+ const query = [selectFromStmt, whereStmt].filter((_) => _.length > 0).join(' ');
174
+ return { query, bindValues };
175
+ }
176
+ const columnsStmt = ast.select.columns.length === 0 ? '*' : ast.select.columns.join(', ');
177
+ const selectStmt = `SELECT ${columnsStmt}`;
178
+ const fromStmt = `FROM '${ast.tableDef.sqliteDef.name}'`;
179
+ const orderByStmt = ast.orderBy.length > 0
180
+ ? `ORDER BY ${ast.orderBy.map(({ col, direction }) => `${col} ${direction}`).join(', ')}`
181
+ : '';
182
+ const limitStmt = ast.limit._tag === 'Some' ? `LIMIT ?` : '';
183
+ if (ast.limit._tag === 'Some')
184
+ bindValues.push(ast.limit.value);
185
+ const offsetStmt = ast.offset._tag === 'Some' ? `OFFSET ?` : '';
186
+ if (ast.offset._tag === 'Some')
187
+ bindValues.push(ast.offset.value);
188
+ const query = [selectStmt, fromStmt, whereStmt, orderByStmt, offsetStmt, limitStmt]
189
+ .map((_) => _.trim())
190
+ .filter((_) => _.length > 0)
191
+ .join(' ');
192
+ // TODO bind values
193
+ return { query, bindValues };
194
+ };
195
+ // eslint-disable-next-line prefer-arrow/prefer-arrow-functions
196
+ function assertQueryBuilderAst(ast) {
197
+ if (ast._tag !== 'SelectQuery') {
198
+ throw new Error('Expected SelectQuery but got ' + ast._tag);
199
+ }
200
+ }
201
+ const isRowQuery = (ast) => ast._tag === 'RowQuery';
202
+ export const invalidQueryBuilder = (msg) => {
203
+ throw new Error('Invalid query builder' + (msg ? `: ${msg}` : ''));
204
+ };
205
+ export const getResultSchema = (qb) => {
206
+ const queryAst = qb[QueryBuilderAstSymbol];
207
+ if (queryAst._tag === 'SelectQuery') {
208
+ const arraySchema = Schema.Array(queryAst.resultSchemaSingle);
209
+ if (queryAst.pickFirst !== false) {
210
+ return arraySchema.pipe(Schema.headOrElse(queryAst.pickFirst.fallback));
211
+ }
212
+ return arraySchema;
213
+ }
214
+ else if (queryAst._tag === 'CountQuery') {
215
+ return Schema.Struct({ count: Schema.Number }).pipe(Schema.pluck('count'), Schema.Array, Schema.headOrElse());
216
+ }
217
+ else {
218
+ if (queryAst.tableDef.options.isSingleColumn) {
219
+ return queryAst.tableDef.schema.pipe(Schema.pluck('value'), Schema.Array, Schema.headOrElse());
220
+ }
221
+ else {
222
+ return queryAst.tableDef.schema.pipe(Schema.Array, Schema.headOrElse());
223
+ }
224
+ }
225
+ };
226
+ //# sourceMappingURL=impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impl.js","sourceRoot":"","sources":["../../src/query-builder/impl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=impl.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impl.test.d.ts","sourceRoot":"","sources":["../../src/query-builder/impl.test.ts"],"names":[],"mappings":""}