weave-typescript 0.11.14 → 0.11.16

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 (75) hide show
  1. package/dist/weaveapi/data/v1/data.pb.d.ts +54 -0
  2. package/dist/weaveapi/data/v1/data.pb.js +411 -0
  3. package/dist/weaveapi/data/v1/service.pb.d.ts +296 -0
  4. package/dist/weaveapi/data/v1/service.pb.js +2779 -0
  5. package/dist/weaveapi/input/v1/input.pb.d.ts +77 -0
  6. package/dist/weaveapi/input/v1/input.pb.js +632 -0
  7. package/dist/weaveapi/input/v1/service.pb.d.ts +390 -0
  8. package/dist/weaveapi/input/v1/service.pb.js +3612 -0
  9. package/dist/weaveapi/integration/v1/integration.pb.d.ts +67 -0
  10. package/dist/weaveapi/integration/v1/integration.pb.js +486 -0
  11. package/dist/weaveapi/integration/v1/service.pb.d.ts +318 -0
  12. package/dist/weaveapi/integration/v1/service.pb.js +2994 -0
  13. package/dist/weaveapi/project/v1/project.pb.d.ts +1 -0
  14. package/dist/weaveapi/project/v1/project.pb.js +17 -1
  15. package/dist/weaveapi/project/v1/service.pb.d.ts +25 -0
  16. package/dist/weaveapi/project/v1/service.pb.js +248 -5
  17. package/dist/weaveapi/report/v1/report.pb.d.ts +81 -0
  18. package/dist/weaveapi/report/v1/report.pb.js +678 -0
  19. package/dist/weaveapi/report/v1/service.pb.d.ts +194 -0
  20. package/dist/weaveapi/report/v1/service.pb.js +1925 -0
  21. package/dist/weaveapi/requirement/v1/requirement.pb.d.ts +70 -0
  22. package/dist/weaveapi/requirement/v1/requirement.pb.js +570 -0
  23. package/dist/weaveapi/requirement/v1/service.pb.d.ts +390 -0
  24. package/dist/weaveapi/requirement/v1/service.pb.js +3638 -0
  25. package/dist/weaveapi/run/v1/run.pb.d.ts +117 -0
  26. package/dist/weaveapi/run/v1/run.pb.js +1155 -0
  27. package/dist/weaveapi/run/v1/service.pb.d.ts +229 -0
  28. package/dist/weaveapi/run/v1/service.pb.js +2428 -0
  29. package/dist/weaveapi/script/v1/script.pb.d.ts +102 -0
  30. package/dist/weaveapi/script/v1/script.pb.js +1025 -0
  31. package/dist/weaveapi/script/v1/service.pb.d.ts +502 -0
  32. package/dist/weaveapi/script/v1/service.pb.js +4873 -0
  33. package/dist/weaveapi/storage/v1/service.pb.d.ts +4 -0
  34. package/dist/weaveapi/storage/v1/service.pb.js +50 -7
  35. package/dist/weaveapi/storage/v1/storage.pb.d.ts +2 -0
  36. package/dist/weaveapi/storage/v1/storage.pb.js +23 -0
  37. package/dist/weaveapi/storage/v1/vcs.pb.d.ts +75 -0
  38. package/dist/weaveapi/storage/v1/vcs.pb.js +864 -0
  39. package/dist/weaveapi/suite/v1/service.pb.d.ts +539 -0
  40. package/dist/weaveapi/suite/v1/service.pb.js +5281 -0
  41. package/dist/weaveapi/suite/v1/suite.pb.d.ts +92 -0
  42. package/dist/weaveapi/suite/v1/suite.pb.js +876 -0
  43. package/dist/weaveapi/testcase/v1/service.pb.d.ts +498 -0
  44. package/dist/weaveapi/testcase/v1/service.pb.js +4730 -0
  45. package/dist/weaveapi/testcase/v1/testcase.pb.d.ts +91 -0
  46. package/dist/weaveapi/testcase/v1/testcase.pb.js +794 -0
  47. package/dist/weaveapi/workflow/v1/service.pb.d.ts +26 -0
  48. package/dist/weaveapi/workflow/v1/service.pb.js +293 -5
  49. package/dist/weaveapi/workflow/v1/workflow.pb.d.ts +1 -0
  50. package/dist/weaveapi/workflow/v1/workflow.pb.js +17 -1
  51. package/dist/weavesql/weavedb/data_asset_sql.d.ts +206 -0
  52. package/dist/weavesql/weavedb/data_asset_sql.js +335 -0
  53. package/dist/weavesql/weavedb/input_sql.d.ts +293 -0
  54. package/dist/weavesql/weavedb/input_sql.js +500 -0
  55. package/dist/weavesql/weavedb/integration_sql.d.ts +236 -0
  56. package/dist/weavesql/weavedb/integration_sql.js +377 -0
  57. package/dist/weavesql/weavedb/project_sql.d.ts +29 -5
  58. package/dist/weavesql/weavedb/project_sql.js +73 -37
  59. package/dist/weavesql/weavedb/report_sql.d.ts +192 -0
  60. package/dist/weavesql/weavedb/report_sql.js +308 -0
  61. package/dist/weavesql/weavedb/requirement_sql.d.ts +231 -0
  62. package/dist/weavesql/weavedb/requirement_sql.js +399 -0
  63. package/dist/weavesql/weavedb/run_sql.d.ts +283 -0
  64. package/dist/weavesql/weavedb/run_sql.js +462 -0
  65. package/dist/weavesql/weavedb/suite_sql.d.ts +354 -0
  66. package/dist/weavesql/weavedb/suite_sql.js +631 -0
  67. package/dist/weavesql/weavedb/test_case_sql.d.ts +325 -0
  68. package/dist/weavesql/weavedb/test_case_sql.js +563 -0
  69. package/dist/weavesql/weavedb/test_script_sql.d.ts +354 -0
  70. package/dist/weavesql/weavedb/test_script_sql.js +605 -0
  71. package/dist/weavesql/weavedb/traceability_sql.d.ts +117 -0
  72. package/dist/weavesql/weavedb/traceability_sql.js +363 -0
  73. package/dist/weavesql/weavedb/workflow_sql.d.ts +30 -5
  74. package/dist/weavesql/weavedb/workflow_sql.js +76 -38
  75. package/package.json +1 -1
