@devwithbobby/loops 0.1.19 → 0.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 (37) hide show
  1. package/dist/client/index.d.ts +47 -12
  2. package/dist/client/index.d.ts.map +1 -1
  3. package/dist/client/index.js +42 -4
  4. package/dist/component/_generated/api.d.ts +185 -1
  5. package/dist/component/_generated/api.d.ts.map +1 -1
  6. package/dist/component/_generated/component.d.ts +12 -5
  7. package/dist/component/_generated/component.d.ts.map +1 -1
  8. package/dist/component/_generated/dataModel.d.ts +1 -1
  9. package/dist/component/aggregates.d.ts +42 -0
  10. package/dist/component/aggregates.d.ts.map +1 -0
  11. package/dist/component/aggregates.js +54 -0
  12. package/dist/component/convex.config.d.ts.map +1 -1
  13. package/dist/component/convex.config.js +2 -0
  14. package/dist/component/helpers.d.ts.map +1 -1
  15. package/dist/component/http.js +1 -1
  16. package/dist/component/lib.d.ts +66 -17
  17. package/dist/component/lib.d.ts.map +1 -1
  18. package/dist/component/lib.js +194 -73
  19. package/dist/component/schema.d.ts +2 -2
  20. package/dist/component/tables/contacts.d.ts.map +1 -1
  21. package/dist/component/tables/emailOperations.d.ts +4 -4
  22. package/dist/component/tables/emailOperations.d.ts.map +1 -1
  23. package/dist/test.d.ts +2 -2
  24. package/dist/types.d.ts +249 -62
  25. package/dist/types.d.ts.map +1 -1
  26. package/dist/types.js +4 -2
  27. package/dist/utils.d.ts +6 -6
  28. package/package.json +15 -9
  29. package/src/client/index.ts +52 -6
  30. package/src/component/_generated/api.ts +190 -1
  31. package/src/component/_generated/component.ts +10 -5
  32. package/src/component/_generated/dataModel.ts +1 -1
  33. package/src/component/aggregates.ts +89 -0
  34. package/src/component/convex.config.ts +3 -0
  35. package/src/component/http.ts +1 -1
  36. package/src/component/lib.ts +226 -89
  37. package/src/types.ts +20 -122
@@ -1,5 +1,5 @@
1
1
  import type { ComponentApi } from "../component/_generated/component.js";
2
- import type { RunActionCtx, RunQueryCtx } from "../types";
2
+ import type { RunActionCtx, RunMutationCtx, RunQueryCtx } from "../types";
3
3
  export type LoopsComponent = ComponentApi;
4
4
  export interface ContactData {
5
5
  email: string;
@@ -119,16 +119,19 @@ export declare class Loops {
119
119
  subscribed?: boolean;
120
120
  }): Promise<number>;
121
121
  /**
122
- * List contacts with pagination and optional filters
122
+ * List contacts with cursor-based pagination and optional filters
123
123
  * Returns actual contact data, not just a count
124
124
  * This queries the component's local database, not Loops API
125
+ *
126
+ * Uses cursor-based pagination for efficiency. Pass the `continueCursor`
127
+ * from the previous response as `cursor` to get the next page.
125
128
  */
