@effect-app/infra 1.1.15 → 1.2.0

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 (67) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/_cjs/services/QueueMaker/memQueue.cjs +4 -1
  3. package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
  4. package/_cjs/services/QueueMaker/sbqueue.cjs +4 -1
  5. package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
  6. package/_cjs/services/RepositoryBase.cjs +1 -1
  7. package/_cjs/services/RepositoryBase.cjs.map +1 -1
  8. package/_cjs/services/Store/Cosmos.cjs +2 -5
  9. package/_cjs/services/Store/Cosmos.cjs.map +1 -1
  10. package/_cjs/services/Store/Memory.cjs +1 -1
  11. package/_cjs/services/Store/Memory.cjs.map +1 -1
  12. package/_cjs/services/Store/filterApi/query.cjs +0 -167
  13. package/_cjs/services/Store/filterApi/query.cjs.map +1 -1
  14. package/_cjs/services/Store/service.cjs.map +1 -1
  15. package/_cjs/services/Store/utils.cjs +1 -1
  16. package/_cjs/services/Store/utils.cjs.map +1 -1
  17. package/_cjs/services/query/dsl.cjs +1 -1
  18. package/_cjs/services/query/dsl.cjs.map +1 -1
  19. package/_cjs/services/query/new-kid-interpreter.cjs +14 -10
  20. package/_cjs/services/query/new-kid-interpreter.cjs.map +1 -1
  21. package/dist/services/QueueMaker/memQueue.d.ts.map +1 -1
  22. package/dist/services/QueueMaker/memQueue.js +5 -2
  23. package/dist/services/QueueMaker/sbqueue.d.ts.map +1 -1
  24. package/dist/services/QueueMaker/sbqueue.js +5 -2
  25. package/dist/services/RepositoryBase.d.ts +2 -2
  26. package/dist/services/RepositoryBase.d.ts.map +1 -1
  27. package/dist/services/RepositoryBase.js +2 -2
  28. package/dist/services/Store/Cosmos.js +3 -3
  29. package/dist/services/Store/Memory.js +2 -2
  30. package/dist/services/Store/filterApi/query.d.ts +3 -44
  31. package/dist/services/Store/filterApi/query.d.ts.map +1 -1
  32. package/dist/services/Store/filterApi/query.js +2 -136
  33. package/dist/services/Store/service.d.ts +3 -4
  34. package/dist/services/Store/service.d.ts.map +1 -1
  35. package/dist/services/Store/service.js +1 -1
  36. package/dist/services/Store/utils.d.ts +1 -1
  37. package/dist/services/Store/utils.d.ts.map +1 -1
  38. package/dist/services/Store/utils.js +2 -2
  39. package/dist/services/query/dsl.d.ts +22 -3
  40. package/dist/services/query/dsl.d.ts.map +1 -1
  41. package/dist/services/query/dsl.js +2 -2
  42. package/dist/services/query/new-kid-interpreter.d.ts +2 -2
  43. package/dist/services/query/new-kid-interpreter.d.ts.map +1 -1
  44. package/dist/services/query/new-kid-interpreter.js +13 -11
  45. package/package.json +2 -12
  46. package/src/services/QueueMaker/memQueue.ts +6 -1
  47. package/src/services/QueueMaker/sbqueue.ts +4 -1
  48. package/src/services/RepositoryBase.ts +1 -7
  49. package/src/services/Store/Cosmos.ts +2 -2
  50. package/src/services/Store/Memory.ts +3 -3
  51. package/src/services/Store/filterApi/query.ts +22 -231
  52. package/src/services/Store/service.ts +3 -4
  53. package/src/services/Store/utils.ts +2 -2
  54. package/src/services/query/dsl.ts +191 -16
  55. package/src/services/query/new-kid-interpreter.ts +16 -13
  56. package/test/query.test.ts +2 -5
  57. package/_cjs/services/Store/filterApi/proxy.cjs +0 -40
  58. package/_cjs/services/Store/filterApi/proxy.cjs.map +0 -1
  59. package/dist/services/Store/filterApi/proxy.d.ts +0 -41
  60. package/dist/services/Store/filterApi/proxy.d.ts.map +0 -1
  61. package/dist/services/Store/filterApi/proxy.js +0 -41
  62. package/src/services/Store/filterApi/proxy.ts +0 -109
  63. package/test/filterApi.test.ts +0 -268
  64. package/vitest.config.ts.timestamp-1711656440838-19c636fe320df.mjs +0 -0
  65. package/vitest.config.ts.timestamp-1711724061890-6ecedb0a07fdd.mjs +0 -0
  66. package/vitest.config.ts.timestamp-1711743489537-da8d9e5f66c9f.mjs +0 -0
  67. package/vitest.config.ts.timestamp-1711744615239-dcf257a844e01.mjs +0 -37
