@effect-app/infra 4.0.0-beta.96 → 4.0.0-beta.98

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 4.0.0-beta.98
4
+
5
+ ### Patch Changes
6
+
7
+ - 5aed2e3: Add span to Cosmos `batchRemove` and include `namespace` attribute on all Cosmos store spans.
8
+ - effect-app@4.0.0-beta.98
9
+
10
+ ## 4.0.0-beta.97
11
+
12
+ ### Patch Changes
13
+
14
+ - 3eb66e9: Fix CosmosDB store `filter` to trigger namespace seeding on first access. Previously, if `filter` was the first operation called on a namespace, seed data was never created.
15
+ - effect-app@4.0.0-beta.97
16
+
3
17
  ## 4.0.0-beta.96
4
18
 
5
19
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"Cosmos.d.ts","sourceRoot":"","sources":["../../src/Store/Cosmos.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,EAA8D,MAAM,YAAY,CAAA;AAUvH,OAAO,EAA8C,KAAK,aAAa,EAAgC,UAAU,EAAE,MAAM,cAAc,CAAA;AA6gBvI,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,yCAIlD"}
1
+ {"version":3,"file":"Cosmos.d.ts","sourceRoot":"","sources":["../../src/Store/Cosmos.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,EAA8D,MAAM,YAAY,CAAA;AAUvH,OAAO,EAA8C,KAAK,aAAa,EAAgC,UAAU,EAAE,MAAM,cAAc,CAAA;AA8iBvI,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,yCAIlD"}
@@ -41,6 +41,7 @@ function makeCosmosStore({ prefix }) {
41
41
  const base = config?.partitionValue(e) ?? "primary";
42
42
  return `${nsPrefix(ns)}${base}`;
43
43
  };
44
+ const nsBasePartitionKey = (ns) => `${nsPrefix(ns)}${basePartitionKey}`;
44
45
  const resolveNamespace = !config?.allowNamespace
45
46
  ? Effect.succeed("primary")
46
47
  : storeId.asEffect().pipe(Effect.map((namespace) => {
@@ -49,7 +50,6 @@ function makeCosmosStore({ prefix }) {
49
50
  }
50
51
  return namespace;
51
52
  }));
52
- const resolvePartitionKey = Effect.map(resolveNamespace, (ns) => `${nsPrefix(ns)}${basePartitionKey}`);
53
53
  const defaultValues = config?.defaultValues ?? {};
54
54
  const container = db.container(containerId);
55
55
  const bulk = container.items.bulk.bind(container.items);
@@ -74,7 +74,7 @@ function makeCosmosStore({ prefix }) {
74
74
  id: markerId,
75
75
  ttl: -1
76
76
  }))), Effect.provide(ctx), Effect.orDie);
77
- }));
77
+ }), Effect.withLogSpan(`Cosmos.seedCheck ${name} in ${ns} [effect-app/infra/Store]`), Effect.withSpan("Cosmos.seed [effect-app/infra/Store]", { attributes: { name, namespace: ns } }));
78
78
  };
79
79
  const seedNamespace = Effect.fn("seedNamespace")(function* (ns) {
80
80
  if (!seed)
@@ -87,7 +87,6 @@ function makeCosmosStore({ prefix }) {
87
87
  yield* cached;
88
88
  });
89
89
  const resolveAndSeed = resolveNamespace.pipe(Effect.tap((ns) => seedNamespace(ns)));
90
- const resolvePartitionKeyAndSeed = Effect.map(resolveAndSeed, (ns) => `${nsPrefix(ns)}${basePartitionKey}`);
91
90
  const bulkSetInternal = (items, ns) => Effect
92
91
  .gen(function* () {
93
92
  // TODO: disable batching if need atomicity
@@ -151,10 +150,11 @@ function makeCosmosStore({ prefix }) {
151
150
  }));
152
151
  }))));
153
152
  return batchResult.flat();