126
129
  listContacts(ctx: RunQueryCtx, options?: {
127
130
  userGroup?: string;
128
131
  source?: string;
129
132
  subscribed?: boolean;
130
133
  limit?: number;
131
- offset?: number;
134
+ cursor?: string | null;
132
135
  }): Promise<{
133
136
  contacts: Array<{
134
137
  _id: string;
@@ -143,10 +146,8 @@ export declare class Loops {
143
146
  userGroup?: string;
144
147
  userId?: string;
145
148
  }>;
146
- hasMore: boolean;
147
- limit: number;
148
- offset: number;
149
- total: number;
149
+ continueCursor: string | null;
150
+ isDone: boolean;
150
151
  }>;
151
152
  /**
152
153
  * Detect spam patterns: emails sent to the same recipient too frequently
@@ -262,6 +263,33 @@ export declare class Loops {
262
263
  success: boolean;
263
264
  warning?: string;
264
265
  }>;
266
+ /**
267
+ * Backfill the contact aggregate with existing contacts.
268
+ * Run this after upgrading to a version with aggregate support.
269
+ *
270
+ * This processes contacts in batches to avoid timeout issues with large datasets.
271
+ * Call repeatedly with the returned cursor until isDone is true.
272
+ *
273
+ * Usage:
274
+ * ```ts
275
+ * // First call - clear existing aggregate and start backfill
276
+ * let result = await loops.backfillContactAggregate(ctx, { clear: true });
277
+ *
278
+ * // Continue until done
279
+ * while (!result.isDone) {
280
+ * result = await loops.backfillContactAggregate(ctx, { cursor: result.cursor });
281
+ * }
282
+ * ```
283
+ */
284
+ backfillContactAggregate(ctx: RunMutationCtx, options?: {
285
+ cursor?: string | null;
286
+ batchSize?: number;
287
+ clear?: boolean;
288
+ }): Promise<{
289
+ cursor: string | null;
290
+ isDone: boolean;
291
+ processed: number;
292
+ }>;
265
293
  /**
266
294
  * For easy re-exporting.
267
295
  * Apps can do
@@ -378,7 +406,7 @@ export declare class Loops {
378
406
  subscribed?: boolean | undefined;
379
407
  userGroup?: string | undefined;
380
408
  limit?: number | undefined;
381
- offset?: number | undefined;
409
+ cursor?: string | null | undefined;
382
410
  }, Promise<{
383
411
  contacts: Array<{
384
412
  _id: string;
@@ -393,10 +421,8 @@ export declare class Loops {
393
421
  userGroup?: string;
394
422
  userId?: string;
395
423
  }>;
396
- hasMore: boolean;
397
- limit: number;
398
- offset: number;
399
- total: number;
424
+ continueCursor: string | null;
425
+ isDone: boolean;
400
426
  }>>;
401
427
  detectRecipientSpam: import("convex/server").RegisteredQuery<"public", {
402
428
  timeWindowMs?: number | undefined;
@@ -466,6 +492,15 @@ export declare class Loops {
466
492
  limit: number;
467
493
  timeWindowMs: number;
468
494
  }>>;
495
+ backfillContactAggregate: import("convex/server").RegisteredMutation<"public", {
496
+ cursor?: string | null | undefined;
497
+ batchSize?: number | undefined;
498
+ clear?: boolean | undefined;
499
+ }, Promise<{
500
+ cursor: string | null;
501
+ isDone: boolean;
502
+ processed: number;
503
+ }>>;
469
504
  };
470
505
  }
471
506
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE1E,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC;AAE1C,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AAED,qBAAa,KAAK;IACjB,SAAgB,OAAO,CAAC,EAAE;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqC;IACzD,OAAO,CAAC,OAAO,CAAC,CAAS;gBAGxB,SAAS,EAAE,cAAc,EACzB,OAAO,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB;IAgCF;;;OAGG;IACH,OAAO,KAAK,MAAM,GAQjB;IAED;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW;;;;IAOxD;;OAEG;IACG,aAAa,CAClB,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG;QAC/B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACxC;;;IASF;;OAEG;IACG,iBAAiB,CACtB,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE,yBAAyB;;;;IAQnC;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY;;;IAOxD;;;OAGG;IACG,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM;;qBA2CpB,CAAC;iBAC7B,CAAC;qBAEW,CAAC;cAEH,CAAC;oBAEN,CAAC;kBAGA,CAAC;sBAAuC,CAAC;qBAIhC,CAAC;kBAAmC,CAAC;;;;IAlDtD;;;OAGG;IACG,mBAAmB,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE;;;;;iBA7EzD,CAAC;;;;;IAoFZ;;;OAGG;IACG,kBAAkB,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM;;;IAOzD;;;OAGG;IACG,kBAAkB,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM;;;IAOzD;;;;OAIG;IACG,aAAa,CAClB,GAAG,EAAE,WAAW,EAChB,OAAO,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,OAAO,CAAC;KACrB;IAKF;;;;;;;OAOG;IACG,YAAY,CACjB,GAAG,EAAE,WAAW,EAChB,OAAO,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB;;;;;qBAkBW,CAAC;oBAGb,CAAD;0BAAoC,CAAC;kBAC1B,CAAC;;;qBAC4C,CAAC;kBAKnD,CAAC;;;;;IAjBP;;OAEG;IACG,mBAAmB,CACxB,GAAG,EAAE,WAAW,EAChB,OAAO,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAC/B;;;;;IAQF;;OAEG;IACG,eAAe,CACpB,GAAG,EAAE,WAAW,EAChB,OAAO,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC3B;;;;;IAQF;;OAEG;IACG,aAAa,CAClB,GAAG,EAAE,WAAW,EAChB,OAAO,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,MAAM,CAAC;KACtB;;;;;;;;IAOF;;OAEG;IACG,uBAAuB,CAC5B,GAAG,EAAE,WAAW,EAChB,OAAO,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC3B;;;;;;;;IAQF;;OAEG;IACG,uBAAuB,CAC5B,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;KAClB;;;;;;;IAKF;;OAEG;IACG,mBAAmB,CACxB,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;KAClB;;;;;;;IAKF;;OAEG;IACG,oBAAoB,CACzB,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;KAClB;;;;;;IAKF;;OAEG;IACG,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM;;;IAOpD;;;;;;;;;OASG;IACG,WAAW,CAChB,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB;;;;IAQF;;;;;;;;;;;;;;;;;OAiBG;IACG,wBAAwB,CAC7B,GAAG,EAAE,cAAc,EACnB,OAAO,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,OAAO,CAAC;KAChB;;;;;IASF;;;;;;OAMG;IACH,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA1N2B,CAAC;qBAC7B,CAAC;yBAEW,CAAC;kBAEH,CAAC;wBAEN,CAAC;sBAGA,CAAC;0BAAuC,CAAC;yBAIhC,CAAC;sBAAmC,CAAC;;;;;;;;;;;;;;;;;;;qBA3H3C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA4JC,CAAC;wBAGb,CAAD;8BAAoC,CAAC;sBAC1B,CAAC;;;yBAC4C,CAAC;sBAKnD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmXP"}
@@ -1,4 +1,4 @@
1
- import { actionGeneric, queryGeneric } from "convex/server";
1
+ import { actionGeneric, mutationGeneric, queryGeneric } from "convex/server";
2
2
  import { v } from "convex/values";
3
3
  export class Loops {
4
4
  options;
@@ -122,9 +122,12 @@ export class Loops {
122
122
  return ctx.runQuery(this.lib.countContacts, options ?? {});
123
123
  }
124
124
  /**
125
- * List contacts with pagination and optional filters
125
+ * List contacts with cursor-based pagination and optional filters
126
126
  * Returns actual contact data, not just a count
127
127
  * This queries the component's local database, not Loops API
128
+ *
129
+ * Uses cursor-based pagination for efficiency. Pass the `continueCursor`
130
+ * from the previous response as `cursor` to get the next page.
128
131
  */
129
132
  async listContacts(ctx, options) {
130
133
  return ctx.runQuery(this.lib.listContacts, {
@@ -132,7 +135,7 @@ export class Loops {
132
135
  source: options?.source,
133
136
  subscribed: options?.subscribed,
134
137
  limit: options?.limit ?? 100,
135
- offset: options?.offset ?? 0,
138
+ cursor: options?.cursor ?? null,
136
139
  });
137
140
  }
138
141
  /**
@@ -213,6 +216,31 @@ export class Loops {
213
216
  ...options,
214
217
  });
215
218
  }
219
+ /**
220
+ * Backfill the contact aggregate with existing contacts.
221
+ * Run this after upgrading to a version with aggregate support.
222
+ *
223
+ * This processes contacts in batches to avoid timeout issues with large datasets.
224
+ * Call repeatedly with the returned cursor until isDone is true.
225
+ *
226
+ * Usage:
227
+ * ```ts
228
+ * // First call - clear existing aggregate and start backfill
229
+ * let result = await loops.backfillContactAggregate(ctx, { clear: true });
230
+ *
231
+ * // Continue until done
232
+ * while (!result.isDone) {
233
+ * result = await loops.backfillContactAggregate(ctx, { cursor: result.cursor });
234
+ * }
235
+ * ```
236
+ */
237
+ async backfillContactAggregate(ctx, options) {
238
+ return ctx.runMutation(this.lib.backfillContactAggregate, {
239
+ cursor: options?.cursor ?? null,
240
+ batchSize: options?.batchSize ?? 100,
241
+ clear: options?.clear,
242
+ });
243
+ }
216
244
  /**
217
245
  * For easy re-exporting.
218
246
  * Apps can do
@@ -346,7 +374,7 @@ export class Loops {
346
374
  source: v.optional(v.string()),
347
375
  subscribed: v.optional(v.boolean()),
348
376
  limit: v.optional(v.number()),
349
- offset: v.optional(v.number()),
377
+ cursor: v.optional(v.union(v.string(), v.null())),
350
378
  },
351
379
  handler: async (ctx, args) => {
352
380
  return await this.listContacts(ctx, args);
@@ -416,6 +444,16 @@ export class Loops {
416
444
  return await this.checkGlobalRateLimit(ctx, args);
417
445
  },
418
446
  }),
447
+ backfillContactAggregate: mutationGeneric({
448
+ args: {
449
+ cursor: v.optional(v.union(v.string(), v.null())),
450
+ batchSize: v.optional(v.number()),
451
+ clear: v.optional(v.boolean()),
452
+ },
453
+ handler: async (ctx, args) => {
454
+ return await this.backfillContactAggregate(ctx, args);
455
+ },
456
+ }),
419
457
  };
420
458
  }
421
459
  }
@@ -6,6 +6,7 @@
6
6
  * To regenerate, run `npx convex dev`.
7
7
  * @module
8
8
  */
9
+ import type * as aggregates from "../aggregates.js";
9
10
  import type * as helpers from "../helpers.js";
10
11
  import type * as http from "../http.js";
11
12
  import type * as lib from "../lib.js";
@@ -14,6 +15,7 @@ import type * as tables_emailOperations from "../tables/emailOperations.js";
14
15
  import type * as validators from "../validators.js";
15
16
  import type { ApiFromModules, FilterApi, FunctionReference } from "convex/server";
16
17
  declare const fullApi: ApiFromModules<{
18
+ aggregates: typeof aggregates;
17
19
  helpers: typeof helpers;
18
20
  http: typeof http;
19
21
  lib: typeof lib;
@@ -39,6 +41,188 @@ export declare const api: FilterApi<typeof fullApi, FunctionReference<any, "publ
39
41
  * ```
40
42
  */
41
43
  export declare const internal: FilterApi<typeof fullApi, FunctionReference<any, "internal">>;
42
- export declare const components: {};
44
+ export declare const components: {
45
+ contactAggregate: {
46
+ btree: {
47
+ aggregateBetween: FunctionReference<"query", "internal", {
48
+ k1?: any;
49
+ k2?: any;
50
+ namespace?: any;
51
+ }, {
52
+ count: number;
53
+ sum: number;
54
+ }>;
55
+ aggregateBetweenBatch: FunctionReference<"query", "internal", {
56
+ queries: Array<{
57
+ k1?: any;
58
+ k2?: any;
59
+ namespace?: any;
60
+ }>;
61
+ }, Array<{
62
+ count: number;
63
+ sum: number;
64
+ }>>;
65
+ atNegativeOffset: FunctionReference<"query", "internal", {
66
+ k1?: any;
67
+ k2?: any;
68
+ namespace?: any;
69
+ offset: number;
70
+ }, {
71
+ k: any;
72
+ s: number;
73
+ v: any;
74
+ }>;
75
+ atOffset: FunctionReference<"query", "internal", {
76
+ k1?: any;
77
+ k2?: any;
78
+ namespace?: any;
79
+ offset: number;
80
+ }, {
81
+ k: any;
82
+ s: number;
83
+ v: any;
84
+ }>;
85
+ atOffsetBatch: FunctionReference<"query", "internal", {
86
+ queries: Array<{
87
+ k1?: any;
88
+ k2?: any;
89
+ namespace?: any;
90
+ offset: number;
91
+ }>;
92
+ }, Array<{
93
+ k: any;
94
+ s: number;
95
+ v: any;
96
+ }>>;
97
+ get: FunctionReference<"query", "internal", {
98
+ key: any;
99
+ namespace?: any;
100
+ }, null | {
101
+ k: any;
102
+ s: number;
103
+ v: any;
104
+ }>;
105
+ offset: FunctionReference<"query", "internal", {
106
+ k1?: any;
107
+ key: any;
108
+ namespace?: any;
109
+ }, number>;
110
+ offsetUntil: FunctionReference<"query", "internal", {
111
+ k2?: any;
112
+ key: any;
113
+ namespace?: any;
114
+ }, number>;
115
+ paginate: FunctionReference<"query", "internal", {
116
+ cursor?: string;
117
+ k1?: any;
118
+ k2?: any;
119
+ limit: number;
120
+ namespace?: any;
121
+ order: "asc" | "desc";
122
+ }, {
123
+ cursor: string;
124
+ isDone: boolean;
125
+ page: Array<{
126
+ k: any;
127
+ s: number;
128
+ v: any;
129
+ }>;
130
+ }>;
131
+ paginateNamespaces: FunctionReference<"query", "internal", {
132
+ cursor?: string;
133
+ limit: number;
134
+ }, {
135
+ cursor: string;
136
+ isDone: boolean;
137
+ page: Array<any>;
138
+ }>;
139
+ validate: FunctionReference<"query", "internal", {
140
+ namespace?: any;
141
+ }, any>;
142
+ };
143
+ inspect: {
144
+ display: FunctionReference<"query", "internal", {
145
+ namespace?: any;
146
+ }, any>;
147
+ dump: FunctionReference<"query", "internal", {
148
+ namespace?: any;
149
+ }, string>;
150
+ inspectNode: FunctionReference<"query", "internal", {
151
+ namespace?: any;
152
+ node?: string;
153
+ }, null>;
154
+ listTreeNodes: FunctionReference<"query", "internal", {
155
+ take?: number;
156
+ }, Array<{
157
+ _creationTime: number;
158
+ _id: string;
159
+ aggregate?: {
160
+ count: number;
161
+ sum: number;
162
+ };
163
+ items: Array<{
164
+ k: any;
165
+ s: number;
166
+ v: any;
167
+ }>;
168
+ subtrees: Array<string>;
169
+ }>>;
170
+ listTrees: FunctionReference<"query", "internal", {
171
+ take?: number;
172
+ }, Array<{
173
+ _creationTime: number;
174
+ _id: string;
175
+ maxNodeSize: number;
176
+ namespace?: any;
177
+ root: string;
178
+ }>>;
179
+ };
180
+ public: {
181
+ clear: FunctionReference<"mutation", "internal", {
182
+ maxNodeSize?: number;
183
+ namespace?: any;
184
+ rootLazy?: boolean;
185
+ }, null>;
186
+ delete_: FunctionReference<"mutation", "internal", {
187
+ key: any;
188
+ namespace?: any;
189
+ }, null>;
190
+ deleteIfExists: FunctionReference<"mutation", "internal", {
191
+ key: any;
192
+ namespace?: any;
193
+ }, any>;
194
+ init: FunctionReference<"mutation", "internal", {
195
+ maxNodeSize?: number;
196
+ namespace?: any;
197
+ rootLazy?: boolean;
198
+ }, null>;
199
+ insert: FunctionReference<"mutation", "internal", {
200
+ key: any;
201
+ namespace?: any;
202
+ summand?: number;
203
+ value: any;
204
+ }, null>;
205
+ makeRootLazy: FunctionReference<"mutation", "internal", {
206
+ namespace?: any;
207
+ }, null>;
208
+ replace: FunctionReference<"mutation", "internal", {
209
+ currentKey: any;
210
+ namespace?: any;
211
+ newKey: any;
212
+ newNamespace?: any;
213
+ summand?: number;
214
+ value: any;
215
+ }, null>;
216
+ replaceOrInsert: FunctionReference<"mutation", "internal", {
217
+ currentKey: any;
218
+ namespace?: any;
219
+ newKey: any;
220
+ newNamespace?: any;
221
+ summand?: number;
222
+ value: any;
223
+ }, any>;
224
+ };
225
+ };
226
+ };
43
227
  export {};
44
228
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/component/_generated/api.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH,OAAO,KAAK,KAAK,OAAO,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,KAAK,IAAI,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,KAAK,GAAG,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,KAAK,eAAe,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,KAAK,sBAAsB,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAGvB,QAAA,MAAM,OAAO,EAAE,cAAc,CAAC;IAC5B,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,IAAI,EAAE,OAAO,IAAI,CAAC;IAClB,GAAG,EAAE,OAAO,GAAG,CAAC;IAChB,iBAAiB,EAAE,OAAO,eAAe,CAAC;IAC1C,wBAAwB,EAAE,OAAO,sBAAsB,CAAC;IACxD,UAAU,EAAE,OAAO,UAAU,CAAC;CAC/B,CAAiB,CAAC;AAEnB;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,EAAE,SAAS,CACzB,OAAO,OAAO,EACd,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CACjB,CAAC;AAElB;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,EAAE,SAAS,CAC9B,OAAO,OAAO,EACd,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CACnB,CAAC;AAElB,eAAO,MAAM,UAAU,EAAqC,EAAE,CAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/component/_generated/api.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,15 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
35
35
  id?: string;
36
36
  success: boolean;
37
37
  }, Name>;
38
+ backfillContactAggregate: FunctionReference<"mutation", "internal", {
39
+ batchSize?: number;
40
+ clear?: boolean;
41
+ cursor?: string | null;
42
+ }, {
43
+ cursor: string | null;
44
+ isDone: boolean;
45
+ processed: number;
46
+ }, Name>;
38
47
  batchCreateContacts: FunctionReference<"action", "internal", {
39
48
  apiKey: string;
40
49
  contacts: Array<{
@@ -153,8 +162,8 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
153
162
  uniqueRecipients: number;
154
163
  }, Name>;
155
164
  listContacts: FunctionReference<"query", "internal", {
165
+ cursor?: string | null;
156
166
  limit?: number;
157
- offset?: number;
158
167
  source?: string;
159
168
  subscribed?: boolean;
160
169
  userGroup?: string;
@@ -172,10 +181,8 @@ export type ComponentApi<Name extends string | undefined = string | undefined> =
172
181
  userGroup?: string;
173
182
  userId?: string;
174
183
  }>;
175
- hasMore: boolean;
176
- limit: number;
177
- offset: number;
178
- total: number;
184
+ continueCursor: string | null;
185
+ isDone: boolean;
179
186
  }, Name>;
180
187
  logEmailOperation: FunctionReference<"mutation", "internal", {
181
188
  actorId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/component/_generated/component.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,CAAC,IAAI,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,IAC3E;IACE,GAAG,EAAE;QACH,UAAU,EAAE,iBAAiB,CAC3B,QAAQ,EACR,UAAU,EACV;YACE,MAAM,EAAE,MAAM,CAAC;YACf,OAAO,EAAE;gBACP,KAAK,EAAE,MAAM,CAAC;gBACd,SAAS,CAAC,EAAE,MAAM,CAAC;gBACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAClB,MAAM,CAAC,EAAE,MAAM,CAAC;gBAChB,UAAU,CAAC,EAAE,OAAO,CAAC;gBACrB,SAAS,CAAC,EAAE,MAAM,CAAC;gBACnB,MAAM,CAAC,EAAE,MAAM,CAAC;aACjB,CAAC;SACH,EACD;YAAE,EAAE,CAAC,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAA;SAAE,EACjC,IAAI,CACL,CAAC;QACF,mBAAmB,EAAE,iBAAiB,CACpC,QAAQ,EACR,UAAU,EACV;YACE,MAAM,EAAE,MAAM,CAAC;YACf,QAAQ,EAAE,KAAK,CAAC;gBACd,KAAK,EAAE,MAAM,CAAC;gBACd,SAAS,CAAC,EAAE,MAAM,CAAC;gBACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAClB,MAAM,CAAC,EAAE,MAAM,CAAC;gBAChB,UAAU,CAAC,EAAE,OAAO,CAAC;gBACrB,SAAS,CAAC,EAAE,MAAM,CAAC;gBACnB,MAAM,CAAC,EAAE,MAAM,CAAC;aACjB,CAAC,CAAC;SACJ,EACD;YACE,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,OAAO,CAAC,EAAE,KAAK,CAAC;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,CAAC;gBAAC,OAAO,EAAE,OAAO,CAAA;aAAE,CAAC,CAAC;YACrE,OAAO,EAAE,OAAO,CAAC;SAClB,EACD,IAAI,CACL,CAAC;QACF,mBAAmB,EAAE,iBAAiB,CACpC,OAAO,EACP,UAAU,EACV;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,EAC5D;YACE,OAAO,EAAE,OAAO,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,YAAY,EAAE,MAAM,CAAC;SACtB,EACD,IAAI,CACL,CAAC;QACF,oBAAoB,EAAE,iBAAiB,CACrC,OAAO,EACP,UAAU,EACV;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,EAC3C;YACE,OAAO,EAAE,OAAO,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;YACd,YAAY,EAAE,MAAM,CAAC;SACtB,EACD,IAAI,CACL,CAAC;QACF,uBAAuB,EAAE,iBAAiB,CACxC,OAAO,EACP,UAAU,EACV;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,EAC1D;YACE,OAAO,EAAE,OAAO,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,YAAY,EAAE,MAAM,CAAC;SACtB,EACD,IAAI,CACL,CAAC;QACF,aAAa,EAAE,iBAAiB,CAC9B,OAAO,EACP,UAAU,EACV;YAAE,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,OAAO,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,EAC7D,MAAM,EACN,IAAI,CACL,CAAC;QACF,aAAa,EAAE,iBAAiB,CAC9B,QAAQ,EACR,UAAU,EACV;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EACjC;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,EACpB,IAAI,CACL,CAAC;QACF,eAAe,EAAE,iBAAiB,CAChC,OAAO,EACP,UAAU,EACV;YAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,EACrD,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,CAAC,EAC/D,IAAI,CACL,CAAC;QACF,uBAAuB,EAAE,iBAAiB,CACxC,OAAO,EACP,UAAU,EACV;YAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,EACrD,KAAK,CAAC;YACJ,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,cAAc,EAAE,MAAM,CAAC;YACvB,aAAa,EAAE,MAAM,CAAC;YACtB,YAAY,EAAE,MAAM,CAAC;SACtB,CAAC,EACF,IAAI,CACL,CAAC;QACF,mBAAmB,EAAE,iBAAiB,CACpC,OAAO,EACP,UAAU,EACV;YAAE,qBAAqB,CAAC,EAAE,MAAM,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,EACzD,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,CAAC,EAC7D,IAAI,CACL,CAAC;QACF,WAAW,EAAE,iBAAiB,CAC5B,QAAQ,EACR,UAAU,EACV;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EACjC;YACE,OAAO,CAAC,EAAE;gBACR,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;gBAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;gBACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;gBAC1B,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;gBACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;gBACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;gBACvB,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;gBAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;gBAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;aACxB,CAAC;YACF,OAAO,EAAE,OAAO,CAAC;SAClB,EACD,IAAI,CACL,CAAC;QACF,aAAa,EAAE,iBAAiB,CAC9B,OAAO,EACP,UAAU,EACV;YAAE,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,EACzB;YACE,gBAAgB,EAAE,MAAM,CAAC;YACzB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACzC,oBAAoB,EAAE,MAAM,CAAC;YAC7B,eAAe,EAAE,MAAM,CAAC;YACxB,YAAY,EAAE,MAAM,CAAC;YACrB,gBAAgB,EAAE,MAAM,CAAC;SAC1B,EACD,IAAI,CACL,CAAC;QACF,YAAY,EAAE,iBAAiB,CAC7B,OAAO,EACP,UAAU,EACV;YACE,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,UAAU,CAAC,EAAE,OAAO,CAAC;YACrB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,EACD;YACE,QAAQ,EAAE,KAAK,CAAC;gBACd,GAAG,EAAE,MAAM,CAAC;gBACZ,SAAS,EAAE,MAAM,CAAC;gBAClB,KAAK,EAAE,MAAM,CAAC;gBACd,SAAS,CAAC,EAAE,MAAM,CAAC;gBACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAClB,cAAc,CAAC,EAAE,MAAM,CAAC;gBACxB,MAAM,CAAC,EAAE,MAAM,CAAC;gBAChB,UAAU,EAAE,OAAO,CAAC;gBACpB,SAAS,EAAE,MAAM,CAAC;gBAClB,SAAS,CAAC,EAAE,MAAM,CAAC;gBACnB,MAAM,CAAC,EAAE,MAAM,CAAC;aACjB,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;YACf,KAAK,EAAE,MAAM,CAAC;SACf,EACD,IAAI,CACL,CAAC;QACF,iBAAiB,EAAE,iBAAiB,CAClC,UAAU,EACV,UAAU,EACV;YACE,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,KAAK,EAAE,MAAM,CAAC;YACd,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC/B,aAAa,EAAE,eAAe,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;YAC/D,OAAO,EAAE,OAAO,CAAC;YACjB,eAAe,CAAC,EAAE,MAAM,CAAC;SAC1B,EACD,GAAG,EACH,IAAI,CACL,CAAC;QACF,aAAa,EAAE,iBAAiB,CAC9B,UAAU,EACV,UAAU,EACV;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,EACjB,GAAG,EACH,IAAI,CACL,CAAC;QACF,kBAAkB,EAAE,iBAAiB,CACnC,QAAQ,EACR,UAAU,EACV;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EACjC;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,EACpB,IAAI,CACL,CAAC;QACF,SAAS,EAAE,iBAAiB,CAC1B,QAAQ,EACR,UAAU,EACV;YACE,MAAM,EAAE,MAAM,CAAC;YACf,KAAK,EAAE,MAAM,CAAC;YACd,SAAS,EAAE,MAAM,CAAC;YAClB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;SACvC,EACD;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,EACpB,IAAI,CACL,CAAC;QACF,iBAAiB,EAAE,iBAAiB,CAClC,QAAQ,EACR,UAAU,EACV;YACE,MAAM,EAAE,MAAM,CAAC;YACf,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACpC,KAAK,EAAE,MAAM,CAAC;YACd,eAAe,EAAE,MAAM,CAAC;SACzB,EACD;YAAE,SAAS,CAAC,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAA;SAAE,EACxC,IAAI,CACL,CAAC;QACF,YAAY,EAAE,iBAAiB,CAC7B,UAAU,EACV,UAAU,EACV;YACE,KAAK,EAAE,MAAM,CAAC;YACd,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,UAAU,CAAC,EAAE,OAAO,CAAC;YACrB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,EACD,GAAG,EACH,IAAI,CACL,CAAC;QACF,WAAW,EAAE,iBAAiB,CAC5B,QAAQ,EACR,UAAU,EACV;YACE,MAAM,EAAE,MAAM,CAAC;YACf,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACpC,KAAK,EAAE,MAAM,CAAC;YACd,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,MAAM,EAAE,MAAM,CAAC;SAChB,EACD;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,EACtC,IAAI,CACL,CAAC;QACF,kBAAkB,EAAE,iBAAiB,CACnC,QAAQ,EACR,UAAU,EACV;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EACjC;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,EACpB,IAAI,CACL,CAAC;QACF,aAAa,EAAE,iBAAiB,CAC9B,QAAQ,EACR,UAAU,EACV;YACE,MAAM,EAAE,MAAM,CAAC;YACf,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACpC,KAAK,EAAE,MAAM,CAAC;YACd,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,UAAU,CAAC,EAAE,OAAO,CAAC;YACrB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,EACD;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,EACpB,IAAI,CACL,CAAC;KACH,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/component/_generated/component.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ export type Doc<TableName extends TableNames> = DocumentByName<DataModel, TableN
25
25
  * Convex documents are uniquely identified by their `Id`, which is accessible
26
26
  * on the `_id` field. To learn more, see [Document IDs](https://docs.convex.dev/using/document-ids).
27
27
  *
28
- * Documents can be loaded using `db.get(tableName, id)` in query and mutation functions.
28
+ * Documents can be loaded using `db.get(id)` in query and mutation functions.
29
29
  *
30
30
  * IDs are just strings at runtime, but this type can be used to distinguish them from other
31
31
  * strings when type checking.
@@ -0,0 +1,42 @@
1
+ import { TableAggregate } from "@convex-dev/aggregate";
2
+ import type { GenericMutationCtx, GenericQueryCtx } from "convex/server";
3
+ import type { DataModel, Doc } from "./_generated/dataModel";
4
+ /**
5
+ * Aggregate for counting contacts.
6
+ * Uses userGroup as namespace for efficient filtered counting.
7
+ * Key is null since we only need counts, not ordering.
8
+ */
9
+ export declare const contactAggregate: TableAggregate<{
10
+ Namespace: string | undefined;
11
+ Key: null;
12
+ DataModel: DataModel;
13
+ TableName: "contacts";
14
+ }>;
15
+ type MutationCtx = GenericMutationCtx<DataModel>;
16
+ type QueryCtx = GenericQueryCtx<DataModel>;
17
+ /**
18
+ * Insert a contact into the aggregate
19
+ */
20
+ export declare function aggregateInsert(ctx: MutationCtx, doc: Doc<"contacts">): Promise<void>;
21
+ /**
22
+ * Delete a contact from the aggregate
23
+ */
24
+ export declare function aggregateDelete(ctx: MutationCtx, doc: Doc<"contacts">): Promise<void>;
25
+ /**
26
+ * Replace a contact in the aggregate (when userGroup changes)
27
+ */
28
+ export declare function aggregateReplace(ctx: MutationCtx, oldDoc: Doc<"contacts">, newDoc: Doc<"contacts">): Promise<void>;
29
+ /**
30
+ * Count contacts by userGroup namespace
31
+ */
32
+ export declare function aggregateCountByUserGroup(ctx: QueryCtx, userGroup: string | undefined): Promise<number>;
33
+ /**
34
+ * Count all contacts across all userGroups
35
+ */
36
+ export declare function aggregateCountTotal(ctx: QueryCtx): Promise<number>;
37
+ /**
38
+ * Clear and reinitialize the aggregate (for backfill)
39
+ */
40
+ export declare function aggregateClear(ctx: MutationCtx, namespace?: string): Promise<void>;
41
+ export {};
42
+ //# sourceMappingURL=aggregates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregates.d.ts","sourceRoot":"","sources":["../../src/component/aggregates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAO7D;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;eACjB,MAAM,GAAG,SAAS;SACxB,IAAI;eACE,SAAS;eACT,UAAU;EAIpB,CAAC;AAEH,KAAK,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;AACjD,KAAK,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;AAE3C;;GAEG;AACH,wBAAsB,eAAe,CACpC,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,GAClB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;GAEG;AACH,wBAAsB,eAAe,CACpC,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,GAClB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACrC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,EACvB,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,GACrB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC9C,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAMxE;AAED;;GAEG;AACH,wBAAsB,cAAc,CACnC,GAAG,EAAE,WAAW,EAChB,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -0,0 +1,54 @@
1
+ import { TableAggregate } from "@convex-dev/aggregate";
2
+ import { components } from "./_generated/api";
3
+ // Cast components to the expected type for the aggregate library
4
+ // biome-ignore lint/suspicious/noExplicitAny: Component API type mismatch with aggregate library
5
+ const contactAggregateComponent = components.contactAggregate;
6
+ /**
7
+ * Aggregate for counting contacts.
8
+ * Uses userGroup as namespace for efficient filtered counting.
9
+ * Key is null since we only need counts, not ordering.
10
+ */
11
+ export const contactAggregate = new TableAggregate(contactAggregateComponent, {
12
+ namespace: (doc) => doc.userGroup,
13
+ sortKey: () => null,
14
+ });
15
+ /**
16
+ * Insert a contact into the aggregate
17
+ */
18
+ export async function aggregateInsert(ctx, doc) {
19
+ await contactAggregate.insertIfDoesNotExist(ctx, doc);
20
+ }
21
+ /**
22
+ * Delete a contact from the aggregate
23
+ */
24
+ export async function aggregateDelete(ctx, doc) {
25
+ await contactAggregate.deleteIfExists(ctx, doc);
26
+ }
27
+ /**
28
+ * Replace a contact in the aggregate (when userGroup changes)
29
+ */
30
+ export async function aggregateReplace(ctx, oldDoc, newDoc) {
31
+ await contactAggregate.replaceOrInsert(ctx, oldDoc, newDoc);
32
+ }
33
+ /**
34
+ * Count contacts by userGroup namespace
35
+ */
36
+ export async function aggregateCountByUserGroup(ctx, userGroup) {
37
+ return await contactAggregate.count(ctx, { namespace: userGroup });
38
+ }
39
+ /**
40
+ * Count all contacts across all userGroups
41
+ */
42
+ export async function aggregateCountTotal(ctx) {
43
+ let total = 0;
44
+ for await (const namespace of contactAggregate.iterNamespaces(ctx)) {
45
+ total += await contactAggregate.count(ctx, { namespace });
46
+ }
47
+ return total;
48
+ }
49
+ /**
50
+ * Clear and reinitialize the aggregate (for backfill)
51
+ */
52
+ export async function aggregateClear(ctx, namespace) {
53
+ await contactAggregate.clear(ctx, { namespace });
54
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"convex.config.d.ts","sourceRoot":"","sources":["../../src/component/convex.config.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,SAAS,kDAA2B,CAAC;AAE3C,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"convex.config.d.ts","sourceRoot":"","sources":["../../src/component/convex.config.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,SAAS,kDAA2B,CAAC;AAI3C,eAAe,SAAS,CAAC"}
@@ -1,3 +1,5 @@
1
+ import aggregate from "@convex-dev/aggregate/convex.config";
1
2
  import { defineComponent } from "convex/server";
2
3
  const component = defineComponent("loops");
4
+ component.use(aggregate, { name: "contactAggregate" });
3
5
  export default component;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/component/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAWjD,eAAO,MAAM,kBAAkB,gCAAgC,CAAC;AAEhE,eAAO,MAAM,kBAAkB,GAC9B,QAAQ,MAAM,EACd,YAAY,MAAM,KAChB,KAcF,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG;IAC1D,IAAI,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,UAAU,GACtB,QAAQ,MAAM,EACd,MAAM,MAAM,EACZ,OAAM,gBAAqB,sBAe3B,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,QAAQ,gBAAgB,YAQxD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,MAAM,OAAO,EAAE,OAAO,YAAY,aAM9D,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,YAAY,aAKhD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,CAAC,EAAE,SAAS,OAAO,KAAG,OAAO,CAAC,CAAC,CAMjE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,GAAG,IAAI,wBAWpD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,GAAG,IAAI,EAAE,UAAU,MAAM,WAMrE,CAAC;AAEF,eAAO,MAAM,kBAAkB,cAQ9B,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,OAAO,OAAO,aAS1C,CAAC"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/component/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAWjD,eAAO,MAAM,kBAAkB,gCAAgC,CAAC;AAEhE,eAAO,MAAM,kBAAkB,WACtB,MAAM,cACF,MAAM,KAChB,KAcF,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG;IAC1D,IAAI,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,UAAU,WACd,MAAM,QACR,MAAM,SACN,gBAAgB,sBAetB,CAAC;AAEF,eAAO,MAAM,gBAAgB,WAAY,gBAAgB,YAQxD,CAAC;AAEF,eAAO,MAAM,YAAY,SAAU,OAAO,SAAS,YAAY,aAM9D,CAAC;AAEF,eAAO,MAAM,aAAa,UAAW,YAAY,aAKhD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,CAAC,WAAW,OAAO,KAAG,OAAO,CAAC,CAAC,CAMjE,CAAC;AAEF,eAAO,MAAM,gBAAgB,UAAW,MAAM,GAAG,IAAI,wBAWpD,CAAC;AAEF,eAAO,MAAM,eAAe,UAAW,MAAM,GAAG,IAAI,YAAY,MAAM,WAMrE,CAAC;AAEF,eAAO,MAAM,kBAAkB,cAQ9B,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,OAAO,aAS1C,CAAC"}