@@ -1,7 +1,7 @@
1
1
  import { S } from "effect-app";
2
2
  import type { FieldValues } from "../../filter/types.js";
3
3
  import { type QAll } from "../query.js";
4
- import type { QueryBuilder } from "../Store/filterApi/query.js";
4
+ import type { FilterResult } from "../Store/filterApi/query.js";
5
5
  export declare const toFilter: <TFieldValues extends FieldValues, A, R>(q: QAll<TFieldValues, A, R>) => {
6
6
  limit: number;
7
7
  skip: number;
@@ -16,6 +16,6 @@ export declare const toFilter: <TFieldValues extends FieldValues, A, R>(q: QAll<
16
16
  }[]];
17
17
  ttype: "one" | "many" | "count";
18
18
  mode: "project" | "collect" | "transform";
19
- filter: QueryBuilder<any>;
19
+ filter: FilterResult[];
20
20
  };
21
21
  //# sourceMappingURL=new-kid-interpreter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"new-kid-interpreter.d.ts","sourceRoot":"","sources":["../../../src/services/query/new-kid-interpreter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,CAAC,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAAgB,KAAK,IAAI,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAsH7E,eAAO,MAAM,QAAQ,8CAKhB,KAAK,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;;;;;;;mBApHuB,KAAK,GAAG,MAAM;;;mBAAd,KAAK,GAAG,MAAM;;;;;CAkJjE,CAAA"}