154
- });
155
- const bulkSet = (items) => resolveAndSeed.pipe(Effect.flatMap((ns) => bulkSetInternal(items, ns).pipe(Effect.withSpan("Cosmos.bulkSet [effect-app/infra/Store]", {
156
- attributes: { "repository.container_id": containerId, "repository.model_name": name }
157
- }, { captureStackTrace: false }))));
153
+ })
154
+ .pipe(Effect.withSpan("Cosmos.bulkSet [effect-app/infra/Store]", {
155
+ attributes: { "repository.container_id": containerId, "repository.model_name": name, namespace: ns }
156
+ }, { captureStackTrace: false }));
157
+ const bulkSet = (items) => resolveAndSeed.pipe(Effect.flatMap((ns) => bulkSetInternal(items, ns)));
158
158
  const batchSet = (items) => {
159
159
  return resolveAndSeed
160
160
  .pipe(Effect.flatMap((ns) => Effect
@@ -204,45 +204,67 @@ function makeCosmosStore({ prefix }) {
204
204
  _etag: result[i]?.eTag
205
205
  }));
206
206
  })));
207
- })))
207
+ })
208
208
  .pipe(Effect
209
209
  .withSpan("Cosmos.batchSet [effect-app/infra/Store]", {
210
- attributes: { "repository.container_id": containerId, "repository.model_name": name }
211
- }, { captureStackTrace: false }));
210
+ attributes: {
211
+ "repository.container_id": containerId,
212
+ "repository.model_name": name,
213
+ namespace: ns
214
+ }
215
+ }, { captureStackTrace: false }))));
212
216
  };