@@ -0,0 +1,563 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listTestCaseRequirementLinksQuery = exports.deleteTestCaseRequirementLinkQuery = exports.upsertTestCaseRequirementLinkQuery = exports.setCurrentTestCaseVersionQuery = exports.getNextTestCaseVersionNumberQuery = exports.listTestCaseVersionsQuery = exports.getTestCaseVersionQuery = exports.createTestCaseVersionQuery = exports.listWorkflowTestCaseBindingsQuery = exports.detachTestCaseFromWorkflowQuery = exports.attachTestCaseToWorkflowQuery = exports.deleteTestCaseQuery = exports.archiveTestCaseQuery = exports.updateTestCaseQuery = exports.listTestCasesByWorkflowQuery = exports.listTestCasesByProjectQuery = exports.getTestCaseQuery = exports.createTestCaseQuery = void 0;
4
+ exports.createTestCase = createTestCase;
5
+ exports.getTestCase = getTestCase;
6
+ exports.listTestCasesByProject = listTestCasesByProject;
7
+ exports.listTestCasesByWorkflow = listTestCasesByWorkflow;
8
+ exports.updateTestCase = updateTestCase;
9
+ exports.archiveTestCase = archiveTestCase;
10
+ exports.deleteTestCase = deleteTestCase;
11
+ exports.attachTestCaseToWorkflow = attachTestCaseToWorkflow;
12
+ exports.detachTestCaseFromWorkflow = detachTestCaseFromWorkflow;
13
+ exports.listWorkflowTestCaseBindings = listWorkflowTestCaseBindings;
14
+ exports.createTestCaseVersion = createTestCaseVersion;
15
+ exports.getTestCaseVersion = getTestCaseVersion;
16
+ exports.listTestCaseVersions = listTestCaseVersions;
17
+ exports.getNextTestCaseVersionNumber = getNextTestCaseVersionNumber;
18
+ exports.setCurrentTestCaseVersion = setCurrentTestCaseVersion;
19
+ exports.upsertTestCaseRequirementLink = upsertTestCaseRequirementLink;
20
+ exports.deleteTestCaseRequirementLink = deleteTestCaseRequirementLink;
21
+ exports.listTestCaseRequirementLinks = listTestCaseRequirementLinks;
22
+ exports.createTestCaseQuery = `-- name: CreateTestCase :one
23
+ INSERT INTO weave_v1.test_case (
24
+ id,
25
+ project_id,
26
+ key,
27
+ title,
28
+ description,
29
+ type,
30
+ status,
31
+ priority,
32
+ metadata
33
+ )
34
+ VALUES (
35
+ $1,
36
+ $2,
37
+ $3,
38
+ $4,
39
+ $5,
40
+ $6,
41
+ $7,
42
+ $8,
43
+ $9
44
+ )
45
+ RETURNING id, project_id, key, title, description, type, status, priority, current_version_id, metadata, created_at, updated_at, archived_at`;
46
+ async function createTestCase(client, args) {
47
+ const result = await client.query({
48
+ text: exports.createTestCaseQuery,
49
+ values: [args.id, args.projectId, args.key, args.title, args.description, args.type, args.status, args.priority, args.metadata],
50
+ rowMode: "array"
51
+ });
52
+ if (result.rows.length !== 1) {
53
+ return null;
54
+ }
55
+ const row = result.rows[0];
56
+ return {
57
+ id: row[0],
58
+ projectId: row[1],
59
+ key: row[2],
60
+ title: row[3],
61
+ description: row[4],
62
+ type: row[5],
63
+ status: row[6],
64
+ priority: row[7],
65
+ currentVersionId: row[8],
66
+ metadata: row[9],
67
+ createdAt: row[10],
68
+ updatedAt: row[11],
69
+ archivedAt: row[12]
70
+ };
71
+ }
72
+ exports.getTestCaseQuery = `-- name: GetTestCase :one
73
+ SELECT id, project_id, key, title, description, type, status, priority, current_version_id, metadata, created_at, updated_at, archived_at
74
+ FROM weave_v1.test_case
75
+ WHERE id = $1
76
+ AND project_id = $2`;
77
+ async function getTestCase(client, args) {
78
+ const result = await client.query({
79
+ text: exports.getTestCaseQuery,
80
+ values: [args.id, args.projectId],
81
+ rowMode: "array"
82
+ });
83
+ if (result.rows.length !== 1) {
84
+ return null;
85
+ }
86
+ const row = result.rows[0];
87
+ return {
88
+ id: row[0],
89
+ projectId: row[1],
90
+ key: row[2],
91
+ title: row[3],
92
+ description: row[4],
93
+ type: row[5],
94
+ status: row[6],
95
+ priority: row[7],
96
+ currentVersionId: row[8],
97
+ metadata: row[9],
98
+ createdAt: row[10],
99
+ updatedAt: row[11],
100
+ archivedAt: row[12]
101
+ };
102
+ }
103
+ exports.listTestCasesByProjectQuery = `-- name: ListTestCasesByProject :many
104
+ SELECT id, project_id, key, title, description, type, status, priority, current_version_id, metadata, created_at, updated_at, archived_at
105
+ FROM weave_v1.test_case
106
+ WHERE project_id = $1
107
+ AND ($2::BOOLEAN OR archived_at IS NULL)
108
+ ORDER BY updated_at DESC
109
+ LIMIT $4
110
+ OFFSET $3`;
111
+ async function listTestCasesByProject(client, args) {
112
+ const result = await client.query({
113
+ text: exports.listTestCasesByProjectQuery,
114
+ values: [args.projectId, args.includeArchived, args.pageOffset, args.pageSize],
115
+ rowMode: "array"
116
+ });
117
+ return result.rows.map(row => {
118
+ return {
119
+ id: row[0],
120
+ projectId: row[1],
121
+ key: row[2],
122
+ title: row[3],
123
+ description: row[4],
124
+ type: row[5],
125
+ status: row[6],
126
+ priority: row[7],
127
+ currentVersionId: row[8],
128
+ metadata: row[9],
129
+ createdAt: row[10],
130
+ updatedAt: row[11],
131
+ archivedAt: row[12]
132
+ };
133
+ });
134
+ }
135
+ exports.listTestCasesByWorkflowQuery = `-- name: ListTestCasesByWorkflow :many
136
+ SELECT c.id, c.project_id, c.key, c.title, c.description, c.type, c.status, c.priority, c.current_version_id, c.metadata, c.created_at, c.updated_at, c.archived_at
137
+ FROM weave_v1.test_case c
138
+ INNER JOIN weave_v1.workflow_test_case b
139
+ ON b.test_case_id = c.id
140
+ AND b.project_id = c.project_id
141
+ WHERE b.project_id = $1
142
+ AND b.workflow_id = $2
143
+ AND ($3::BOOLEAN OR c.archived_at IS NULL)
144
+ ORDER BY c.updated_at DESC
145
+ LIMIT $5
146
+ OFFSET $4`;
147
+ async function listTestCasesByWorkflow(client, args) {
148
+ const result = await client.query({
149
+ text: exports.listTestCasesByWorkflowQuery,
150
+ values: [args.projectId, args.workflowId, args.includeArchived, args.pageOffset, args.pageSize],
151
+ rowMode: "array"
152
+ });
153
+ return result.rows.map(row => {
154
+ return {
155
+ id: row[0],
156
+ projectId: row[1],
157
+ key: row[2],
158
+ title: row[3],
159
+ description: row[4],
160
+ type: row[5],
161
+ status: row[6],
162
+ priority: row[7],
163
+ currentVersionId: row[8],
164
+ metadata: row[9],
165
+ createdAt: row[10],
166
+ updatedAt: row[11],
167
+ archivedAt: row[12]
168
+ };
169
+ });
170
+ }
171
+ exports.updateTestCaseQuery = `-- name: UpdateTestCase :one
172
+ UPDATE weave_v1.test_case
173
+ SET key = $1,
174
+ title = $2,
175
+ description = $3,
176
+ type = $4,
177
+ status = $5,
178
+ priority = $6,
179
+ metadata = $7,
180
+ updated_at = NOW()
181
+ WHERE id = $8
182
+ AND project_id = $9
183
+ RETURNING id, project_id, key, title, description, type, status, priority, current_version_id, metadata, created_at, updated_at, archived_at`;
184
+ async function updateTestCase(client, args) {
185
+ const result = await client.query({
186
+ text: exports.updateTestCaseQuery,
187
+ values: [args.key, args.title, args.description, args.type, args.status, args.priority, args.metadata, args.id, args.projectId],
188
+ rowMode: "array"
189
+ });
190
+ if (result.rows.length !== 1) {
191
+ return null;
192
+ }
193
+ const row = result.rows[0];
194
+ return {
195
+ id: row[0],
196
+ projectId: row[1],
197
+ key: row[2],
198
+ title: row[3],
199
+ description: row[4],
200
+ type: row[5],
201
+ status: row[6],
202
+ priority: row[7],
203
+ currentVersionId: row[8],
204
+ metadata: row[9],
205
+ createdAt: row[10],
206
+ updatedAt: row[11],
207
+ archivedAt: row[12]
208
+ };
209
+ }
210
+ exports.archiveTestCaseQuery = `-- name: ArchiveTestCase :one
211
+ UPDATE weave_v1.test_case
212
+ SET status = 'archived',
213
+ archived_at = NOW(),
214
+ updated_at = NOW()
215
+ WHERE id = $1
216
+ AND project_id = $2
217
+ RETURNING id, project_id, key, title, description, type, status, priority, current_version_id, metadata, created_at, updated_at, archived_at`;
218
+ async function archiveTestCase(client, args) {
219
+ const result = await client.query({
220
+ text: exports.archiveTestCaseQuery,
221
+ values: [args.id, args.projectId],
222
+ rowMode: "array"
223
+ });
224
+ if (result.rows.length !== 1) {
225
+ return null;
226
+ }
227
+ const row = result.rows[0];
228
+ return {
229
+ id: row[0],
230
+ projectId: row[1],
231
+ key: row[2],
232
+ title: row[3],
233
+ description: row[4],
234
+ type: row[5],
235
+ status: row[6],
236
+ priority: row[7],
237
+ currentVersionId: row[8],
238
+ metadata: row[9],
239
+ createdAt: row[10],
240
+ updatedAt: row[11],
241
+ archivedAt: row[12]
242
+ };
243
+ }
244
+ exports.deleteTestCaseQuery = `-- name: DeleteTestCase :exec
245
+ DELETE
246
+ FROM weave_v1.test_case
247
+ WHERE id = $1
248
+ AND project_id = $2`;
249
+ async function deleteTestCase(client, args) {
250
+ await client.query({
251
+ text: exports.deleteTestCaseQuery,
252
+ values: [args.id, args.projectId],
253
+ rowMode: "array"
254
+ });
255
+ }
256
+ exports.attachTestCaseToWorkflowQuery = `-- name: AttachTestCaseToWorkflow :one
257
+ INSERT INTO weave_v1.workflow_test_case (
258
+ project_id,
259
+ workflow_id,
260
+ test_case_id,
261
+ attached_by,
262
+ metadata
263
+ )
264
+ VALUES (
265
+ $1,
266
+ $2,
267
+ $3,
268
+ $4,
269
+ $5
270
+ )
271
+ ON CONFLICT (workflow_id, test_case_id) DO UPDATE
272
+ SET attached_by = EXCLUDED.attached_by,
273
+ metadata = EXCLUDED.metadata,
274
+ attached_at = NOW()
275
+ RETURNING project_id, workflow_id, test_case_id, attached_by, metadata, attached_at`;
276
+ async function attachTestCaseToWorkflow(client, args) {
277
+ const result = await client.query({
278
+ text: exports.attachTestCaseToWorkflowQuery,
279
+ values: [args.projectId, args.workflowId, args.testCaseId, args.attachedBy, args.metadata],
280
+ rowMode: "array"
281
+ });
282
+ if (result.rows.length !== 1) {
283
+ return null;
284
+ }
285
+ const row = result.rows[0];
286
+ return {
287
+ projectId: row[0],
288
+ workflowId: row[1],
289
+ testCaseId: row[2],
290
+ attachedBy: row[3],
291
+ metadata: row[4],
292
+ attachedAt: row[5]
293
+ };
294
+ }
295
+ exports.detachTestCaseFromWorkflowQuery = `-- name: DetachTestCaseFromWorkflow :exec
296
+ DELETE
297
+ FROM weave_v1.workflow_test_case
298
+ WHERE project_id = $1
299
+ AND workflow_id = $2
300
+ AND test_case_id = $3`;
301
+ async function detachTestCaseFromWorkflow(client, args) {
302
+ await client.query({
303
+ text: exports.detachTestCaseFromWorkflowQuery,
304
+ values: [args.projectId, args.workflowId, args.testCaseId],
305
+ rowMode: "array"
306
+ });
307
+ }
308
+ exports.listWorkflowTestCaseBindingsQuery = `-- name: ListWorkflowTestCaseBindings :many
309
+ SELECT project_id, workflow_id, test_case_id, attached_by, metadata, attached_at
310
+ FROM weave_v1.workflow_test_case
311
+ WHERE project_id = $1
312
+ AND workflow_id = $2
313
+ ORDER BY attached_at DESC
314
+ LIMIT $4
315
+ OFFSET $3`;
316
+ async function listWorkflowTestCaseBindings(client, args) {
317
+ const result = await client.query({
318
+ text: exports.listWorkflowTestCaseBindingsQuery,
319
+ values: [args.projectId, args.workflowId, args.pageOffset, args.pageSize],
320
+ rowMode: "array"
321
+ });
322
+ return result.rows.map(row => {
323
+ return {
324
+ projectId: row[0],
325
+ workflowId: row[1],
326
+ testCaseId: row[2],
327
+ attachedBy: row[3],
328
+ metadata: row[4],
329
+ attachedAt: row[5]
330
+ };
331
+ });
332
+ }
333
+ exports.createTestCaseVersionQuery = `-- name: CreateTestCaseVersion :one
334
+ INSERT INTO weave_v1.test_case_version (
335
+ id,
336
+ test_case_id,
337
+ version_number,
338
+ objective,
339
+ preconditions,
340
+ steps,
341
+ expected_results,
342
+ metadata,
343
+ prompt_version
344
+ )
345
+ VALUES (
346
+ $1,
347
+ $2,
348
+ $3,
349
+ $4,
350
+ $5,
351
+ $6,
352
+ $7,
353
+ $8,
354
+ $9
355
+ )
356
+ RETURNING id, test_case_id, version_number, objective, preconditions, steps, expected_results, metadata, prompt_version, created_at`;
357
+ async function createTestCaseVersion(client, args) {
358
+ const result = await client.query({
359
+ text: exports.createTestCaseVersionQuery,
360
+ values: [args.id, args.testCaseId, args.versionNumber, args.objective, args.preconditions, args.steps, args.expectedResults, args.metadata, args.promptVersion],
361
+ rowMode: "array"
362
+ });
363
+ if (result.rows.length !== 1) {
364
+ return null;
365
+ }
366
+ const row = result.rows[0];
367
+ return {
368
+ id: row[0],
369
+ testCaseId: row[1],
370
+ versionNumber: row[2],
371
+ objective: row[3],
372
+ preconditions: row[4],
373
+ steps: row[5],
374
+ expectedResults: row[6],
375
+ metadata: row[7],
376
+ promptVersion: row[8],
377
+ createdAt: row[9]
378
+ };
379
+ }
380
+ exports.getTestCaseVersionQuery = `-- name: GetTestCaseVersion :one
381
+ SELECT cv.id, cv.test_case_id, cv.version_number, cv.objective, cv.preconditions, cv.steps, cv.expected_results, cv.metadata, cv.prompt_version, cv.created_at
382
+ FROM weave_v1.test_case_version cv
383
+ INNER JOIN weave_v1.test_case c ON c.id = cv.test_case_id
384
+ WHERE cv.id = $1
385
+ AND cv.test_case_id = $2
386
+ AND c.project_id = $3`;
387
+ async function getTestCaseVersion(client, args) {
388
+ const result = await client.query({
389
+ text: exports.getTestCaseVersionQuery,
390
+ values: [args.id, args.testCaseId, args.projectId],
391
+ rowMode: "array"
392
+ });
393
+ if (result.rows.length !== 1) {
394
+ return null;
395
+ }
396
+ const row = result.rows[0];
397
+ return {
398
+ id: row[0],
399
+ testCaseId: row[1],
400
+ versionNumber: row[2],
401
+ objective: row[3],
402
+ preconditions: row[4],
403
+ steps: row[5],
404
+ expectedResults: row[6],
405
+ metadata: row[7],
406
+ promptVersion: row[8],
407
+ createdAt: row[9]
408
+ };
409
+ }
410
+ exports.listTestCaseVersionsQuery = `-- name: ListTestCaseVersions :many
411
+ SELECT cv.id, cv.test_case_id, cv.version_number, cv.objective, cv.preconditions, cv.steps, cv.expected_results, cv.metadata, cv.prompt_version, cv.created_at
412
+ FROM weave_v1.test_case_version cv
413
+ INNER JOIN weave_v1.test_case c ON c.id = cv.test_case_id
414
+ WHERE cv.test_case_id = $1
415
+ AND c.project_id = $2
416
+ ORDER BY cv.version_number DESC
417
+ LIMIT $4
418
+ OFFSET $3`;
419
+ async function listTestCaseVersions(client, args) {
420
+ const result = await client.query({
421
+ text: exports.listTestCaseVersionsQuery,
422
+ values: [args.testCaseId, args.projectId, args.pageOffset, args.pageSize],
423
+ rowMode: "array"
424
+ });
425
+ return result.rows.map(row => {
426
+ return {
427
+ id: row[0],
428
+ testCaseId: row[1],
429
+ versionNumber: row[2],
430
+ objective: row[3],
431
+ preconditions: row[4],
432
+ steps: row[5],
433
+ expectedResults: row[6],
434
+ metadata: row[7],
435
+ promptVersion: row[8],
436
+ createdAt: row[9]
437
+ };
438
+ });
439
+ }
440
+ exports.getNextTestCaseVersionNumberQuery = `-- name: GetNextTestCaseVersionNumber :one
441
+ SELECT COALESCE(MAX(version_number), 0)::INTEGER + 1 AS version_number
442
+ FROM weave_v1.test_case_version
443
+ WHERE test_case_id = $1`;
444
+ async function getNextTestCaseVersionNumber(client, args) {
445
+ const result = await client.query({
446
+ text: exports.getNextTestCaseVersionNumberQuery,
447
+ values: [args.testCaseId],
448
+ rowMode: "array"
449
+ });
450
+ if (result.rows.length !== 1) {
451
+ return null;
452
+ }
453
+ const row = result.rows[0];
454
+ return {
455
+ versionNumber: row[0]
456
+ };
457
+ }
458
+ exports.setCurrentTestCaseVersionQuery = `-- name: SetCurrentTestCaseVersion :one
459
+ UPDATE weave_v1.test_case
460
+ SET current_version_id = $1,
461
+ updated_at = NOW()
462
+ WHERE id = $2
463
+ AND project_id = $3
464
+ RETURNING id, project_id, key, title, description, type, status, priority, current_version_id, metadata, created_at, updated_at, archived_at`;
465
+ async function setCurrentTestCaseVersion(client, args) {
466
+ const result = await client.query({
467
+ text: exports.setCurrentTestCaseVersionQuery,
468
+ values: [args.currentVersionId, args.id, args.projectId],
469
+ rowMode: "array"
470
+ });
471
+ if (result.rows.length !== 1) {
472
+ return null;
473
+ }
474
+ const row = result.rows[0];
475
+ return {
476
+ id: row[0],
477
+ projectId: row[1],
478
+ key: row[2],
479
+ title: row[3],
480
+ description: row[4],
481
+ type: row[5],
482
+ status: row[6],
483
+ priority: row[7],
484
+ currentVersionId: row[8],
485
+ metadata: row[9],
486
+ createdAt: row[10],
487
+ updatedAt: row[11],
488
+ archivedAt: row[12]
489
+ };
490
+ }
491
+ exports.upsertTestCaseRequirementLinkQuery = `-- name: UpsertTestCaseRequirementLink :one
492
+ INSERT INTO weave_v1.test_case_requirement (
493
+ test_case_id,
494
+ requirement_id,
495
+ coverage_type,
496
+ confidence
497
+ )
498
+ VALUES (
499
+ $1,
500
+ $2,
501
+ $3,
502
+ $4
503
+ )
504
+ ON CONFLICT (test_case_id, requirement_id) DO UPDATE
505
+ SET coverage_type = EXCLUDED.coverage_type,
506
+ confidence = EXCLUDED.confidence
507
+ RETURNING test_case_id, requirement_id, coverage_type, confidence, created_at`;
508
+ async function upsertTestCaseRequirementLink(client, args) {
509
+ const result = await client.query({
510
+ text: exports.upsertTestCaseRequirementLinkQuery,
511
+ values: [args.testCaseId, args.requirementId, args.coverageType, args.confidence],
512
+ rowMode: "array"
513
+ });
514
+ if (result.rows.length !== 1) {
515
+ return null;
516
+ }
517
+ const row = result.rows[0];
518
+ return {
519
+ testCaseId: row[0],
520
+ requirementId: row[1],
521
+ coverageType: row[2],
522
+ confidence: row[3],
523
+ createdAt: row[4]
524
+ };
525
+ }
526
+ exports.deleteTestCaseRequirementLinkQuery = `-- name: DeleteTestCaseRequirementLink :exec
527
+ DELETE
528
+ FROM weave_v1.test_case_requirement cr
529
+ USING weave_v1.test_case c
530
+ WHERE cr.test_case_id = $1
531
+ AND cr.requirement_id = $2
532
+ AND cr.test_case_id = c.id
533
+ AND c.project_id = $3`;
534
+ async function deleteTestCaseRequirementLink(client, args) {
535
+ await client.query({
536
+ text: exports.deleteTestCaseRequirementLinkQuery,
537
+ values: [args.testCaseId, args.requirementId, args.projectId],
538
+ rowMode: "array"
539
+ });
540
+ }
541
+ exports.listTestCaseRequirementLinksQuery = `-- name: ListTestCaseRequirementLinks :many
542
+ SELECT cr.test_case_id, cr.requirement_id, cr.coverage_type, cr.confidence, cr.created_at
543
+ FROM weave_v1.test_case_requirement cr
544
+ INNER JOIN weave_v1.test_case c ON c.id = cr.test_case_id
545
+ WHERE cr.test_case_id = $1
546
+ AND c.project_id = $2
547
+ ORDER BY cr.created_at DESC`;
548
+ async function listTestCaseRequirementLinks(client, args) {
549
+ const result = await client.query({
550
+ text: exports.listTestCaseRequirementLinksQuery,
551
+ values: [args.testCaseId, args.projectId],
552
+ rowMode: "array"
553
+ });
554
+ return result.rows.map(row => {
555
+ return {
556
+ testCaseId: row[0],
557
+ requirementId: row[1],
558
+ coverageType: row[2],
559
+ confidence: row[3],
560
+ createdAt: row[4]
561
+ };
562
+ });
563
+ }