@secondlayer/shared 0.10.2 → 0.12.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 (46) hide show
  1. package/dist/src/db/index.d.ts +180 -2
  2. package/dist/src/db/queries/accounts.d.ts +157 -2
  3. package/dist/src/db/queries/accounts.js +17 -1
  4. package/dist/src/db/queries/accounts.js.map +3 -3
  5. package/dist/src/db/queries/integrity.d.ts +150 -1
  6. package/dist/src/db/queries/marketplace.d.ts +464 -0
  7. package/dist/src/db/queries/marketplace.js +142 -0
  8. package/dist/src/db/queries/marketplace.js.map +10 -0
  9. package/dist/src/db/queries/metrics.d.ts +150 -1
  10. package/dist/src/db/queries/projects.d.ts +424 -0
  11. package/dist/src/db/queries/projects.js +47 -0
  12. package/dist/src/db/queries/projects.js.map +10 -0
  13. package/dist/src/db/queries/subgraph-gaps.d.ts +150 -1
  14. package/dist/src/db/queries/subgraphs.d.ts +158 -6
  15. package/dist/src/db/queries/subgraphs.js +18 -13
  16. package/dist/src/db/queries/subgraphs.js.map +3 -3
  17. package/dist/src/db/queries/usage.d.ts +150 -1
  18. package/dist/src/db/queries/workflows.d.ts +440 -0
  19. package/dist/src/db/queries/workflows.js +115 -0
  20. package/dist/src/db/queries/workflows.js.map +11 -0
  21. package/dist/src/db/schema.d.ts +180 -2
  22. package/dist/src/index.d.ts +258 -10
  23. package/dist/src/index.js +91 -72
  24. package/dist/src/index.js.map +5 -4
  25. package/dist/src/node/local-client.d.ts +150 -1
  26. package/dist/src/schemas/index.d.ts +79 -9
  27. package/dist/src/schemas/index.js +93 -74
  28. package/dist/src/schemas/index.js.map +5 -4
  29. package/dist/src/schemas/marketplace.d.ts +63 -0
  30. package/dist/src/schemas/marketplace.js +39 -0
  31. package/dist/src/schemas/marketplace.js.map +10 -0
  32. package/dist/src/schemas/subgraphs.d.ts +8 -0
  33. package/dist/src/schemas/subgraphs.js.map +2 -2
  34. package/dist/src/schemas/workflows.d.ts +66 -0
  35. package/dist/src/schemas/workflows.js +39 -0
  36. package/dist/src/schemas/workflows.js.map +10 -0
  37. package/dist/src/types.d.ts +1 -0
  38. package/migrations/0022_marketplace.ts +88 -0
  39. package/migrations/0023_projects.ts +149 -0
  40. package/migrations/0024_chat_sessions.ts +51 -0
  41. package/migrations/0025_chat_session_summary.ts +15 -0
  42. package/migrations/0026_workflows.ts +204 -0
  43. package/migrations/0027_workflow_cursors.ts +16 -0
  44. package/migrations/0028_subgraph_account_scoping.ts +116 -0
  45. package/migrations/0029_subgraph_handler_code.ts +23 -0
  46. package/package.json +22 -2
@@ -41,6 +41,7 @@ interface StreamsTable {
41
41
  endpoint_url: string;
42
42
  signing_secret: string | null;
43
43
  api_key_id: string;
44
+ project_id: string | null;
44
45
  created_at: Generated<Date>;
45
46
  updated_at: Generated<Date>;
46
47
  }
@@ -102,7 +103,14 @@ interface SubgraphsTable {
102
103
  last_error_at: Date | null;
103
104
  total_processed: Generated<number>;
104
105
  total_errors: Generated<number>;
105
- api_key_id: string;
106
+ api_key_id: string | null;
107
+ account_id: string;
108
+ handler_code: string | null;
109
+ project_id: string | null;
110
+ is_public: Generated<boolean>;
111
+ tags: Generated<string[]>;
112
+ description: string | null;
113
+ forked_from_id: string | null;
106
114
  created_at: Generated<Date>;
107
115
  updated_at: Generated<Date>;
108
116
  }