1
+ {"version":3,"file":"new-kid-interpreter.d.ts","sourceRoot":"","sources":["../../../src/services/query/new-kid-interpreter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,CAAC,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAAgB,KAAK,IAAI,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AA4H/D,eAAO,MAAM,QAAQ,8CAKhB,KAAK,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;;;;;;;mBA1HuB,KAAK,GAAG,MAAM;;;mBAAd,KAAK,GAAG,MAAM;;;;;CAqJjE,CAAA"}
@@ -35,12 +35,17 @@ const interpret = (_) => {
35
35
  },
36
36
  where: ({ current, operation }) => {
37
37
  upd(interpret(current));
38
- data.filter.push({
39
- t: "where",
40
- path: operation[0],
41
- op: operation.length === 2 ? "eq" : operation[1],
42
- value: operation.length === 2 ? operation[1] : operation[2]
43
- });
38
+ if (typeof operation === "function") {
39
+ data.filter.push({ t: "where-scope", result: interpret(operation(make())).filter });
40
+ }
41
+ else {
42
+ data.filter.push({
43
+ t: "where",
44
+ path: operation[0],
45
+ op: operation.length === 2 ? "eq" : operation[1],
46
+ value: operation.length === 2 ? operation[1] : operation[2]
47
+ });
48
+ }
44
49
  },
45
50
  and: ({ current, operation }) => {
46
51
  upd(interpret(current));
@@ -120,11 +125,8 @@ export const toFilter = (q) => {
120
125
  ttype: a.ttype,
121
126
  mode: a.mode ?? "transform",
122
127
  filter: a.filter.length
123
- ? {
124
- type: "new-kid",
125
- build: () => a.filter
126
- }
128
+ ? a.filter
127
129
  : undefined
128
130
  });
129
131
  };
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWtpZC1pbnRlcnByZXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9xdWVyeS9uZXcta2lkLWludGVycHJldGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCw0REFBNEQ7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3hELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBR2pELE9BQU8sRUFBRSxJQUFJLEVBQXFCLE1BQU0sYUFBYSxDQUFBO0FBYXJELE1BQU0sU0FBUyxHQUFHLENBQWdFLENBQTJCLEVBQUUsRUFBRTtJQUMvRyxNQUFNLENBQUMsR0FBRyxDQUFvQixDQUFBO0lBRTlCLE1BQU0sSUFBSSxHQUFtQztRQUMzQyxNQUFNLEVBQUUsRUFBRTtRQUNWLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLEVBQUU7UUFDVCxLQUFLLEVBQUUsU0FBUztRQUNoQixJQUFJLEVBQUUsU0FBUztLQUNoQixDQUFBO0lBRUQsTUFBTSxHQUFHLEdBQUcsQ0FDVixDQUFpQyxFQUNqQyxFQUFFO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFDL0MsSUFBSSxDQUFDLENBQUMs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
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWtpZC1pbnRlcnByZXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9xdWVyeS9uZXcta2lkLWludGVycHJldGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCw0REFBNEQ7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3hELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBR2pELE9BQU8sRUFBRSxJQUFJLEVBQXFCLE1BQU0sYUFBYSxDQUFBO0FBYXJELE1BQU0sU0FBUyxHQUFHLENBQWdFLENBQTJCLEVBQUUsRUFBRTtJQUMvRyxNQUFNLENBQUMsR0FBRyxDQUFvQixDQUFBO0lBRTlCLE1BQU0sSUFBSSxHQUFtQztRQUMzQyxNQUFNLEVBQUUsRUFBRTtRQUNWLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLEVBQUU7UUFDVCxLQUFLLEVBQUUsU0FBUztRQUNoQixJQUFJLEVBQUUsU0FBUztLQUNoQixDQUFBO0lBRUQsTUFBTSxHQUFHLEdBQUcsQ0FDVixDQUFpQyxFQUNqQyxFQUFFO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFDL0MsSUFBSSxDQUFDLENBQUMs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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/infra",
3
- "version": "1.1.15",
3
+ "version": "1.2.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -18,9 +18,9 @@
18
18
  "proper-lockfile": "^4.1.2",
19
19
  "pure-rand": "6.1.0",
20
20
  "redlock": "^4.2.0",
21
+ "effect-app": "1.0.12",
21
22
  "@effect-app/core": "1.0.6",
22
23
  "@effect-app/infra-adapters": "1.0.16",
23
- "effect-app": "1.0.12",
24
24
  "@effect-app/schema": "1.0.10"
25
25
  },
26
26
  "devDependencies": {
@@ -554,16 +554,6 @@
554
554
  "default": "./_cjs/services/Store/codeFilter.cjs"
555
555
  }
556
556
  },
557
- "./services/Store/filterApi/proxy": {
558
- "import": {
559
- "types": "./dist/services/Store/filterApi/proxy.d.ts",
560
- "default": "./dist/services/Store/filterApi/proxy.js"
561
- },
562
- "require": {
563
- "types": "./dist/services/Store/filterApi/proxy.d.ts",
564
- "default": "./_cjs/services/Store/filterApi/proxy.cjs"
565
- }
566
- },
567
557
  "./services/Store/filterApi/query": {
568
558
  "import": {
569
559
  "types": "./dist/services/Store/filterApi/query.d.ts",
@@ -53,7 +53,12 @@ export function makeMemQueue<
53
53
  ), { discard: true })
54
54
  )
55
55
  })
56
- .pipe(Effect.withSpan("queue.publish: " + queueName, { kind: "producer" })),
56
+ .pipe(
57
+ Effect.withSpan("queue.publish: " + queueName, {
58
+ kind: "producer",
59
+ attributes: { "message_tags": messages.map((_) => _._tag) }
60
+ })
61
+ ),
57
62
  drain: <DrainE, DrainR>(
58
63
  handleEvent: (ks: DrainEvt) => Effect<void, DrainE, DrainR>,
59
64
  sessionId?: string
@@ -174,7 +174,10 @@ export function makeServiceBusQueue<
174
174
  )