213
217
  const s = {
214
218
  queryRaw: (query) => Effect
215
- .all({ q: Effect.sync(() => query.cosmos({ name })), pk: resolvePartitionKeyAndSeed })
216
- .pipe(Effect.tap(({ q }) => logQuery(q)), Effect.flatMap(({ pk, q }) => Effect.promise(() => container
219
+ .all({ q: Effect.sync(() => query.cosmos({ name })), ns: resolveAndSeed })
220
+ .pipe(Effect.tap(({ q }) => logQuery(q)), Effect.flatMap(({ ns, q }) => Effect
221
+ .promise(() => container
217
222
  .items
218
- .query(q, { partitionKey: pk })
223
+ .query(q, { partitionKey: nsBasePartitionKey(ns) })
219
224
  .fetchAll()
220
- .then(({ resources }) => resources.map((_) => ({ ...defaultValues, ...mapReverseId(_) }))))), Effect
221
- .withSpan("Cosmos.queryRaw [effect-app/infra/Store]", {
222
- attributes: { "repository.container_id": containerId, "repository.model_name": name }
223
- }, { captureStackTrace: false })),
224
- batchRemove: (ids, partitionKey) => resolvePartitionKeyAndSeed.pipe(Effect.flatMap((pk) => Effect.promise(() => execBatch(mutable(ids.map((id) => dropUndefinedT({
225
+ .then(({ resources }) => resources.map((_) => ({ ...defaultValues, ...mapReverseId(_) }))))
226
+ .pipe(Effect.withSpan("Cosmos.queryRaw [effect-app/infra/Store]", {
227
+ attributes: {
228
+ "repository.container_id": containerId,
229
+ "repository.model_name": name,
230
+ namespace: ns
231
+ }
232
+ }, { captureStackTrace: false })))),
233
+ batchRemove: (ids, partitionKey) => resolveAndSeed.pipe(Effect.flatMap((ns) => Effect
234
+ .promise(() => execBatch(mutable(ids.map((id) => dropUndefinedT({
225
235
  operationType: "Delete",
226
236
  id
227
237
  // don't use this or we get an error that the request and some item partition key dont match - makese no sense
228
238
  // partitionKey: config?.partitionValue({ [idKey]: id } as Encoded)
229
- }))), partitionKey ?? pk)))),
239
+ }))), partitionKey ?? nsBasePartitionKey(ns)))
240
+ .pipe(Effect.withSpan("Cosmos.batchRemove [effect-app/infra/Store]", {
241
+ attributes: {
242
+ "repository.container_id": containerId,
243
+ "repository.model_name": name,
244
+ namespace: ns
245
+ }
246
+ }, { captureStackTrace: false })))),
230
247
  all: Effect
231
248
  .all({
232
249
  q: Effect.sync(() => ({
233
250
  query: `SELECT * FROM ${name}`,
234
251
  parameters: []
235
252
  })),
236
- pk: resolvePartitionKeyAndSeed
253
+ ns: resolveAndSeed
237
254
  })
238
- .pipe(Effect.tap(({ q }) => logQuery(q)), Effect.flatMap(({ pk, q }) => Effect.promise(() => container
255
+ .pipe(Effect.tap(({ q }) => logQuery(q)), Effect.flatMap(({ ns, q }) => Effect
256
+ .promise(() => container
239
257
  .items
240
- .query(q, { partitionKey: pk })
258
+ .query(q, { partitionKey: nsBasePartitionKey(ns) })
241
259
  .fetchAll()
242
- .then(({ resources }) => resources.map((_) => ({ ...defaultValues, ...mapReverseId(_) }))))), Effect
243
- .withSpan("Cosmos.all [effect-app/infra/Store]", {
244
- attributes: { "repository.container_id": containerId, "repository.model_name": name }
245
- }, { captureStackTrace: false })),
260
+ .then(({ resources }) => resources.map((_) => ({ ...defaultValues, ...mapReverseId(_) }))))
261
+ .pipe(Effect.withSpan("Cosmos.all [effect-app/infra/Store]", {
262
+ attributes: {
263
+ "repository.container_id": containerId,
264
+ "repository.model_name": name,
265
+ namespace: ns
266
+ }
267
+ }, { captureStackTrace: false })))),
246
268
  /**
247
269
  * May return duplicate results for "join_find", when matching more than once.
248
270
  */
@@ -253,13 +275,14 @@ function makeCosmosStore({ prefix }) {
253
275
  return Effect
254
276
  .all({
255
277
  q: Effect.sync(() => buildWhereCosmosQuery3(idKey, filter ? [{ t: "where-scope", result: filter, relation: "some" }] : [], name, defaultValues, f.select, f.order, skip, limit)),
256
- pk: resolvePartitionKey
278
+ ns: resolveAndSeed
257
279
  })
258
280
  .pipe(Effect.tap(({ q }) => logQuery(q)), Effect
259
- .flatMap(({ pk, q }) => Effect.promise(() => f.select
281
+ .flatMap(({ ns, q }) => Effect
282
+ .promise(() => f.select
260
283
  ? container
261
284
  .items
262
- .query(q, { partitionKey: pk })
285
+ .query(q, { partitionKey: nsBasePartitionKey(ns) })
263
286
  .fetchAll()
264
287
  .then(({ resources }) => resources.map((_) => ({
265
288
  ...pipe(defaultValues, Struct.pick(f.select.filter((_) => typeof _ === "string"))),
@@ -267,12 +290,16 @@ function makeCosmosStore({ prefix }) {
267
290
  })))
268
291
  : container
269
292
  .items
270
- .query(q, { partitionKey: pk })
293
+ .query(q, { partitionKey: nsBasePartitionKey(ns) })
271
294
  .fetchAll()
272
- .then(({ resources }) => resources.map(({ f }) => ({ ...defaultValues, ...mapReverseId(f) }))))))
295
+ .then(({ resources }) => resources.map(({ f }) => ({ ...defaultValues, ...mapReverseId(f) }))))
273
296
  .pipe(Effect.withSpan("Cosmos.filter [effect-app/infra/Store]", {
274
- attributes: { "repository.container_id": containerId, "repository.model_name": name }
275
- }, { captureStackTrace: false }));
297
+ attributes: {
298
+ "repository.container_id": containerId,
299
+ "repository.model_name": name,
300
+ namespace: ns
301
+ }
302
+ }, { captureStackTrace: false }))));
276
303
  },