@@ -133,6 +141,10 @@ interface AccountsTable {
133
141
  id: Generated<string>;
134
142
  email: string;
135
143
  plan: Generated<string>;
144
+ display_name: string | null;
145
+ bio: string | null;
146
+ avatar_url: string | null;
147
+ slug: string | null;
136
148
  created_at: Generated<Date>;
137
149
  }
138
150
  interface SessionsTable {
@@ -233,6 +245,131 @@ interface SubgraphHealthSnapshotsTable {
233
245
  last_processed_block: number | null;
234
246
  captured_at: Generated<Date>;
235
247
  }
248
+ interface SubgraphUsageDailyTable {
249
+ subgraph_id: string;
250
+ date: string;
251
+ query_count: Generated<number>;
252
+ }
253
+ interface ProjectsTable {
254
+ id: Generated<string>;
255
+ name: string;
256
+ slug: string;
257
+ account_id: string;
258
+ settings: Generated<Record<string, unknown>>;
259
+ network: Generated<string>;
260
+ node_rpc: string | null;
261
+ created_at: Generated<Date>;
262
+ updated_at: Generated<Date>;
263
+ }
264
+ interface TeamMembersTable {
265
+ id: Generated<string>;
266
+ project_id: string;
267
+ account_id: string;
268
+ role: Generated<string>;
269
+ invited_by: string | null;
270
+ created_at: Generated<Date>;
271
+ }
272
+ interface TeamInvitationsTable {
273
+ id: Generated<string>;
274
+ project_id: string;
275
+ email: string;
276
+ role: Generated<string>;
277
+ token: string;
278
+ invited_by: string | null;
279
+ expires_at: Date;
280
+ accepted_at: Date | null;
281
+ created_at: Generated<Date>;
282
+ }
283
+ interface ChatSessionsTable {
284
+ id: Generated<string>;
285
+ account_id: string;
286
+ title: string | null;
287
+ summary: unknown | null;
288
+ created_at: Generated<Date>;
289
+ updated_at: Generated<Date>;
290
+ }
291
+ interface ChatMessagesTable {
292
+ id: Generated<string>;
293
+ chat_session_id: string;
294
+ role: string;
295
+ parts: unknown;
296
+ metadata: unknown | null;
297
+ created_at: Generated<Date>;
298
+ }
299
+ interface WorkflowDefinitionsTable {
300
+ id: Generated<string>;
301
+ name: string;
302
+ version: Generated<string>;
303
+ status: Generated<string>;
304
+ trigger_type: string;
305
+ trigger_config: unknown;
306
+ handler_path: string;
307
+ retries_config: unknown | null;
308
+ timeout_ms: number | null;
309
+ api_key_id: string;
310
+ project_id: string | null;
311
+ created_at: Generated<Date>;
312
+ updated_at: Generated<Date>;
313
+ }
314
+ interface WorkflowRunsTable {
315
+ id: Generated<string>;
316
+ definition_id: string;
317
+ status: Generated<string>;
318
+ trigger_type: string;
319
+ trigger_data: unknown | null;
320
+ dedup_key: string | null;
321
+ error: string | null;
322
+ started_at: Date | null;
323
+ completed_at: Date | null;
324
+ duration_ms: number | null;
325
+ total_ai_tokens: Generated<number>;
326
+ created_at: Generated<Date>;
327
+ }
328
+ interface WorkflowStepsTable {
329
+ id: Generated<string>;
330
+ run_id: string;
331
+ step_index: number;
332
+ step_id: string;
333
+ step_type: string;
334
+ status: Generated<string>;
335
+ input: unknown | null;
336
+ output: unknown | null;
337
+ error: string | null;
338
+ retry_count: Generated<number>;
339
+ ai_tokens_used: Generated<number>;
340
+ started_at: Date | null;
341
+ completed_at: Date | null;
342
+ duration_ms: number | null;
343
+ created_at: Generated<Date>;
344
+ }
345
+ interface WorkflowQueueTable {
346
+ id: Generated<string>;
347
+ run_id: string;
348
+ status: Generated<string>;
349
+ attempts: Generated<number>;
350
+ max_attempts: Generated<number>;
351
+ scheduled_for: Generated<Date>;
352
+ locked_at: Date | null;
353
+ locked_by: string | null;
354
+ error: string | null;
355
+ created_at: Generated<Date>;
356
+ completed_at: Date | null;
357
+ }
358
+ interface WorkflowSchedulesTable {
359
+ id: Generated<string>;
360
+ definition_id: string;
361
+ cron_expr: string;
362
+ timezone: Generated<string>;
363
+ next_run_at: Date;
364
+ last_run_at: Date | null;
365
+ enabled: Generated<boolean>;
366
+ created_at: Generated<Date>;
367
+ }
368
+ interface WorkflowCursorsTable {
369
+ name: string;
370
+ block_height: Generated<number>;
371
+ updated_at: Generated<Date>;
372
+ }
236
373
  interface Database {
237
374
  blocks: BlocksTable;
238
375
  transactions: TransactionsTable;
@@ -256,6 +393,18 @@ interface Database {
256
393
  subgraph_processing_stats: SubgraphProcessingStatsTable;
257
394
  subgraph_table_snapshots: SubgraphTableSnapshotsTable;
258
395
  subgraph_gaps: SubgraphGapsTable;
396
+ subgraph_usage_daily: SubgraphUsageDailyTable;
397
+ projects: ProjectsTable;
398
+ team_members: TeamMembersTable;
399
+ team_invitations: TeamInvitationsTable;
400
+ chat_sessions: ChatSessionsTable;
401
+ chat_messages: ChatMessagesTable;
402
+ workflow_definitions: WorkflowDefinitionsTable;
403
+ workflow_runs: WorkflowRunsTable;
404
+ workflow_steps: WorkflowStepsTable;
405
+ workflow_queue: WorkflowQueueTable;
406
+ workflow_schedules: WorkflowSchedulesTable;
407
+ workflow_cursors: WorkflowCursorsTable;
259
408
  }
260
409
  type StreamMetrics = Selectable<StreamMetricsTable>;
261
410
  declare function getStreamMetrics(db: Kysely<Database>, streamId: string): Promise<StreamMetrics | null>;
@@ -0,0 +1,424 @@
1
+ import { Kysely } from "kysely";
2
+ import { Generated, Selectable } from "kysely";
3
+ interface BlocksTable {
4
+ height: number;
5
+ hash: string;
6
+ parent_hash: string;
7
+ burn_block_height: number;
8
+ timestamp: number;
9
+ canonical: Generated<boolean>;
10
+ created_at: Generated<Date>;
11
+ }
12
+ interface TransactionsTable {
13
+ tx_id: string;
14
+ block_height: number;
15
+ tx_index: Generated<number>;
16
+ type: string;
17
+ sender: string;
18
+ status: string;
19
+ contract_id: string | null;
20
+ function_name: string | null;
21
+ function_args: Generated<unknown | null>;
22
+ raw_result: Generated<string | null>;
23
+ raw_tx: string;
24
+ created_at: Generated<Date>;
25
+ }
26
+ interface EventsTable {
27
+ id: Generated<string>;
28
+ tx_id: string;
29
+ block_height: number;
30
+ event_index: number;
31
+ type: string;
32
+ data: unknown;
33
+ created_at: Generated<Date>;
34
+ }
35
+ interface StreamsTable {
36
+ id: Generated<string>;
37
+ name: string;
38
+ status: Generated<string>;
39
+ filters: unknown;
40
+ options: Generated<unknown>;
41
+ endpoint_url: string;
42
+ signing_secret: string | null;
43
+ api_key_id: string;
44
+ project_id: string | null;
45
+ created_at: Generated<Date>;
46
+ updated_at: Generated<Date>;
47
+ }
48
+ interface StreamMetricsTable {
49
+ stream_id: string;
50
+ last_triggered_at: Date | null;
51
+ last_triggered_block: number | null;
52
+ total_deliveries: Generated<number>;
53
+ failed_deliveries: Generated<number>;
54
+ error_message: string | null;
55
+ }
56
+ interface JobsTable {
57
+ id: Generated<string>;
58
+ stream_id: string;
59
+ block_height: number;
60
+ status: Generated<string>;
61
+ attempts: Generated<number>;
62
+ locked_at: Date | null;
63
+ locked_by: string | null;
64
+ error: string | null;
65
+ backfill: Generated<boolean>;
66
+ created_at: Generated<Date>;
67
+ completed_at: Date | null;
68
+ }
69
+ interface IndexProgressTable {
70
+ network: string;
71
+ last_indexed_block: Generated<number>;
72
+ last_contiguous_block: Generated<number>;
73
+ highest_seen_block: Generated<number>;
74
+ updated_at: Generated<Date>;
75
+ }
76
+ interface DeliveriesTable {
77
+ id: Generated<string>;
78
+ stream_id: string;
79
+ job_id: string | null;
80
+ block_height: number;
81
+ status: string;
82
+ status_code: number | null;
83
+ response_time_ms: number | null;
84
+ attempts: Generated<number>;
85
+ error: string | null;
86
+ payload: unknown;
87
+ created_at: Generated<Date>;
88
+ }
89
+ interface SubgraphsTable {
90
+ id: Generated<string>;
91
+ name: string;
92
+ version: Generated<string>;
93
+ status: Generated<string>;
94
+ definition: Record<string, unknown>;
95
+ schema_hash: string;
96
+ handler_path: string;
97
+ schema_name: string | null;
98
+ start_block: Generated<number>;
99
+ last_processed_block: Generated<number>;
100
+ reindex_from_block: number | null;
101
+ reindex_to_block: number | null;
102
+ last_error: string | null;
103
+ last_error_at: Date | null;
104
+ total_processed: Generated<number>;
105
+ total_errors: Generated<number>;
106
+ api_key_id: string | null;
107
+ account_id: string;
108
+ handler_code: string | null;
109
+ project_id: string | null;
110
+ is_public: Generated<boolean>;
111
+ tags: Generated<string[]>;
112
+ description: string | null;
113
+ forked_from_id: string | null;
114
+ created_at: Generated<Date>;
115
+ updated_at: Generated<Date>;
116
+ }
117
+ interface SubgraphGapsTable {
118
+ id: Generated<string>;
119
+ subgraph_id: string;
120
+ subgraph_name: string;
121
+ gap_start: number;
122
+ gap_end: number;
123
+ reason: string;
124
+ detected_at: Generated<Date>;
125
+ resolved_at: Date | null;
126
+ }
127
+ interface ApiKeysTable {
128
+ id: Generated<string>;
129
+ key_hash: string;
130
+ key_prefix: string;
131
+ name: string | null;
132
+ status: Generated<string>;
133
+ rate_limit: Generated<number>;
134
+ ip_address: string;
135
+ account_id: string;
136
+ last_used_at: Date | null;
137
+ revoked_at: Date | null;
138
+ created_at: Generated<Date>;
139
+ }
140
+ interface AccountsTable {
141
+ id: Generated<string>;
142
+ email: string;
143
+ plan: Generated<string>;
144
+ display_name: string | null;
145
+ bio: string | null;
146
+ avatar_url: string | null;
147
+ slug: string | null;
148
+ created_at: Generated<Date>;
149
+ }
150
+ interface SessionsTable {
151
+ id: Generated<string>;
152
+ token_hash: string;
153
+ token_prefix: string;
154
+ account_id: string;
155
+ ip_address: string;
156
+ expires_at: Generated<Date>;
157
+ revoked_at: Date | null;
158
+ last_used_at: Date | null;
159
+ created_at: Generated<Date>;
160
+ }
161
+ interface MagicLinksTable {
162
+ id: Generated<string>;
163
+ email: string;
164
+ token: string;
165
+ code: string | null;
166
+ expires_at: Date;
167
+ used_at: Date | null;
168
+ failed_attempts: Generated<number>;
169
+ created_at: Generated<Date>;
170
+ }
171
+ interface UsageDailyTable {
172
+ account_id: string;
173
+ date: string;
174
+ api_requests: Generated<number>;
175
+ deliveries: Generated<number>;
176
+ }
177
+ interface UsageSnapshotsTable {
178
+ id: Generated<string>;
179
+ account_id: string;
180
+ measured_at: Generated<Date>;
181
+ storage_bytes: Generated<number>;
182
+ }
183
+ interface WaitlistTable {
184
+ id: Generated<string>;
185
+ email: string;
186
+ source: Generated<string>;
187
+ status: Generated<string>;
188
+ created_at: Generated<Date>;
189
+ }
190
+ interface AccountInsightsTable {
191
+ id: Generated<string>;
192
+ account_id: string;
193
+ category: string;
194
+ insight_type: string;
195
+ resource_id: string | null;
196
+ severity: string;
197
+ title: string;
198
+ body: string;
199
+ data: unknown;
200
+ dismissed_at: Date | null;
201
+ expires_at: Date | null;
202
+ created_at: Generated<Date>;
203
+ }
204
+ interface AccountAgentRunsTable {
205
+ id: Generated<string>;
206
+ account_id: string;
207
+ started_at: Generated<Date>;
208
+ completed_at: Date | null;
209
+ status: Generated<string>;
210
+ input_tokens: Generated<number>;
211
+ output_tokens: Generated<number>;
212
+ cost_usd: Generated<number>;
213
+ insights_created: Generated<number>;
214
+ error: string | null;
215
+ }
216
+ interface SubgraphProcessingStatsTable {
217
+ id: Generated<string>;
218
+ subgraph_name: string;
219
+ api_key_id: string | null;
220
+ bucket_start: Date | null;
221
+ bucket_end: Date | null;
222
+ blocks_processed: number | null;
223
+ total_time_ms: number | null;
224
+ handler_time_ms: number | null;
225
+ flush_time_ms: number | null;
226
+ max_block_time_ms: number | null;
227
+ max_handler_time_ms: number | null;
228
+ avg_ops_per_block: number | null;
229
+ is_catchup: Generated<boolean>;
230
+ created_at: Generated<Date>;
231
+ }
232
+ interface SubgraphTableSnapshotsTable {
233
+ id: Generated<string>;
234
+ subgraph_name: string;
235
+ api_key_id: string | null;
236
+ table_name: string;
237
+ row_count: number | null;
238
+ created_at: Generated<Date>;
239
+ }
240
+ interface SubgraphHealthSnapshotsTable {
241
+ id: Generated<string>;
242
+ subgraph_id: string;
243
+ total_processed: number;
244
+ total_errors: number;
245
+ last_processed_block: number | null;
246
+ captured_at: Generated<Date>;
247
+ }
248
+ interface SubgraphUsageDailyTable {
249
+ subgraph_id: string;
250
+ date: string;
251
+ query_count: Generated<number>;
252
+ }
253
+ interface ProjectsTable {
254
+ id: Generated<string>;
255
+ name: string;
256
+ slug: string;
257
+ account_id: string;
258
+ settings: Generated<Record<string, unknown>>;
259
+ network: Generated<string>;
260
+ node_rpc: string | null;
261
+ created_at: Generated<Date>;
262
+ updated_at: Generated<Date>;
263
+ }
264
+ interface TeamMembersTable {
265
+ id: Generated<string>;
266
+ project_id: string;
267
+ account_id: string;
268
+ role: Generated<string>;
269
+ invited_by: string | null;
270
+ created_at: Generated<Date>;
271
+ }
272
+ interface TeamInvitationsTable {
273
+ id: Generated<string>;
274
+ project_id: string;
275
+ email: string;
276
+ role: Generated<string>;
277
+ token: string;
278
+ invited_by: string | null;
279
+ expires_at: Date;
280
+ accepted_at: Date | null;
281
+ created_at: Generated<Date>;
282
+ }
283
+ interface ChatSessionsTable {
284
+ id: Generated<string>;
285
+ account_id: string;
286
+ title: string | null;
287
+ summary: unknown | null;
288
+ created_at: Generated<Date>;
289
+ updated_at: Generated<Date>;
290
+ }
291
+ interface ChatMessagesTable {
292
+ id: Generated<string>;
293
+ chat_session_id: string;
294
+ role: string;
295
+ parts: unknown;
296
+ metadata: unknown | null;
297
+ created_at: Generated<Date>;
298
+ }
299
+ interface WorkflowDefinitionsTable {
300
+ id: Generated<string>;
301
+ name: string;
302
+ version: Generated<string>;
303
+ status: Generated<string>;
304
+ trigger_type: string;
305
+ trigger_config: unknown;
306
+ handler_path: string;
307
+ retries_config: unknown | null;
308
+ timeout_ms: number | null;
309
+ api_key_id: string;
310
+ project_id: string | null;
311
+ created_at: Generated<Date>;
312
+ updated_at: Generated<Date>;
313
+ }
314
+ interface WorkflowRunsTable {
315
+ id: Generated<string>;
316
+ definition_id: string;
317
+ status: Generated<string>;
318
+ trigger_type: string;
319
+ trigger_data: unknown | null;
320
+ dedup_key: string | null;
321
+ error: string | null;
322
+ started_at: Date | null;
323
+ completed_at: Date | null;
324
+ duration_ms: number | null;
325
+ total_ai_tokens: Generated<number>;
326
+ created_at: Generated<Date>;
327
+ }
328
+ interface WorkflowStepsTable {
329
+ id: Generated<string>;
330
+ run_id: string;
331
+ step_index: number;
332
+ step_id: string;
333
+ step_type: string;
334
+ status: Generated<string>;
335
+ input: unknown | null;
336
+ output: unknown | null;
337
+ error: string | null;
338
+ retry_count: Generated<number>;
339
+ ai_tokens_used: Generated<number>;
340
+ started_at: Date | null;
341
+ completed_at: Date | null;
342
+ duration_ms: number | null;
343
+ created_at: Generated<Date>;
344
+ }
345
+ interface WorkflowQueueTable {
346
+ id: Generated<string>;
347
+ run_id: string;
348
+ status: Generated<string>;
349
+ attempts: Generated<number>;
350
+ max_attempts: Generated<number>;
351
+ scheduled_for: Generated<Date>;
352
+ locked_at: Date | null;
353
+ locked_by: string | null;
354
+ error: string | null;
355
+ created_at: Generated<Date>;
356
+ completed_at: Date | null;
357
+ }
358
+ interface WorkflowSchedulesTable {
359
+ id: Generated<string>;
360
+ definition_id: string;
361
+ cron_expr: string;
362
+ timezone: Generated<string>;
363
+ next_run_at: Date;
364
+ last_run_at: Date | null;
365
+ enabled: Generated<boolean>;
366
+ created_at: Generated<Date>;
367
+ }
368
+ interface WorkflowCursorsTable {
369
+ name: string;
370
+ block_height: Generated<number>;
371
+ updated_at: Generated<Date>;
372
+ }
373
+ interface Database {
374
+ blocks: BlocksTable;
375
+ transactions: TransactionsTable;
376
+ events: EventsTable;
377
+ streams: StreamsTable;
378
+ stream_metrics: StreamMetricsTable;
379
+ jobs: JobsTable;
380
+ index_progress: IndexProgressTable;
381
+ deliveries: DeliveriesTable;
382
+ subgraphs: SubgraphsTable;
383
+ api_keys: ApiKeysTable;
384
+ accounts: AccountsTable;
385
+ sessions: SessionsTable;
386
+ magic_links: MagicLinksTable;
387
+ usage_daily: UsageDailyTable;
388
+ usage_snapshots: UsageSnapshotsTable;
389
+ waitlist: WaitlistTable;
390
+ account_insights: AccountInsightsTable;
391
+ account_agent_runs: AccountAgentRunsTable;
392
+ subgraph_health_snapshots: SubgraphHealthSnapshotsTable;
393
+ subgraph_processing_stats: SubgraphProcessingStatsTable;
394
+ subgraph_table_snapshots: SubgraphTableSnapshotsTable;
395
+ subgraph_gaps: SubgraphGapsTable;
396
+ subgraph_usage_daily: SubgraphUsageDailyTable;
397
+ projects: ProjectsTable;
398
+ team_members: TeamMembersTable;
399
+ team_invitations: TeamInvitationsTable;
400
+ chat_sessions: ChatSessionsTable;
401
+ chat_messages: ChatMessagesTable;
402
+ workflow_definitions: WorkflowDefinitionsTable;
403
+ workflow_runs: WorkflowRunsTable;
404
+ workflow_steps: WorkflowStepsTable;
405
+ workflow_queue: WorkflowQueueTable;
406
+ workflow_schedules: WorkflowSchedulesTable;
407
+ workflow_cursors: WorkflowCursorsTable;
408
+ }
409
+ type Project = Selectable<ProjectsTable>;
410
+ type TeamInvitation = Selectable<TeamInvitationsTable>;
411
+ declare function getProjectsByAccount(db: Kysely<Database>, accountId: string): Promise<Project[]>;
412
+ declare function getProjectBySlug(db: Kysely<Database>, accountId: string, slug: string): Promise<Project | undefined>;
413
+ declare function getTeamMembers(db: Kysely<Database>, projectId: string): Promise<Array<{
414
+ id: string
415
+ role: string
416
+ created_at: Date
417
+ account_id: string
418
+ email: string
419
+ display_name: string | null
420
+ avatar_url: string | null
421
+ account_slug: string | null
422
+ }>>;
423
+ declare function getTeamInvitations(db: Kysely<Database>, projectId: string): Promise<TeamInvitation[]>;
424
+ export { getTeamMembers, getTeamInvitations, getProjectsByAccount, getProjectBySlug };
@@ -0,0 +1,47 @@
1
+ import { createRequire } from "node:module";
2
+ var __defProp = Object.defineProperty;
3
+ var __returnValue = (v) => v;
4
+ function __exportSetter(name, newValue) {
5
+ this[name] = __returnValue.bind(null, newValue);
6
+ }
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, {
10
+ get: all[name],
11
+ enumerable: true,
12
+ configurable: true,
13
+ set: __exportSetter.bind(all, name)
14
+ });
15
+ };
16
+
17
+ // src/db/queries/projects.ts
18
+ async function getProjectsByAccount(db, accountId) {
19
+ return db.selectFrom("projects").selectAll().where("account_id", "=", accountId).orderBy("created_at", "asc").execute();
20
+ }
21
+ async function getProjectBySlug(db, accountId, slug) {
22
+ return db.selectFrom("projects").selectAll().where("account_id", "=", accountId).where("slug", "=", slug).executeTakeFirst();
23
+ }
24
+ async function getTeamMembers(db, projectId) {
25
+ return db.selectFrom("team_members").innerJoin("accounts", "accounts.id", "team_members.account_id").select([
26
+ "team_members.id",
27
+ "team_members.role",
28
+ "team_members.created_at",
29
+ "accounts.id as account_id",
30
+ "accounts.email",
31
+ "accounts.display_name",
32
+ "accounts.avatar_url",
33
+ "accounts.slug as account_slug"
34
+ ]).where("team_members.project_id", "=", projectId).orderBy("team_members.created_at", "asc").execute();
35
+ }
36
+ async function getTeamInvitations(db, projectId) {
37
+ return db.selectFrom("team_invitations").selectAll().where("project_id", "=", projectId).where("accepted_at", "is", null).orderBy("created_at", "desc").execute();
38
+ }
39
+ export {
40
+ getTeamMembers,
41
+ getTeamInvitations,
42
+ getProjectsByAccount,
43
+ getProjectBySlug
44
+ };
45
+
46
+ //# debugId=F62DBD8C7A91B89F64756E2164756E21
47
+ //# sourceMappingURL=projects.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/db/queries/projects.ts"],
4
+ "sourcesContent": [
5
+ "import type { Kysely } from \"kysely\";\nimport type { Database, Project, TeamInvitation } from \"../types.ts\";\n\nexport async function getProjectsByAccount(\n\tdb: Kysely<Database>,\n\taccountId: string,\n): Promise<Project[]> {\n\treturn db\n\t\t.selectFrom(\"projects\")\n\t\t.selectAll()\n\t\t.where(\"account_id\", \"=\", accountId)\n\t\t.orderBy(\"created_at\", \"asc\")\n\t\t.execute();\n}\n\nexport async function getProjectBySlug(\n\tdb: Kysely<Database>,\n\taccountId: string,\n\tslug: string,\n): Promise<Project | undefined> {\n\treturn db\n\t\t.selectFrom(\"projects\")\n\t\t.selectAll()\n\t\t.where(\"account_id\", \"=\", accountId)\n\t\t.where(\"slug\", \"=\", slug)\n\t\t.executeTakeFirst();\n}\n\nexport async function getTeamMembers(\n\tdb: Kysely<Database>,\n\tprojectId: string,\n): Promise<Array<{\n\tid: string;\n\trole: string;\n\tcreated_at: Date;\n\taccount_id: string;\n\temail: string;\n\tdisplay_name: string | null;\n\tavatar_url: string | null;\n\taccount_slug: string | null;\n}>> {\n\treturn db\n\t\t.selectFrom(\"team_members\")\n\t\t.innerJoin(\"accounts\", \"accounts.id\", \"team_members.account_id\")\n\t\t.select([\n\t\t\t\"team_members.id\",\n\t\t\t\"team_members.role\",\n\t\t\t\"team_members.created_at\",\n\t\t\t\"accounts.id as account_id\",\n\t\t\t\"accounts.email\",\n\t\t\t\"accounts.display_name\",\n\t\t\t\"accounts.avatar_url\",\n\t\t\t\"accounts.slug as account_slug\",\n\t\t])\n\t\t.where(\"team_members.project_id\", \"=\", projectId)\n\t\t.orderBy(\"team_members.created_at\", \"asc\")\n\t\t.execute();\n}\n\nexport async function getTeamInvitations(\n\tdb: Kysely<Database>,\n\tprojectId: string,\n): Promise<TeamInvitation[]> {\n\treturn db\n\t\t.selectFrom(\"team_invitations\")\n\t\t.selectAll()\n\t\t.where(\"project_id\", \"=\", projectId)\n\t\t.where(\"accepted_at\", \"is\", null)\n\t\t.orderBy(\"created_at\", \"desc\")\n\t\t.execute();\n}\n"
6
+ ],
7
+ "mappings": ";;;;;;;;;;;;;;;;;AAGA,eAAsB,oBAAoB,CACzC,IACA,WACqB;AAAA,EACrB,OAAO,GACL,WAAW,UAAU,EACrB,UAAU,EACV,MAAM,cAAc,KAAK,SAAS,EAClC,QAAQ,cAAc,KAAK,EAC3B,QAAQ;AAAA;AAGX,eAAsB,gBAAgB,CACrC,IACA,WACA,MAC+B;AAAA,EAC/B,OAAO,GACL,WAAW,UAAU,EACrB,UAAU,EACV,MAAM,cAAc,KAAK,SAAS,EAClC,MAAM,QAAQ,KAAK,IAAI,EACvB,iBAAiB;AAAA;AAGpB,eAAsB,cAAc,CACnC,IACA,WAUG;AAAA,EACH,OAAO,GACL,WAAW,cAAc,EACzB,UAAU,YAAY,eAAe,yBAAyB,EAC9D,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC,EACA,MAAM,2BAA2B,KAAK,SAAS,EAC/C,QAAQ,2BAA2B,KAAK,EACxC,QAAQ;AAAA;AAGX,eAAsB,kBAAkB,CACvC,IACA,WAC4B;AAAA,EAC5B,OAAO,GACL,WAAW,kBAAkB,EAC7B,UAAU,EACV,MAAM,cAAc,KAAK,SAAS,EAClC,MAAM,eAAe,MAAM,IAAI,EAC/B,QAAQ,cAAc,MAAM,EAC5B,QAAQ;AAAA;",
8
+ "debugId": "F62DBD8C7A91B89F64756E2164756E21",
9
+ "names": []
10
+ }