175
175
  )
176
176
  })
177
- .pipe(Effect.withSpan("queue.publish: " + queueName, { kind: "producer" }))
177
+ .pipe(Effect.withSpan("queue.publish: " + queueName, {
178
+ kind: "producer",
179
+ attributes: { "message_tags": messages.map((_) => _._tag) }
180
+ }))
178
181
  } satisfies QueueBase<Evt, DrainEvt>
179
182
  })
180
183
  }
@@ -50,18 +50,12 @@ import { ContextMapContainer } from "./Store/ContextMapContainer.js"
50
50
  export interface Mapped1<A, Encoded extends { id: string }, R> {
51
51
  all: Effect<A[], ParseResult.ParseError, R>
52
52
  save: (...xes: readonly A[]) => Effect<void, OptimisticConcurrencyException | ParseResult.ParseError, R>
53
- // query: (
54
- // b: (fn: QB.FilterTest<Encoded>, fields: QB.Filter<Encoded, never>) => QB.QueryBuilder<Encoded>
55
- // ) => Effect<A[], ParseResult.ParseError, R>
56
53
  find: (id: Encoded["id"]) => Effect<Option<A>, ParseResult.ParseError, R>
57
54
  }
58
55
 
59
56
  // TODO: auto use project, and select fields from the From side of schema only
60
57
  export interface Mapped2<A, R> {
61
58
  all: Effect<A[], ParseResult.ParseError, R>
62
- // query: (
63
- // b: (fn: QB.FilterTest<Encoded>, fields: QB.Filter<Encoded, never>) => QB.QueryBuilder<Encoded>
64
- // ) => Effect<A[], ParseResult.ParseError, R>
65
59
  }
66
60
 
67
61
  export interface Mapped<Encoded extends { id: string }> {
@@ -585,7 +579,7 @@ export function makeRepo<
585
579
  Effect.withSpan("Repository.query [effect-app/infra]", {
586
580
  attributes: {
587
581
  "repository.model_name": name,
588
- query: { ...a, schema: a.schema ? "__SCHEMA__" : a.schema, filter: a.filter?.build() }
582
+ query: { ...a, schema: a.schema ? "__SCHEMA__" : a.schema, filter: a.filter }
589
583
  }
590
584
  })
591
585
  )
