@primocaredentgroup/chat-backend-component 0.1.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 (38) hide show
  1. package/README.md +48 -0
  2. package/dist/client/index.d.ts +55 -0
  3. package/dist/client/index.js +79 -0
  4. package/dist/client/index.js.map +1 -0
  5. package/dist/component/_generated/api.d.ts +33 -0
  6. package/dist/component/_generated/api.js +31 -0
  7. package/dist/component/_generated/api.js.map +1 -0
  8. package/dist/component/_generated/component.d.ts +107 -0
  9. package/dist/component/_generated/component.js +11 -0
  10. package/dist/component/_generated/component.js.map +1 -0
  11. package/dist/component/_generated/dataModel.d.ts +45 -0
  12. package/dist/component/_generated/dataModel.js +11 -0
  13. package/dist/component/_generated/dataModel.js.map +1 -0
  14. package/dist/component/_generated/server.d.ts +120 -0
  15. package/dist/component/_generated/server.js +78 -0
  16. package/dist/component/_generated/server.js.map +1 -0
  17. package/dist/component/convex.config.d.ts +2 -0
  18. package/dist/component/convex.config.js +3 -0
  19. package/dist/component/convex.config.js.map +1 -0
  20. package/dist/component/lib.d.ts +158 -0
  21. package/dist/component/lib.js +348 -0
  22. package/dist/component/lib.js.map +1 -0
  23. package/dist/component/schema.d.ts +65 -0
  24. package/dist/component/schema.js +43 -0
  25. package/dist/component/schema.js.map +1 -0
  26. package/dist/index.d.ts +1 -0
  27. package/dist/index.js +2 -0
  28. package/dist/index.js.map +1 -0
  29. package/package.json +54 -0
  30. package/src/client/index.ts +98 -0
  31. package/src/component/_generated/api.ts +50 -0
  32. package/src/component/_generated/component.ts +179 -0
  33. package/src/component/_generated/dataModel.ts +60 -0
  34. package/src/component/_generated/server.ts +156 -0
  35. package/src/component/convex.config.ts +3 -0
  36. package/src/component/lib.ts +399 -0
  37. package/src/component/schema.ts +45 -0
  38. package/src/index.ts +1 -0