277
304
  find: (id) => resolveAndSeed.pipe(Effect.flatMap((ns) => Effect
278
305
  .promise(() => container
@@ -285,6 +312,7 @@ function makeCosmosStore({ prefix }) {
285
312
  "repository.container_id": containerId,
286
313
  "repository.model_name": name,
287
314
  partitionValue: nsPartitionValue(ns, { [idKey]: id }),
315
+ namespace: ns,
288
316
  id
289
317
  }
290
318
  }, { captureStackTrace: false })))),
@@ -319,6 +347,7 @@ function makeCosmosStore({ prefix }) {
319
347
  attributes: {
320
348
  "repository.container_id": containerId,
321
349
  "repository.model_name": name,
350
+ namespace: ns,
322
351
  id: e[idKey]
323
352
  }
324
353
  }, { captureStackTrace: false })))),
@@ -337,4 +366,4 @@ export function CosmosStoreLayer(cfg) {
337
366
  .toLayer(makeCosmosStore(cfg))
338
367
  .pipe(Layer.provide(CosmosClientLayer(Redacted.value(cfg.url), cfg.dbName)));
339
368
  }
340
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29zbW9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1N0b3JlL0Nvc21vcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBOEIsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3ZILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUM5RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUcxQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNyQyxPQUFPLEVBQWdHLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUV2SSxNQUFNLFNBQVMsR0FDYixDQUEyRCxLQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9HLEdBQUcsQ0FBQztJQUNKLEVBQUU7Q0FDSCxDQUFDLENBQUE7QUFDSixNQUFNLGdCQUFnQixHQUNwQixDQUEyRCxLQUFZLEVBQUUsRUFBRSxDQUMzRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUErRCxFQUFFLEVBQUUsQ0FDNUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENB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
369
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29zbW9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1N0b3JlL0Nvc21vcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBOEIsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3ZILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUM5RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUcxQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNyQyxPQUFPLEVBQWdHLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUV2SSxNQUFNLFNBQVMsR0FDYixDQUEyRCxLQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9HLEdBQUcsQ0FBQztJQUNKLEVBQUU7Q0FDSCxDQUFDLENBQUE7QUFDSixNQUFNLGdCQUFnQixHQUNwQixDQUEyRCxLQUFZLEVBQUUsRUFBRSxDQUMzRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUErRCxFQUFFLEVBQUUsQ0FDNUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/infra",
3
- "version": "4.0.0-beta.96",
3
+ "version": "4.0.0-beta.98",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -13,7 +13,7 @@
13
13
  "proper-lockfile": "^4.1.2",
14
14
  "pure-rand": "7.0.1",
15
15
  "query-string": "^9.3.1",
16
- "effect-app": "4.0.0-beta.96"
16
+ "effect-app": "4.0.0-beta.98"
17
17
  },
18
18
  "devDependencies": {
19
19
  "@azure/cosmos": "^4.9.2",
@@ -57,6 +57,7 @@ function makeCosmosStore({ prefix }: StorageConfig) {
57
57
  const base = config?.partitionValue(e) ?? "primary"
58
58
  return `${nsPrefix(ns)}${base}`
59
59
  }
60
+ const nsBasePartitionKey = (ns: string) => `${nsPrefix(ns)}${basePartitionKey}`
60
61
  const resolveNamespace = !config?.allowNamespace
61
62
  ? Effect.succeed("primary")
62
63
  : storeId.asEffect().pipe(Effect.map((namespace) => {
@@ -65,7 +66,6 @@ function makeCosmosStore({ prefix }: StorageConfig) {
65
66
  }
66
67
  return namespace
67
68
  }))
68
- const resolvePartitionKey = Effect.map(resolveNamespace, (ns) => `${nsPrefix(ns)}${basePartitionKey}`)
69
69
 
70
70
  const defaultValues = config?.defaultValues ?? {}
71
71
  const container = db.container(containerId)
@@ -113,7 +113,9 @@ function makeCosmosStore({ prefix }: StorageConfig) {
113
113
  Effect.provide(ctx),
114
114
  Effect.orDie
115
115
  )
116
- })
116
+ }),
117
+ Effect.withLogSpan(`Cosmos.seedCheck ${name} in ${ns} [effect-app/infra/Store]`),
118
+ Effect.withSpan("Cosmos.seed [effect-app/infra/Store]", { attributes: { name, namespace: ns } })
117
119
  )