@@ -224,12 +224,12 @@ function makeCosmosStore({ prefix }: StorageConfig) {
224
224
  ) => {
225
225
  const skip = f?.skip
226
226
  const limit = f?.limit
227
- const filter = f.filter ?? { type: "new-kid", build: () => [] }
227
+ const filter = f.filter
228
228
  type M = U extends undefined ? Encoded : Pick<Encoded, U>
229
229
  return Effect
230
230
  .sync(() =>
231
231
  buildWhereCosmosQuery3(
232
- filter.build(),
232
+ filter ?? [],
233
233
  name,
234
234
  importedMarkerId,
235
235
  defaultValues,
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
 
3
3
  import { Array, Effect, FiberRef, flow, Option, Order, pipe, Ref, Struct } from "effect-app"
4
- import type { NonEmptyArray, NonEmptyReadonlyArray } from "effect-app"
4
+ import type { NonEmptyReadonlyArray } from "effect-app"
5
5
  import { get } from "effect-app/utils"
6
6
  import type { RequestContext } from "../../RequestContext.js"
7
7
  import type { FilterArgs, PersistenceModelType, Store, StoreConfig } from "./service.js"
@@ -66,7 +66,7 @@ function logQuery(f: FilterArgs<any, any>, defaultValues?: any) {
66
66
  .logDebug("mem query")
67
67
  .pipe(Effect.annotateLogs({
68
68
  filter: JSON.stringify(
69
- f.filter ? f.filter.type === "new-kid" ? f.filter.build() : f.filter : f.filter,
69
+ f.filter,
70
70
  undefined,
71
71
  2
72
72
  ),
@@ -118,7 +118,7 @@ export function makeMemoryStoreInt<Id extends string, Encoded extends { id: Id }
118
118
  )
119
119
  ),
120
120
  Effect
121
- .map((_) => _ as NonEmptyArray<PM>),
121
+ .map((_) => _),
122
122
  withPermit
123
123
  )
124
124
  const s: Store<Encoded, Id> = {
@@ -1,10 +1,25 @@
1
- import { Array } from "effect-app"
2
- import type { FieldValues } from "../../../filter/types.js"
3
- import type { FieldPath, FieldPathValue } from "../../../filter/types/path/eager.js"
4
- import type { Filter, Ops } from "./proxy.js"
5
- import { makeProxy } from "./proxy.js"
6
-
7
- export { Filter }
1
+ export type InOps =
2
+ | "in"
3
+ | "notIn"
4
+
5
+ export type OtherOps =
6
+ | "endsWith"
7
+ | "startsWith"
8
+ | "notEndsWith"
9
+ | "notStartsWith"
10
+ | "contains"
11
+ | "notContains"
12
+ | "includes"
13
+ | "notIncludes"
14
+ | "eq"
15
+ | "neq"
16
+ | "gt"
17
+ | "gte"
18
+ | "lt"
19
+ | "lte"
20
+
21
+ // TODO: includes | notIncludes
22
+ export type Ops = OtherOps | InOps
8
23
 
9
24
  export type FilterScopes = {
10
25
  t: "or-scope"
@@ -35,227 +50,3 @@ export type FilterResult =
35
50
  t: "and"
36
51
  } & FilterR
37
52
  | FilterScopes
38
-
39
- export const print = (state: readonly FilterResult[]) => {
40
- let s = ""
41
- let l = 0
42
- const printN = (n: number) => {
43
- return n === 0 ? "" : Array.range(1, n).map(() => " ").join("")
44
- }
45
- for (const e of state) {
46
- switch (e.t) {
47
- case "where":
48
- s += `${e.path} ${e.op} ${e.value}`
49
- break
50
- case "or":
51
- s += ` OR ${e.path} ${e.op} ${e.value}`
52
- break
53
- case "and":
54
- s += ` AND ${e.path} ${e.op} ${e.value}`
55
- break
56
- case "or-scope": {
57
- ;++l
58
- s += ` OR (\n${printN(l + 1)}${print(e.result)}\n${printN(l)})`
59
- ;--l
60
- break
61
- }
62
- case "and-scope": {
63
- ;++l
64
- s += ` AND (\n${printN(l + 1)}${print(e.result)}\n${printN(l)})`
65
- ;--l
66
-
67
- break
68
- }
69
- case "where-scope": {
70
- // ;++l
71
- s += `(\n${printN(l + 1)}${print(e.result)}\n)`
72
- // ;--l
73
- break
74
- }
75
- }
76
- }
77
- return s
78
- }
79
-
80
- export const makeFilter = <TFieldValues extends FieldValues>() => {
81
- // const recursive = {}
82
- // const and = Object.assign(() => {}, recursive)
83
- // const or = Object.assign(() => {}, recursive)
84
- // const where = Object.assign(() => {}, recursive)
85
- // recursive.and = and
86
- // recursive.or = or
87
- // recursive.where = where
88
- const state: FilterResult[] = []
89
- let current = state
90
- const where = (...args: any[]) => {
91
- if (typeof args[0] === "function") {
92
- const mine: any[] = []
93
- const previous = current
94
- current = mine
95
- const r = args[0](all)
96
- current = previous
97
- current.push({ t: "where-scope", result: mine })
98
- return r
99
- }
100
- if (args.length === 1) {
101
- current.push({ t: "where", ...args[0] })
102
- return all
103
- }
104
- current.push({
105
- t: "where",
106
- op: args.length === 2 ? "eq" : args[1],
107
- path: args[0],
108
- value: args[args.length - 1]
109
- })
110
- return all
111
- }
112
- const and = (...args: any[]) => {
113
- if (typeof args[0] === "function") {
114
- const mine: any[] = []
115
- const previous = current
116
- current = mine
117
- const r = args[0](all)
118
- current = previous
119
- current.push({ t: "and-scope", result: mine })
120
- return r
121
- }
122
- if (args.length === 1) {
123
- current.push({ t: "and", ...args[0] })
124
- return all
125
- }
126
- current.push({
127
- t: "and",
128
- op: args.length === 2 ? "eq" : args[1],
129
- path: args[0],
130
- value: args[args.length - 1]
131
- })
132
- return all
133
- }
134
- const or = (...args: any[]) => {
135
- if (typeof args[0] === "function") {
136
- const mine: any[] = []
137
- const previous = current
138
- current = mine
139
- const r = args[0](all)
140
- current = previous
141
- current.push({ t: "or-scope", result: mine })
142
- return r
143
- }
144
- if (args.length === 1) {
145
- current.push({ t: "or", ...args[0] })
146
- return all
147
- }
148
- current.push({ t: "or", op: args.length === 2 ? "eq" : args[1], path: args[0], value: args[args.length - 1] })
149
- return all
150
- }
151
- const fields = makeProxy() as Filter<TFieldValues>
152
- const all = Object.assign(where, {
153
- type: "new-kid",
154
- and,
155
- or,
156
- build() {
157
- return state
158
- }
159
- })
160
- return { all, fields }
161
- }
162
-
163
- /** @deprecated use Q */
164
- export const QueryBuilder = {
165
- /** @deprecated use Q */
166
- make: <TFieldValues extends FieldValues>(): (
167
- fn: (f: FilterTest<TFieldValues>, fields: Filter<TFieldValues>) => QueryBuilder<TFieldValues>
168
- ) => QueryBuilder<TFieldValues> => {
169
- type F = ReturnType<typeof makeFilter<TFieldValues>>
170
- return (
171
- f: (
172
- n: F["all"],
173
- f: F["fields"]
174
- ) => QueryBuilder<TFieldValues>
175
- ) => {
176
- const fil = makeFilter<TFieldValues>()
177
- return f(fil.all, fil.fields)
178
- }
179
- }
180
- }
181
-
182
- export type Initial<TFieldValues extends FieldValues> = {
183
- where: FilterTest<TFieldValues>
184
- build(): FilterResult[]
185
- }
186
-
187
- export type Filts<TFieldValues extends FieldValues> = {
188
- <
189
- TFieldName extends FieldPath<TFieldValues>,
190
- V extends FieldPathValue<TFieldValues, TFieldName>
191
- >(
192
- path: TFieldName,
193
- value: V
194
- ): QueryBuilder<TFieldValues>
195
- <
196
- TFieldName extends FieldPath<TFieldValues>,
197
- V extends FieldPathValue<TFieldValues, TFieldName>
198
- >(
199
- path: TFieldName,
200
- op: "neq",
201
- value: V
202
- ): QueryBuilder<TFieldValues>
203
- <
204
- TFieldName extends FieldPath<TFieldValues>,
205
- V extends FieldPathValue<TFieldValues, TFieldName>
206
- >(
207
- path: TFieldName,
208
- op: "gt" | "gte" | "lt" | "lte",
209
- value: V // only numbers?
210
- ): QueryBuilder<TFieldValues>
211
- <
212
- TFieldName extends FieldPath<TFieldValues>,
213
- V extends string
214
- >(
215
- path: TFieldName,
216
- op: "startsWith" | "endsWith" | "contains" | "notContains" | "notStartsWith" | "notEndsWith",
217
- value: V
218
- ): QueryBuilder<TFieldValues>
219
- <
220
- TFieldName extends FieldPath<TFieldValues>,
221
- V extends FieldPathValue<TFieldValues, TFieldName>
222
- >(
223
- path: TFieldName,
224
- op: "in" | "notIn",
225
- value: readonly V[]
226
- ): QueryBuilder<TFieldValues>
227
- }
228
-
229
- // type Filter<TFieldValues extends FieldValues> = {
230
- // (
231
- // fb: (f: Filts<TFieldValues>) => QueryBuilder<TFieldValues>
232
- // ): QueryBuilder<TFieldValues>
233
- // } & Filts<TFieldValues>
234
-
235
- export type FilterTest<TFieldValues extends FieldValues> = {
236
- (
237
- fb: (f: Filts<TFieldValues> & Initial<TFieldValues>) => QueryBuilder<TFieldValues>
238
- ): QueryBuilder<TFieldValues>
239
- <
240
- TFieldName extends FieldPath<TFieldValues>,
241
- V extends FieldPathValue<TFieldValues, TFieldName>
242
- >(f: {
243
- path: TFieldName
244
- op: Ops
245
- value: V
246
- }): QueryBuilder<TFieldValues>
247
- } & Filts<TFieldValues>
248
- // const not = <A extends string>(s: A) => `!${s}`
249
-
250
- // type FilterGroup<TFieldValues extends FieldValues> = (
251
- // fb: (f: QueryBuilder<TFieldValues>) => QueryBuilder<TFieldValues>
252
- // ) => QueryBuilder<TFieldValues>
253
-
254
- export interface QueryBuilder<TFieldValues extends FieldValues> {
255
- type: "new-kid"
256
- // TODO: as overloads?
257
- and: FilterTest<TFieldValues>
258
- or: FilterTest<TFieldValues>
259
- build(): FilterResult[]
260
- // where: <Filters extends Record<TFieldName extends FieldPath<TFieldValues>, V extends Value< FieldPathValue<TFieldValues, TFieldName>>>(filter: Filters) => QueryBuilder<TFieldValues>
261
- }
@@ -3,8 +3,7 @@ import type { UniqueKey } from "@azure/cosmos"
3
3
  import { Context, Effect } from "effect-app"
4
4
  import type { NonEmptyReadonlyArray, Option, Secret } from "effect-app"
5
5
  import type { OptimisticConcurrencyException } from "../../errors.js"
6
- import type { FieldValues } from "../../filter/types.js"
7
- import type { QueryBuilder } from "./filterApi/query.js"
6
+ import type { FilterResult } from "./filterApi/query.js"
8
7
 
9
8
  export type StoreConfig<E> = {
10
9
  uniqueKeys?: UniqueKey[]
@@ -33,7 +32,7 @@ export type Where =
33
32
  value: readonly (SupportedValues)[]
34
33
  }
35
34
 
36
- export type Filter<E extends FieldValues> = QueryBuilder<E>
35
+ export type Filter = readonly FilterResult[]
37
36
 
38
37
  export interface O<Encoded extends { id: string }> {
39
38
  key: keyof Encoded
@@ -41,7 +40,7 @@ export interface O<Encoded extends { id: string }> {
41
40
  }
42
41
 
43
42
  export interface FilterArgs<Encoded extends { id: string }, U extends keyof Encoded = never> {
44
- filter?: Filter<Encoded> | undefined
43
+ filter?: Filter | undefined
45
44
  select?: NonEmptyReadonlyArray<U> | undefined
46
45
  order?: NonEmptyReadonlyArray<O<Encoded>>
47
46
  limit?: number | undefined
@@ -35,8 +35,8 @@ export const makeUpdateETag =
35
35
  return newE
36
36
  })
37
37
 
38
- export function codeFilter<E extends { id: string }, NE extends E>(filter: Filter<NE>) {
39
- return (x: E) => codeFilter3_(filter.build(), x) ? Option.some(x as unknown as NE) : Option.none()
38
+ export function codeFilter<E extends { id: string }, NE extends E>(filter: Filter) {
39
+ return (x: E) => codeFilter3_(filter, x) ? Option.some(x as unknown as NE) : Option.none()
40
40
  }
41
41
 
42
42
  export function lowercaseIfString<T>(val: T) {