@@ -0,0 +1,158 @@
1
+ /**
2
+ * CHANNEL CRUD
3
+ */
4
+ export declare const createChannel: import("convex/server").RegisteredMutation<"public", {
5
+ metadata?: any;
6
+ externalId: string;
7
+ name: string;
8
+ }, Promise<import("convex/values").GenericId<"channels">>>;
9
+ /**
10
+ * Ensure channel exists for external ID (e.g. patientId),
11
+ * and auto-create "General" subchannel on first creation.
12
+ */
13
+ export declare const getOrCreateChannel: import("convex/server").RegisteredMutation<"public", {
14
+ metadata?: any;
15
+ externalId: string;
16
+ name: string;
17
+ }, Promise<import("convex/values").GenericId<"channels">>>;
18
+ export declare const getChannel: import("convex/server").RegisteredQuery<"public", {
19
+ channelId: import("convex/values").GenericId<"channels">;
20
+ }, Promise<{
21
+ _id: import("convex/values").GenericId<"channels">;
22
+ _creationTime: number;
23
+ metadata?: any;
24
+ archived: boolean;
25
+ externalId: string;
26
+ name: string;
27
+ createdAt: number;
28
+ updatedAt: number;
29
+ } | null>>;
30
+ export declare const listChannels: import("convex/server").RegisteredQuery<"public", {
31
+ includeArchived?: boolean | undefined;
32
+ }, Promise<{
33
+ _id: import("convex/values").GenericId<"channels">;
34
+ _creationTime: number;
35
+ metadata?: any;
36
+ archived: boolean;
37
+ externalId: string;
38
+ name: string;
39
+ createdAt: number;
40
+ updatedAt: number;
41
+ }[]>>;
42
+ export declare const updateChannel: import("convex/server").RegisteredMutation<"public", {
43
+ metadata?: any;
44
+ name?: string | undefined;
45
+ channelId: import("convex/values").GenericId<"channels">;
46
+ }, Promise<null>>;
47
+ export declare const archiveChannel: import("convex/server").RegisteredMutation<"public", {
48
+ archived?: boolean | undefined;
49
+ channelId: import("convex/values").GenericId<"channels">;
50
+ }, Promise<null>>;
51
+ export declare const deleteChannel: import("convex/server").RegisteredMutation<"public", {
52
+ channelId: import("convex/values").GenericId<"channels">;
53
+ }, Promise<null>>;
54
+ /**
55
+ * SUBCHANNEL CRUD
56
+ */
57
+ export declare const createSubchannel: import("convex/server").RegisteredMutation<"public", {
58
+ metadata?: any;
59
+ externalReferenceId?: string | undefined;
60
+ kind?: "general" | "custom" | undefined;
61
+ channelId: import("convex/values").GenericId<"channels">;
62
+ name: string;
63
+ }, Promise<import("convex/values").GenericId<"subchannels">>>;
64
+ export declare const getOrCreateSubchannel: import("convex/server").RegisteredMutation<"public", {
65
+ metadata?: any;
66
+ kind?: "general" | "custom" | undefined;
67
+ channelId: import("convex/values").GenericId<"channels">;
68
+ name: string;
69
+ externalReferenceId: string;
70
+ }, Promise<import("convex/values").GenericId<"subchannels">>>;
71
+ export declare const getSubchannel: import("convex/server").RegisteredQuery<"public", {
72
+ subchannelId: import("convex/values").GenericId<"subchannels">;
73
+ }, Promise<{
74
+ _id: import("convex/values").GenericId<"subchannels">;
75
+ _creationTime: number;
76
+ metadata?: any;
77
+ externalReferenceId?: string | undefined;
78
+ archived: boolean;
79
+ channelId: import("convex/values").GenericId<"channels">;
80
+ name: string;
81
+ kind: "general" | "custom";
82
+ createdAt: number;
83
+ updatedAt: number;
84
+ } | null>>;
85
+ export declare const listSubchannels: import("convex/server").RegisteredQuery<"public", {
86
+ includeArchived?: boolean | undefined;
87
+ channelId: import("convex/values").GenericId<"channels">;
88
+ }, Promise<{
89
+ _id: import("convex/values").GenericId<"subchannels">;
90
+ _creationTime: number;
91
+ metadata?: any;
92
+ externalReferenceId?: string | undefined;
93
+ archived: boolean;
94
+ channelId: import("convex/values").GenericId<"channels">;
95
+ name: string;
96
+ kind: "general" | "custom";
97
+ createdAt: number;
98
+ updatedAt: number;
99
+ }[]>>;
100
+ export declare const updateSubchannel: import("convex/server").RegisteredMutation<"public", {
101
+ metadata?: any;
102
+ name?: string | undefined;
103
+ subchannelId: import("convex/values").GenericId<"subchannels">;
104
+ }, Promise<null>>;
105
+ export declare const archiveSubchannel: import("convex/server").RegisteredMutation<"public", {
106
+ archived?: boolean | undefined;
107
+ subchannelId: import("convex/values").GenericId<"subchannels">;
108
+ }, Promise<null>>;
109
+ export declare const deleteSubchannel: import("convex/server").RegisteredMutation<"public", {
110
+ subchannelId: import("convex/values").GenericId<"subchannels">;
111
+ }, Promise<null>>;
112
+ /**
113
+ * MESSAGE CRUD
114
+ */
115
+ export declare const sendMessage: import("convex/server").RegisteredMutation<"public", {
116
+ metadata?: any;
117
+ authorName?: string | undefined;
118
+ subchannelId: import("convex/values").GenericId<"subchannels">;
119
+ authorId: string;
120
+ body: string;
121
+ }, Promise<import("convex/values").GenericId<"messages">>>;
122
+ export declare const getMessage: import("convex/server").RegisteredQuery<"public", {
123
+ messageId: import("convex/values").GenericId<"messages">;
124
+ }, Promise<{
125
+ _id: import("convex/values").GenericId<"messages">;
126
+ _creationTime: number;
127
+ metadata?: any;
128
+ authorName?: string | undefined;
129
+ channelId: import("convex/values").GenericId<"channels">;
130
+ subchannelId: import("convex/values").GenericId<"subchannels">;
131
+ authorId: string;
132
+ body: string;
133
+ createdAt: number;
134
+ updatedAt: number;
135
+ } | null>>;
136
+ export declare const listMessages: import("convex/server").RegisteredQuery<"public", {
137
+ limit?: number | undefined;
138
+ subchannelId: import("convex/values").GenericId<"subchannels">;
139
+ }, Promise<{
140
+ _id: import("convex/values").GenericId<"messages">;
141
+ _creationTime: number;
142
+ metadata?: any;
143
+ authorName?: string | undefined;
144
+ channelId: import("convex/values").GenericId<"channels">;
145
+ subchannelId: import("convex/values").GenericId<"subchannels">;
146
+ authorId: string;
147
+ body: string;
148
+ createdAt: number;
149
+ updatedAt: number;
150
+ }[]>>;
151
+ export declare const updateMessage: import("convex/server").RegisteredMutation<"public", {
152
+ metadata?: any;
153
+ messageId: import("convex/values").GenericId<"messages">;
154
+ body: string;
155
+ }, Promise<null>>;
156
+ export declare const deleteMessage: import("convex/server").RegisteredMutation<"public", {
157
+ messageId: import("convex/values").GenericId<"messages">;
158
+ }, Promise<null>>;
@@ -0,0 +1,348 @@
1
+ import { v } from 'convex/values';
2
+ import { mutation, query } from './_generated/server.js';
3
+ const channelKindValidator = v.union(v.literal('general'), v.literal('custom'));
4
+ /**
5
+ * CHANNEL CRUD
6
+ */
7
+ export const createChannel = mutation({
8
+ args: {
9
+ externalId: v.string(),
10
+ name: v.string(),
11
+ metadata: v.optional(v.any())
12
+ },
13
+ returns: v.id('channels'),
14
+ handler: async (ctx, args) => {
15
+ const now = Date.now();
16
+ return await ctx.db.insert('channels', {
17
+ externalId: args.externalId,
18
+ name: args.name,
19
+ archived: false,
20
+ metadata: args.metadata,
21
+ createdAt: now,
22
+ updatedAt: now
23
+ });
24
+ }
25
+ });
26
+ /**
27
+ * Ensure channel exists for external ID (e.g. patientId),
28
+ * and auto-create "General" subchannel on first creation.
29
+ */
30
+ export const getOrCreateChannel = mutation({
31
+ args: {
32
+ externalId: v.string(),
33
+ name: v.string(),
34
+ metadata: v.optional(v.any())
35
+ },
36
+ returns: v.id('channels'),
37
+ handler: async (ctx, args) => {
38
+ const existing = await ctx.db
39
+ .query('channels')
40
+ .withIndex('by_external_id', (q) => q.eq('externalId', args.externalId))
41
+ .first();
42
+ if (existing) {
43
+ if (existing.archived || existing.name !== args.name) {
44
+ await ctx.db.patch(existing._id, {
45
+ archived: false,
46
+ name: args.name,
47
+ metadata: args.metadata,
48
+ updatedAt: Date.now()
49
+ });
50
+ }
51
+ return existing._id;
52
+ }
53
+ const now = Date.now();
54
+ const channelId = await ctx.db.insert('channels', {
55
+ externalId: args.externalId,
56
+ name: args.name,
57
+ archived: false,
58
+ metadata: args.metadata,
59
+ createdAt: now,
60
+ updatedAt: now
61
+ });
62
+ await ctx.db.insert('subchannels', {
63
+ channelId,
64
+ name: 'Generale',
65
+ kind: 'general',
66
+ archived: false,
67
+ createdAt: now,
68
+ updatedAt: now
69
+ });
70
+ return channelId;
71
+ }
72
+ });
73
+ export const getChannel = query({
74
+ args: { channelId: v.id('channels') },
75
+ handler: async (ctx, args) => await ctx.db.get(args.channelId)
76
+ });
77
+ export const listChannels = query({
78
+ args: { includeArchived: v.optional(v.boolean()) },
79
+ handler: async (ctx, args) => {
80
+ const channels = await ctx.db.query('channels').collect();
81
+ if (args.includeArchived)
82
+ return channels;
83
+ return channels.filter((channel) => !channel.archived);
84
+ }
85
+ });
86
+ export const updateChannel = mutation({
87
+ args: {
88
+ channelId: v.id('channels'),
89
+ name: v.optional(v.string()),
90
+ metadata: v.optional(v.any())
91
+ },
92
+ returns: v.null(),
93
+ handler: async (ctx, args) => {
94
+ const patch = { updatedAt: Date.now() };
95
+ if (args.name !== undefined)
96
+ patch.name = args.name;
97
+ if (args.metadata !== undefined)
98
+ patch.metadata = args.metadata;
99
+ await ctx.db.patch(args.channelId, patch);
100
+ return null;
101
+ }
102
+ });
103
+ export const archiveChannel = mutation({
104
+ args: {
105
+ channelId: v.id('channels'),
106
+ archived: v.optional(v.boolean())
107
+ },
108
+ returns: v.null(),
109
+ handler: async (ctx, args) => {
110
+ const archived = args.archived ?? true;
111
+ const now = Date.now();
112
+ await ctx.db.patch(args.channelId, { archived, updatedAt: now });
113
+ const subchannels = await ctx.db
114
+ .query('subchannels')
115
+ .withIndex('by_channel', (q) => q.eq('channelId', args.channelId))
116
+ .collect();
117
+ await Promise.all(subchannels.map((subchannel) => ctx.db.patch(subchannel._id, { archived, updatedAt: now })));
118
+ return null;
119
+ }
120
+ });
121
+ export const deleteChannel = mutation({
122
+ args: { channelId: v.id('channels') },
123
+ returns: v.null(),
124
+ handler: async (ctx, args) => {
125
+ const subchannels = await ctx.db
126
+ .query('subchannels')
127
+ .withIndex('by_channel', (q) => q.eq('channelId', args.channelId))
128
+ .collect();
129
+ for (const subchannel of subchannels) {
130
+ const messages = await ctx.db
131
+ .query('messages')
132
+ .withIndex('by_subchannel_and_time', (q) => q.eq('subchannelId', subchannel._id))
133
+ .collect();
134
+ for (const message of messages) {
135
+ await ctx.db.delete(message._id);
136
+ }
137
+ await ctx.db.delete(subchannel._id);
138
+ }
139
+ await ctx.db.delete(args.channelId);
140
+ return null;
141
+ }
142
+ });
143
+ /**
144
+ * SUBCHANNEL CRUD
145
+ */
146
+ export const createSubchannel = mutation({
147
+ args: {
148
+ channelId: v.id('channels'),
149
+ name: v.string(),
150
+ kind: v.optional(channelKindValidator),
151
+ externalReferenceId: v.optional(v.string()),
152
+ metadata: v.optional(v.any())
153
+ },
154
+ returns: v.id('subchannels'),
155
+ handler: async (ctx, args) => {
156
+ const channel = await ctx.db.get(args.channelId);
157
+ if (!channel) {
158
+ throw new Error('Channel not found');
159
+ }
160
+ const now = Date.now();
161
+ return await ctx.db.insert('subchannels', {
162
+ channelId: args.channelId,
163
+ name: args.name,
164
+ kind: args.kind ?? 'custom',
165
+ externalReferenceId: args.externalReferenceId,
166
+ metadata: args.metadata,
167
+ archived: false,
168
+ createdAt: now,
169
+ updatedAt: now
170
+ });
171
+ }
172
+ });
173
+ export const getOrCreateSubchannel = mutation({
174
+ args: {
175
+ channelId: v.id('channels'),
176
+ name: v.string(),
177
+ kind: v.optional(channelKindValidator),
178
+ externalReferenceId: v.string(),
179
+ metadata: v.optional(v.any())
180
+ },
181
+ returns: v.id('subchannels'),
182
+ handler: async (ctx, args) => {
183
+ const existing = await ctx.db
184
+ .query('subchannels')
185
+ .withIndex('by_channel_and_external_reference', (q) => q
186
+ .eq('channelId', args.channelId)
187
+ .eq('externalReferenceId', args.externalReferenceId))
188
+ .first();
189
+ if (existing) {
190
+ return existing._id;
191
+ }
192
+ const now = Date.now();
193
+ return await ctx.db.insert('subchannels', {
194
+ channelId: args.channelId,
195
+ name: args.name,
196
+ kind: args.kind ?? 'custom',
197
+ externalReferenceId: args.externalReferenceId,
198
+ metadata: args.metadata,
199
+ archived: false,
200
+ createdAt: now,
201
+ updatedAt: now
202
+ });
203
+ }
204
+ });
205
+ export const getSubchannel = query({
206
+ args: { subchannelId: v.id('subchannels') },
207
+ handler: async (ctx, args) => await ctx.db.get(args.subchannelId)
208
+ });
209
+ export const listSubchannels = query({
210
+ args: {
211
+ channelId: v.id('channels'),
212
+ includeArchived: v.optional(v.boolean())
213
+ },
214
+ handler: async (ctx, args) => {
215
+ const subchannels = await ctx.db
216
+ .query('subchannels')
217
+ .withIndex('by_channel', (q) => q.eq('channelId', args.channelId))
218
+ .collect();
219
+ const visible = args.includeArchived
220
+ ? subchannels
221
+ : subchannels.filter((subchannel) => !subchannel.archived);
222
+ return visible.sort((a, b) => {
223
+ if (a.kind === 'general' && b.kind !== 'general')
224
+ return -1;
225
+ if (a.kind !== 'general' && b.kind === 'general')
226
+ return 1;
227
+ return a.createdAt - b.createdAt;
228
+ });
229
+ }
230
+ });
231
+ export const updateSubchannel = mutation({
232
+ args: {
233
+ subchannelId: v.id('subchannels'),
234
+ name: v.optional(v.string()),
235
+ metadata: v.optional(v.any())
236
+ },
237
+ returns: v.null(),
238
+ handler: async (ctx, args) => {
239
+ const patch = { updatedAt: Date.now() };
240
+ if (args.name !== undefined)
241
+ patch.name = args.name;
242
+ if (args.metadata !== undefined)
243
+ patch.metadata = args.metadata;
244
+ await ctx.db.patch(args.subchannelId, patch);
245
+ return null;
246
+ }
247
+ });
248
+ export const archiveSubchannel = mutation({
249
+ args: {
250
+ subchannelId: v.id('subchannels'),
251
+ archived: v.optional(v.boolean())
252
+ },
253
+ returns: v.null(),
254
+ handler: async (ctx, args) => {
255
+ await ctx.db.patch(args.subchannelId, {
256
+ archived: args.archived ?? true,
257
+ updatedAt: Date.now()
258
+ });
259
+ return null;
260
+ }
261
+ });
262
+ export const deleteSubchannel = mutation({
263
+ args: { subchannelId: v.id('subchannels') },
264
+ returns: v.null(),
265
+ handler: async (ctx, args) => {
266
+ const messages = await ctx.db
267
+ .query('messages')
268
+ .withIndex('by_subchannel_and_time', (q) => q.eq('subchannelId', args.subchannelId))
269
+ .collect();
270
+ for (const message of messages) {
271
+ await ctx.db.delete(message._id);
272
+ }
273
+ await ctx.db.delete(args.subchannelId);
274
+ return null;
275
+ }
276
+ });
277
+ /**
278
+ * MESSAGE CRUD
279
+ */
280
+ export const sendMessage = mutation({
281
+ args: {
282
+ subchannelId: v.id('subchannels'),
283
+ authorId: v.string(),
284
+ authorName: v.optional(v.string()),
285
+ body: v.string(),
286
+ metadata: v.optional(v.any())
287
+ },
288
+ returns: v.id('messages'),
289
+ handler: async (ctx, args) => {
290
+ const subchannel = await ctx.db.get(args.subchannelId);
291
+ if (!subchannel) {
292
+ throw new Error('Subchannel not found');
293
+ }
294
+ const now = Date.now();
295
+ return await ctx.db.insert('messages', {
296
+ channelId: subchannel.channelId,
297
+ subchannelId: args.subchannelId,
298
+ authorId: args.authorId,
299
+ authorName: args.authorName,
300
+ body: args.body,
301
+ metadata: args.metadata,
302
+ createdAt: now,
303
+ updatedAt: now
304
+ });
305
+ }
306
+ });
307
+ export const getMessage = query({
308
+ args: { messageId: v.id('messages') },
309
+ handler: async (ctx, args) => await ctx.db.get(args.messageId)
310
+ });
311
+ export const listMessages = query({
312
+ args: {
313
+ subchannelId: v.id('subchannels'),
314
+ limit: v.optional(v.number())
315
+ },
316
+ handler: async (ctx, args) => {
317
+ return await ctx.db
318
+ .query('messages')
319
+ .withIndex('by_subchannel_and_time', (q) => q.eq('subchannelId', args.subchannelId))
320
+ .order('asc')
321
+ .take(args.limit ?? 200);
322
+ }
323
+ });
324
+ export const updateMessage = mutation({
325
+ args: {
326
+ messageId: v.id('messages'),
327
+ body: v.string(),
328
+ metadata: v.optional(v.any())
329
+ },
330
+ returns: v.null(),
331
+ handler: async (ctx, args) => {
332
+ await ctx.db.patch(args.messageId, {
333
+ body: args.body,
334
+ metadata: args.metadata,
335
+ updatedAt: Date.now()
336
+ });
337
+ return null;
338
+ }
339
+ });
340
+ export const deleteMessage = mutation({
341
+ args: { messageId: v.id('messages') },
342
+ returns: v.null(),
343
+ handler: async (ctx, args) => {
344
+ await ctx.db.delete(args.messageId);
345
+ return null;
346
+ }
347
+ });
348
+ //# sourceMappingURL=lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/component/lib.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ declare const _default: import("convex/server").SchemaDefinition<{
2
+ channels: import("convex/server").TableDefinition<import("convex/values").VObject<{
3
+ metadata?: any;
4
+ archived: boolean;
5
+ externalId: string;
6
+ name: string;
7
+ createdAt: number;
8
+ updatedAt: number;
9
+ }, {
10
+ externalId: import("convex/values").VString<string, "required">;
11
+ name: import("convex/values").VString<string, "required">;
12
+ archived: import("convex/values").VBoolean<boolean, "required">;
13
+ metadata: import("convex/values").VAny<any, "optional", string>;
14
+ createdAt: import("convex/values").VFloat64<number, "required">;
15
+ updatedAt: import("convex/values").VFloat64<number, "required">;
16
+ }, "required", "archived" | "externalId" | "metadata" | "name" | "createdAt" | "updatedAt" | `metadata.${string}`>, {
17
+ by_external_id: ["externalId", "_creationTime"];
18
+ by_archived: ["archived", "_creationTime"];
19
+ }, {}, {}>;
20
+ subchannels: import("convex/server").TableDefinition<import("convex/values").VObject<{
21
+ metadata?: any;
22
+ externalReferenceId?: string | undefined;
23
+ archived: boolean;
24
+ channelId: import("convex/values").GenericId<"channels">;
25
+ name: string;
26
+ kind: "general" | "custom";
27
+ createdAt: number;
28
+ updatedAt: number;
29
+ }, {
30
+ channelId: import("convex/values").VId<import("convex/values").GenericId<"channels">, "required">;
31
+ name: import("convex/values").VString<string, "required">;
32
+ kind: import("convex/values").VUnion<"general" | "custom", [import("convex/values").VLiteral<"general", "required">, import("convex/values").VLiteral<"custom", "required">], "required", never>;
33
+ externalReferenceId: import("convex/values").VString<string | undefined, "optional">;
34
+ archived: import("convex/values").VBoolean<boolean, "required">;
35
+ metadata: import("convex/values").VAny<any, "optional", string>;
36
+ createdAt: import("convex/values").VFloat64<number, "required">;
37
+ updatedAt: import("convex/values").VFloat64<number, "required">;
38
+ }, "required", "archived" | "channelId" | "metadata" | "name" | "externalReferenceId" | "kind" | "createdAt" | "updatedAt" | `metadata.${string}`>, {
39
+ by_channel: ["channelId", "_creationTime"];
40
+ by_channel_and_external_reference: ["channelId", "externalReferenceId", "_creationTime"];
41
+ }, {}, {}>;
42
+ messages: import("convex/server").TableDefinition<import("convex/values").VObject<{
43
+ metadata?: any;
44
+ authorName?: string | undefined;
45
+ channelId: import("convex/values").GenericId<"channels">;
46
+ subchannelId: import("convex/values").GenericId<"subchannels">;
47
+ authorId: string;
48
+ body: string;
49
+ createdAt: number;
50
+ updatedAt: number;
51
+ }, {
52
+ channelId: import("convex/values").VId<import("convex/values").GenericId<"channels">, "required">;
53
+ subchannelId: import("convex/values").VId<import("convex/values").GenericId<"subchannels">, "required">;
54
+ authorId: import("convex/values").VString<string, "required">;
55
+ authorName: import("convex/values").VString<string | undefined, "optional">;
56
+ body: import("convex/values").VString<string, "required">;
57
+ metadata: import("convex/values").VAny<any, "optional", string>;
58
+ createdAt: import("convex/values").VFloat64<number, "required">;
59
+ updatedAt: import("convex/values").VFloat64<number, "required">;
60
+ }, "required", "channelId" | "subchannelId" | "metadata" | "authorId" | "authorName" | "body" | "createdAt" | "updatedAt" | `metadata.${string}`>, {
61
+ by_subchannel_and_time: ["subchannelId", "createdAt", "_creationTime"];
62
+ by_channel_and_time: ["channelId", "createdAt", "_creationTime"];
63
+ }, {}, {}>;
64
+ }, true>;
65
+ export default _default;
@@ -0,0 +1,43 @@
1
+ import { defineSchema, defineTable } from 'convex/server';
2
+ import { v } from 'convex/values';
3
+ export default defineSchema({
4
+ channels: defineTable({
5
+ // External key from host domain (e.g. patientId in PrimoUp)
6
+ externalId: v.string(),
7
+ name: v.string(),
8
+ archived: v.boolean(),
9
+ metadata: v.optional(v.any()),
10
+ createdAt: v.number(),
11
+ updatedAt: v.number()
12
+ })
13
+ .index('by_external_id', ['externalId'])
14
+ .index('by_archived', ['archived']),
15
+ subchannels: defineTable({
16
+ channelId: v.id('channels'),
17
+ name: v.string(),
18
+ kind: v.union(v.literal('general'), v.literal('custom')),
19
+ externalReferenceId: v.optional(v.string()),
20
+ archived: v.boolean(),
21
+ metadata: v.optional(v.any()),
22
+ createdAt: v.number(),
23
+ updatedAt: v.number()
24
+ })
25
+ .index('by_channel', ['channelId'])
26
+ .index('by_channel_and_external_reference', [
27
+ 'channelId',
28
+ 'externalReferenceId'
29
+ ]),
30
+ messages: defineTable({
31
+ channelId: v.id('channels'),
32
+ subchannelId: v.id('subchannels'),
33
+ authorId: v.string(),
34
+ authorName: v.optional(v.string()),
35
+ body: v.string(),
36
+ metadata: v.optional(v.any()),
37
+ createdAt: v.number(),
38
+ updatedAt: v.number()
39
+ })
40
+ .index('by_subchannel_and_time', ['subchannelId', 'createdAt'])
41
+ .index('by_channel_and_time', ['channelId', 'createdAt'])
42
+ });
43
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAA;AAEjC,eAAe,YAAY,CAAC;IAC1B,QAAQ,EAAE,WAAW,CAAC;QACpB,4DAA4D;QAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;QACrB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;KACtB,CAAC;SACC,KAAK,CAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC,CAAC;SACvC,KAAK,CAAC,aAAa,EAAE,CAAC,UAAU,CAAC,CAAC;IAErC,WAAW,EAAE,WAAW,CAAC;QACvB,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC;QAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxD,mBAAmB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC3C,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;QACrB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;KACtB,CAAC;SACC,KAAK,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC,CAAC;SAClC,KAAK,CAAC,mCAAmC,EAAE;QAC1C,WAAW;QACX,qBAAqB;KACtB,CAAC;IAEJ,QAAQ,EAAE,WAAW,CAAC;QACpB,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC;QAC3B,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC;QACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;KACtB,CAAC;SACC,KAAK,CAAC,wBAAwB,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;SAC9D,KAAK,CAAC,qBAAqB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;CAC5D,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export { exposeApi } from './client/index.js';
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { exposeApi } from './client/index.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA"}