118
120
  }
119
121
  const seedNamespace = Effect.fn("seedNamespace")(function*(ns: string) {
@@ -128,7 +130,6 @@ function makeCosmosStore({ prefix }: StorageConfig) {
128
130
  const resolveAndSeed = resolveNamespace.pipe(
129
131
  Effect.tap((ns) => seedNamespace(ns))
130
132
  )
131
- const resolvePartitionKeyAndSeed = Effect.map(resolveAndSeed, (ns) => `${nsPrefix(ns)}${basePartitionKey}`)
132
133
 
133
134
  const bulkSetInternal = (items: NonEmptyReadonlyArray<PM>, ns: string) =>
134
135
  Effect
@@ -231,15 +232,14 @@ function makeCosmosStore({ prefix }: StorageConfig) {
231
232
 
232
233
  return batchResult.flat() as unknown as NonEmptyReadonlyArray<Encoded>
233
234
  })
234
-
235
- const bulkSet = (items: NonEmptyReadonlyArray<PM>) =>
236
- resolveAndSeed.pipe(Effect.flatMap((ns) =>
237
- bulkSetInternal(items, ns).pipe(
235
+ .pipe(
238
236
  Effect.withSpan("Cosmos.bulkSet [effect-app/infra/Store]", {
239
- attributes: { "repository.container_id": containerId, "repository.model_name": name }
237
+ attributes: { "repository.container_id": containerId, "repository.model_name": name, namespace: ns }
240
238
  }, { captureStackTrace: false })
241
239
  )
242
- ))
240
+
241
+ const bulkSet = (items: NonEmptyReadonlyArray<PM>) =>
242
+ resolveAndSeed.pipe(Effect.flatMap((ns) => bulkSetInternal(items, ns)))
243
243
 
244
244
  const batchSet = (items: NonEmptyReadonlyArray<PM>) => {
245
245
  return resolveAndSeed
@@ -303,52 +303,72 @@ function makeCosmosStore({ prefix }: StorageConfig) {
303
303
  })) as unknown as NonEmptyReadonlyArray<Encoded>
304
304
  })))
305
305
  })
306
+ .pipe(Effect
307
+ .withSpan("Cosmos.batchSet [effect-app/infra/Store]", {
308
+ attributes: {
309
+ "repository.container_id": containerId,
310
+ "repository.model_name": name,
311
+ namespace: ns
312
+ }
313
+ }, { captureStackTrace: false }))
306
314
  ))
307
- .pipe(Effect
308
- .withSpan("Cosmos.batchSet [effect-app/infra/Store]", {
309
- attributes: { "repository.container_id": containerId, "repository.model_name": name }
310
- }, { captureStackTrace: false }))
311
315
  }
312
316
 
313
317
  const s: Store<IdKey, Encoded> = {
314
318
  queryRaw: <Out>(query: RawQuery<Encoded, Out>) =>
315
319
  Effect
316
- .all({ q: Effect.sync(() => query.cosmos({ name })), pk: resolvePartitionKeyAndSeed })
320
+ .all({ q: Effect.sync(() => query.cosmos({ name })), ns: resolveAndSeed })
317
321
  .pipe(
318
322
  Effect.tap(({ q }) => logQuery(q)),
319
- Effect.flatMap(({ pk, q }) =>
320
- Effect.promise(() =>
321
- container
322
- .items
323
- .query<Out>(q, { partitionKey: pk })
324
- .fetchAll()
325
- .then(({ resources }) =>
326
- resources.map(
327
- (_) => ({ ...defaultValues, ...mapReverseId(_ as any) }) as Out
323
+ Effect.flatMap(({ ns, q }) =>
324
+ Effect
325
+ .promise(() =>
326
+ container
327
+ .items
328
+ .query<Out>(q, { partitionKey: nsBasePartitionKey(ns) })
329
+ .fetchAll()
330
+ .then(({ resources }) =>
331
+ resources.map(
332
+ (_) => ({ ...defaultValues, ...mapReverseId(_ as any) }) as Out
333
+ )
328
334
  )
329
- )
330
- )
331
- ),
332
- Effect
333
- .withSpan("Cosmos.queryRaw [effect-app/infra/Store]", {
334
- attributes: { "repository.container_id": containerId, "repository.model_name": name }
335
- }, { captureStackTrace: false })
335
+ )
336
+ .pipe(
337
+ Effect.withSpan("Cosmos.queryRaw [effect-app/infra/Store]", {
338
+ attributes: {
339
+ "repository.container_id": containerId,
340
+ "repository.model_name": name,
341
+ namespace: ns
342
+ }
343
+ }, { captureStackTrace: false })
344
+ )
345
+ )
336
346
  ),
337
347
  batchRemove: (ids, partitionKey?: string) =>
338
- resolvePartitionKeyAndSeed.pipe(Effect.flatMap((pk) =>
339
- Effect.promise(() =>
340
- execBatch(
341
- mutable(ids.map((id) =>
342
- dropUndefinedT({
343
- operationType: "Delete" as const,
344
- id
345
- // don't use this or we get an error that the request and some item partition key dont match - makese no sense
346
- // partitionKey: config?.partitionValue({ [idKey]: id } as Encoded)
347
- })
348
- )),
349
- partitionKey ?? pk
348
+ resolveAndSeed.pipe(Effect.flatMap((ns) =>
349
+ Effect
350
+ .promise(() =>
351
+ execBatch(
352
+ mutable(ids.map((id) =>
353
+ dropUndefinedT({
354
+ operationType: "Delete" as const,
355
+ id
356
+ // don't use this or we get an error that the request and some item partition key dont match - makese no sense
357
+ // partitionKey: config?.partitionValue({ [idKey]: id } as Encoded)
358
+ })
359
+ )),
360
+ partitionKey ?? nsBasePartitionKey(ns)
361
+ )
362
+ )
363
+ .pipe(
364
+ Effect.withSpan("Cosmos.batchRemove [effect-app/infra/Store]", {
365
+ attributes: {
366
+ "repository.container_id": containerId,
367
+ "repository.model_name": name,
368
+ namespace: ns
369
+ }
370
+ }, { captureStackTrace: false })
350
371
  )
351
- )
352
372
  )),
353
373
  all: Effect
354
374
  .all({
@@ -356,27 +376,33 @@ function makeCosmosStore({ prefix }: StorageConfig) {
356
376
  query: `SELECT * FROM ${name}`,
357
377
  parameters: []
358
378
  })),
359
- pk: resolvePartitionKeyAndSeed
379
+ ns: resolveAndSeed
360
380
  })
361
381
  .pipe(
362
382
  Effect.tap(({ q }) => logQuery(q)),
363
- Effect.flatMap(({ pk, q }) =>
364
- Effect.promise(() =>
365
- container
366
- .items
367
- .query<PMCosmos>(q, { partitionKey: pk })
368
- .fetchAll()
369
- .then(({ resources }) =>
370
- resources.map(
371
- (_) => ({ ...defaultValues, ...mapReverseId(_) })
383
+ Effect.flatMap(({ ns, q }) =>
384
+ Effect
385
+ .promise(() =>
386
+ container
387
+ .items
388
+ .query<PMCosmos>(q, { partitionKey: nsBasePartitionKey(ns) })
389
+ .fetchAll()
390
+ .then(({ resources }) =>
391
+ resources.map(
392
+ (_) => ({ ...defaultValues, ...mapReverseId(_) })
393
+ )
372
394
  )
373
- )
374
- )
375
- ),
376
- Effect
377
- .withSpan("Cosmos.all [effect-app/infra/Store]", {
378
- attributes: { "repository.container_id": containerId, "repository.model_name": name }
379
- }, { captureStackTrace: false })
395
+ )
396
+ .pipe(
397
+ Effect.withSpan("Cosmos.all [effect-app/infra/Store]", {
398
+ attributes: {
399
+ "repository.container_id": containerId,
400
+ "repository.model_name": name,
401
+ namespace: ns
402
+ }
403
+ }, { captureStackTrace: false })
404
+ )
405
+ )
380
406
  ),
381
407
  /**
382
408
  * May return duplicate results for "join_find", when matching more than once.
@@ -404,42 +430,47 @@ function makeCosmosStore({ prefix }: StorageConfig) {
404
430
  limit
405
431
  )
406
432
  ),
407
- pk: resolvePartitionKey
433
+ ns: resolveAndSeed
408
434
  })
409
435
  .pipe(
410
436
  Effect.tap(({ q }) => logQuery(q)),
411
437
  Effect
412
- .flatMap(({ pk, q }) =>
413
- Effect.promise(() =>
414
- f.select
415
- ? container
416
- .items
417
- .query<M>(q, { partitionKey: pk })
418
- .fetchAll()
419
- .then(({ resources }) =>
420
- resources.map((_) => ({
421
- ...pipe(
422
- defaultValues,
423
- Struct.pick(f.select!.filter((_) => typeof _ === "string") as never[])
424
- ),
425
- ...mapReverseId(_ as any)
426
- }))
427
- )
428
- : container
429
- .items
430
- .query<{ f: M }>(q, { partitionKey: pk })
431
- .fetchAll()
432
- .then(({ resources }) =>
433
- resources.map(({ f }) => ({ ...defaultValues, ...mapReverseId(f as any) }) as any)
434
- )
435
- )
438
+ .flatMap(({ ns, q }) =>
439
+ Effect
440
+ .promise(() =>
441
+ f.select
442
+ ? container
443
+ .items
444
+ .query<M>(q, { partitionKey: nsBasePartitionKey(ns) })
445
+ .fetchAll()
446
+ .then(({ resources }) =>
447
+ resources.map((_) => ({
448
+ ...pipe(
449
+ defaultValues,
450
+ Struct.pick(f.select!.filter((_) => typeof _ === "string") as never[])
451
+ ),
452
+ ...mapReverseId(_ as any)
453
+ }))
454
+ )
455
+ : container
456
+ .items
457
+ .query<{ f: M }>(q, { partitionKey: nsBasePartitionKey(ns) })
458
+ .fetchAll()
459
+ .then(({ resources }) =>
460
+ resources.map(({ f }) => ({ ...defaultValues, ...mapReverseId(f as any) }) as any)
461
+ )
462
+ )
463
+ .pipe(
464
+ Effect.withSpan("Cosmos.filter [effect-app/infra/Store]", {
465
+ attributes: {
466
+ "repository.container_id": containerId,
467
+ "repository.model_name": name,
468
+ namespace: ns
469
+ }
470
+ }, { captureStackTrace: false })
471
+ )
436
472
  )
437
473
  )
438
- .pipe(
439
- Effect.withSpan("Cosmos.filter [effect-app/infra/Store]", {
440
- attributes: { "repository.container_id": containerId, "repository.model_name": name }
441
- }, { captureStackTrace: false })
442
- )
443
474
  },
444
475
  find: (id) =>
445
476
  resolveAndSeed.pipe(Effect.flatMap((ns) =>
@@ -460,6 +491,7 @@ function makeCosmosStore({ prefix }: StorageConfig) {
460
491
  "repository.container_id": containerId,
461
492
  "repository.model_name": name,
462
493
  partitionValue: nsPartitionValue(ns, { [idKey]: id } as Encoded),
494
+ namespace: ns,
463
495
  id
464
496
  }
465
497
  }, { captureStackTrace: false }))
@@ -517,6 +549,7 @@ function makeCosmosStore({ prefix }: StorageConfig) {
517
549
  attributes: {
518
550
  "repository.container_id": containerId,
519
551
  "repository.model_name": name,
552
+ namespace: ns,
520
553
  id: e[idKey]
521
554
  }
522
555
  }, { captureStackTrace: false })