@creative-introvert/tons-of-tests 0.9.0 → 1.0.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 (103) hide show
  1. package/README.md +78 -12
  2. package/dist/cjs/Classify.js +33 -2
  3. package/dist/cjs/Classify.js.map +1 -1
  4. package/dist/cjs/RepositoryError.js +45 -0
  5. package/dist/cjs/RepositoryError.js.map +1 -0
  6. package/dist/cjs/Test.js +2 -1
  7. package/dist/cjs/Test.js.map +1 -1
  8. package/dist/cjs/Test.repository.js +32 -6
  9. package/dist/cjs/Test.repository.js.map +1 -1
  10. package/dist/cjs/Test.repository.types.js +14 -0
  11. package/dist/cjs/Test.repository.types.js.map +1 -0
  12. package/dist/cjs/index.js +1 -1
  13. package/dist/cjs/internal/Classify.js +4 -32
  14. package/dist/cjs/internal/Classify.js.map +1 -1
  15. package/dist/cjs/internal/Classify.spec.js +223 -0
  16. package/dist/cjs/internal/Classify.spec.js.map +1 -0
  17. package/dist/cjs/internal/Test.js +61 -29
  18. package/dist/cjs/internal/Test.js.map +1 -1
  19. package/dist/cjs/internal/Test.repository.sqlite.js +172 -121
  20. package/dist/cjs/internal/Test.repository.sqlite.js.map +1 -1
  21. package/dist/cjs/internal/Test.repository.sqlite.spec.js +263 -170
  22. package/dist/cjs/internal/Test.repository.sqlite.spec.js.map +1 -1
  23. package/dist/cjs/internal/Test.spec.js +205 -0
  24. package/dist/cjs/internal/Test.spec.js.map +1 -0
  25. package/dist/cjs/internal/format-diff.spec.js +22 -16
  26. package/dist/cjs/internal/format-diff.spec.js.map +1 -1
  27. package/dist/cjs/internal/summarize.js.map +1 -1
  28. package/dist/cjs/pack.js.map +1 -1
  29. package/dist/dts/Classify.d.ts +58 -24
  30. package/dist/dts/Classify.d.ts.map +1 -1
  31. package/dist/dts/Error.d.ts +1 -1
  32. package/dist/dts/RepositoryError.d.ts +40 -0
  33. package/dist/dts/RepositoryError.d.ts.map +1 -0
  34. package/dist/dts/Test.d.ts +8 -1
  35. package/dist/dts/Test.d.ts.map +1 -1
  36. package/dist/dts/Test.repository.d.ts +11 -55
  37. package/dist/dts/Test.repository.d.ts.map +1 -1
  38. package/dist/dts/Test.repository.types.d.ts +66 -0
  39. package/dist/dts/Test.repository.types.d.ts.map +1 -0
  40. package/dist/dts/index.d.ts +1 -1
  41. package/dist/dts/index.d.ts.map +1 -1
  42. package/dist/dts/internal/Classify.d.ts +14 -23
  43. package/dist/dts/internal/Classify.d.ts.map +1 -1
  44. package/dist/dts/internal/Classify.spec.d.ts +2 -0
  45. package/dist/dts/internal/Classify.spec.d.ts.map +1 -0
  46. package/dist/dts/internal/Test.d.ts +3 -3
  47. package/dist/dts/internal/Test.d.ts.map +1 -1
  48. package/dist/dts/internal/Test.repository.sqlite.d.ts +9 -12
  49. package/dist/dts/internal/Test.repository.sqlite.d.ts.map +1 -1
  50. package/dist/dts/internal/Test.spec.d.ts +2 -0
  51. package/dist/dts/internal/Test.spec.d.ts.map +1 -0
  52. package/dist/dts/internal/common.d.ts +1 -1
  53. package/dist/dts/internal/common.d.ts.map +1 -1
  54. package/dist/dts/internal/diff.d.ts.map +1 -1
  55. package/dist/dts/internal/format-diff.d.ts.map +1 -1
  56. package/dist/dts/internal/lib/Schema.d.ts.map +1 -1
  57. package/dist/dts/internal/lib/jsondiffpatch/contexts/context.d.ts.map +1 -1
  58. package/dist/dts/internal/lib/jsondiffpatch/contexts/diff.d.ts.map +1 -1
  59. package/dist/dts/internal/lib/jsondiffpatch/contexts/patch.d.ts.map +1 -1
  60. package/dist/dts/internal/lib/jsondiffpatch/contexts/reverse.d.ts.map +1 -1
  61. package/dist/dts/internal/lib/jsondiffpatch/diffpatcher.d.ts.map +1 -1
  62. package/dist/dts/internal/lib/jsondiffpatch/filters/lcs.d.ts.map +1 -1
  63. package/dist/dts/internal/lib/jsondiffpatch/formatters/annotated.d.ts.map +1 -1
  64. package/dist/dts/internal/lib/jsondiffpatch/formatters/base.d.ts +1 -1
  65. package/dist/dts/internal/lib/jsondiffpatch/formatters/base.d.ts.map +1 -1
  66. package/dist/dts/internal/lib/jsondiffpatch/formatters/html.d.ts.map +1 -1
  67. package/dist/dts/internal/lib/jsondiffpatch/formatters/jsonpatch.d.ts.map +1 -1
  68. package/dist/dts/internal/lib/jsondiffpatch/pipe.d.ts.map +1 -1
  69. package/dist/dts/internal/lib/jsondiffpatch/processor.d.ts +1 -1
  70. package/dist/dts/internal/lib/jsondiffpatch/processor.d.ts.map +1 -1
  71. package/dist/dts/internal/pack.d.ts.map +1 -1
  72. package/dist/dts/internal/stats.d.ts +1 -1
  73. package/dist/dts/internal/stats.d.ts.map +1 -1
  74. package/dist/dts/internal/summarize.d.ts +2 -2
  75. package/dist/dts/internal/summarize.d.ts.map +1 -1
  76. package/dist/esm/Classify.js +33 -2
  77. package/dist/esm/Classify.js.map +1 -1
  78. package/dist/esm/RepositoryError.js +45 -0
  79. package/dist/esm/RepositoryError.js.map +1 -0
  80. package/dist/esm/Test.js +2 -1
  81. package/dist/esm/Test.js.map +1 -1
  82. package/dist/esm/Test.repository.js +32 -6
  83. package/dist/esm/Test.repository.js.map +1 -1
  84. package/dist/esm/Test.repository.types.js +14 -0
  85. package/dist/esm/Test.repository.types.js.map +1 -0
  86. package/dist/esm/index.js +1 -1
  87. package/dist/esm/internal/Classify.js +4 -32
  88. package/dist/esm/internal/Classify.js.map +1 -1
  89. package/dist/esm/internal/Classify.spec.js +204 -0
  90. package/dist/esm/internal/Classify.spec.js.map +1 -0
  91. package/dist/esm/internal/Test.js +61 -29
  92. package/dist/esm/internal/Test.js.map +1 -1
  93. package/dist/esm/internal/Test.repository.sqlite.js +172 -121
  94. package/dist/esm/internal/Test.repository.sqlite.js.map +1 -1
  95. package/dist/esm/internal/Test.repository.sqlite.spec.js +263 -170
  96. package/dist/esm/internal/Test.repository.sqlite.spec.js.map +1 -1
  97. package/dist/esm/internal/Test.spec.js +186 -0
  98. package/dist/esm/internal/Test.spec.js.map +1 -0
  99. package/dist/esm/internal/format-diff.spec.js +22 -16
  100. package/dist/esm/internal/format-diff.spec.js.map +1 -1
  101. package/dist/esm/internal/summarize.js.map +1 -1
  102. package/dist/esm/pack.js.map +1 -1
  103. package/package.json +7 -7
@@ -3,10 +3,18 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.tables = exports.makeSqliteLiveLayer = exports.TestRepository = exports.SqliteTestLayer = exports.LiveLayer = void 0;
7
- var Sql = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect/sql"));
8
- var Sqlite = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect/sql-sqlite-node"));
6
+ Object.defineProperty(exports, "TestRepository", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _TestRepository.TestRepository;
10
+ }
11
+ });
12
+ exports.tables = exports.makeTestRepository = void 0;
13
+ var SqlClient = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect/sql/SqlClient"));
9
14
  var _effect = /*#__PURE__*/require("effect");
15
+ var _TestRepository = /*#__PURE__*/require("../Test.repository.js");
16
+ var _TestRepositoryTypes = /*#__PURE__*/require("../Test.repository.types.js");
17
+ var _RepositoryError = /*#__PURE__*/require("../RepositoryError.js");
10
18
  var _Classify = /*#__PURE__*/require("./Classify.js");
11
19
  var _Schema = /*#__PURE__*/require("./lib/Schema.js");
12
20
  function _interopRequireWildcard(e, t) {
@@ -45,13 +53,7 @@ const TestResultWriteSchema = /*#__PURE__*/_effect.Schema.Struct({
45
53
  tags: /*#__PURE__*/(0, _Schema.split)(','),
46
54
  timeMillis: _effect.Schema.Number
47
55
  });
48
- const TestResultsSchema = /*#__PURE__*/TestResultWriteSchema.pipe(_effect.Schema.Array);
49
- const TestRunReadSchema = /*#__PURE__*/_effect.Schema.Struct({
50
- id: _effect.Schema.Int,
51
- name: _effect.Schema.String,
52
- // TODO: Is this a hash, or uuid?
53
- hash: /*#__PURE__*/_effect.Schema.String.pipe(_effect.Schema.NullOr)
54
- });
56
+ const TestResultsSchema = /*#__PURE__*/_effect.Schema.Array(TestResultWriteSchema);
55
57
  const CountSchema = /*#__PURE__*/_effect.Schema.Tuple(_effect.Schema.Struct({
56
58
  count: _effect.Schema.Int
57
59
  })).pipe(/*#__PURE__*/_effect.Schema.transform(_effect.Schema.Int, {
@@ -62,29 +64,29 @@ const CountSchema = /*#__PURE__*/_effect.Schema.Tuple(_effect.Schema.Struct({
62
64
  count
63
65
  }]
64
66
  }));
65
- const TestRunsReadSchema = /*#__PURE__*/TestRunReadSchema.pipe(_effect.Schema.Array);
66
- const CurrentTestRunSchema = /*#__PURE__*/_effect.Schema.Tuple(TestRunReadSchema).pipe(/*#__PURE__*/_effect.Schema.transform(TestRunReadSchema, {
67
- encode: _ => [_],
68
- decode: ([_]) => _
69
- }));
70
- const TestRunResultsSchema = /*#__PURE__*/_effect.Schema.Struct({
67
+ const TestRunsReadSchema = /*#__PURE__*/_effect.Schema.Array(_TestRepositoryTypes.TestRun);
68
+ const TestRunResultsSchema = /*#__PURE__*/_effect.Schema.Array(/*#__PURE__*/_effect.Schema.Struct({
71
69
  testRun: _effect.Schema.Int,
72
70
  testResult: _effect.Schema.String
73
- }).pipe(_effect.Schema.Array);
74
- // FIXME: Effect.tag
75
- const TestRepository = exports.TestRepository = /*#__PURE__*/_effect.Context.GenericTag('TestRunRepository');
76
- const makeTestRepository = /*#__PURE__*/_effect.Effect.gen(function* () {
77
- const sql = yield* Sql.SqlClient.SqlClient;
71
+ }));
72
+ const makeTestRepository = exports.makeTestRepository = /*#__PURE__*/_effect.Effect.gen(function* () {
73
+ const sql = yield* SqlClient.SqlClient;
78
74
  yield* sql`PRAGMA auto_vacuum = FULL;`;
79
75
  yield* sql`
80
76
  CREATE TABLE IF NOT EXISTS ${sql(tables.testRuns)}(
81
77
  id INTEGER PRIMARY KEY AUTOINCREMENT,
82
78
  name TEXT NOT NULL,
83
- hash TEXT,
84
- UNIQUE (id, name, hash)
79
+ hash TEXT
85
80
  );
86
81
  `;
87
82
  yield* sql`CREATE INDEX IF NOT EXISTS idx_name_hash ON ${sql(tables.testRuns)}(name, hash)`;
83
+ // At most one "current" (hash IS NULL) row per suite name. Partial index
84
+ // so committed rows are unaffected.
85
+ yield* sql`
86
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_current_per_name
87
+ ON ${sql(tables.testRuns)}(name)
88
+ WHERE hash IS NULL;
89
+ `;
88
90
  yield* sql`
89
91
  CREATE TABLE IF NOT EXISTS ${sql(tables.testResults)}(
90
92
  id TEXT PRIMARY KEY,
@@ -107,42 +109,82 @@ const makeTestRepository = /*#__PURE__*/_effect.Effect.gen(function* () {
107
109
  UNIQUE (testRun, testResult)
108
110
  );
109
111
  `;
110
- /** Assumes that a `TestRun` with hash=null exists. */
111
- const insertTestResult = (testResult, name) => sql.withTransaction(_effect.Effect.gen(function* () {
112
- const encoded = yield* _effect.Schema.encode(TestResultWriteSchema)(testResult);
113
- yield* sql`
114
- INSERT INTO ${sql(tables.testResults)}
115
- ${sql.insert(encoded)}
116
- ON CONFLICT(id) DO NOTHING;
117
- `;
118
- yield* sql`
119
- INSERT INTO ${sql(tables.testRunResults)}
120
- VALUES (
121
- (
122
- SELECT id FROM ${sql(tables.testRuns)}
123
- WHERE hash IS NULL AND name = ${name}
124
- ),
125
- ${encoded.id}
126
- )
127
- ON CONFLICT(testRun, testResult) DO NOTHING;
128
- `;
129
- }));
130
- const getTestResultsStream = testRun => _effect.Effect.gen(function* () {
131
- const raw = yield* sql`
132
- SELECT res.* FROM ${sql(tables.testResults)} res
133
- JOIN ${sql(tables.testRunResults)} runres ON res.id = runres.testResult
134
- JOIN ${sql(tables.testRuns)} runs ON runs.id = runres.testRun
135
- WHERE runs.id = ${testRun.id}
136
- ORDER BY ordering ASC;
137
- `;
138
- return yield* _effect.Schema.decode(TestResultsSchema)(raw);
139
- }).pipe(_effect.Stream.fromIterableEffect);
112
+ // Lookup by the junction's `testResult` column: the existing
113
+ // UNIQUE(testRun, testResult) index is keyed on testRun first, so orphan
114
+ // cleanup (`... NOT IN (SELECT testResult ...)`) and stream joins
115
+ // (`res.id = runres.testResult`) would otherwise full-scan the junction.
116
+ yield* sql`CREATE INDEX IF NOT EXISTS idx_trr_testresult ON ${sql(tables.testRunResults)}(testResult)`;
117
+ yield* sql`CREATE INDEX IF NOT EXISTS idx_tr_hashtestcase ON ${sql(tables.testResults)}(hashTestCase)`;
118
+ // SQLite's default SQLITE_MAX_VARIABLE_NUMBER is 999; testResults has 9
119
+ // columns and junction rows 2, so 50 rows stays well under the limit.
120
+ const INSERT_BATCH_SIZE = 50;
121
+ const insertTestResults = (testResults, testRun) => sql.withTransaction(_effect.Effect.gen(function* () {
122
+ if (testResults.length === 0) return;
123
+ const encoded = yield* _effect.Effect.forEach(testResults, _ => _effect.Schema.encode(TestResultWriteSchema)(_).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('insertTestResults'))));
124
+ for (let i = 0; i < encoded.length; i += INSERT_BATCH_SIZE) {
125
+ const chunk = encoded.slice(i, i + INSERT_BATCH_SIZE);
126
+ yield* sql`
127
+ INSERT INTO ${sql(tables.testResults)}
128
+ ${sql.insert(chunk)}
129
+ ON CONFLICT(id) DO NOTHING;
130
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('insertTestResults')));
131
+ }
132
+ // Junction rows reference the resolved testRun.id directly,
133
+ // so no correlated subquery.
134
+ const junction = encoded.map(_ => ({
135
+ testRun: testRun.id,
136
+ testResult: _.id
137
+ }));
138
+ for (let i = 0; i < junction.length; i += INSERT_BATCH_SIZE) {
139
+ const chunk = junction.slice(i, i + INSERT_BATCH_SIZE);
140
+ yield* sql`
141
+ INSERT INTO ${sql(tables.testRunResults)}
142
+ ${sql.insert(chunk)}
143
+ ON CONFLICT(testRun, testResult) DO NOTHING;
144
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('insertTestResults')));
145
+ }
146
+ })).pipe(_effect.Effect.catchTag('SqlError', e => _effect.Effect.fail(_RepositoryError.RepositoryWriteError.from('insertTestResults')(e))));
147
+ const insertTestResult = (testResult, testRun) => insertTestResults([testResult], testRun);
148
+ const makeTestResultSchema = schemas => {
149
+ const input = schemas?.input ?? _effect.Schema.Unknown;
150
+ const result = schemas?.result ?? _effect.Schema.Unknown;
151
+ const expected = schemas?.expected ?? _effect.Schema.Unknown;
152
+ return _effect.Schema.Struct({
153
+ id: _effect.Schema.String,
154
+ hashTestCase: _effect.Schema.String,
155
+ ordering: _effect.Schema.Int,
156
+ input: _effect.Schema.parseJson(input),
157
+ result: _effect.Schema.parseJson(result),
158
+ expected: _effect.Schema.parseJson(expected),
159
+ label: _Classify.LabelSchema,
160
+ tags: (0, _Schema.split)(','),
161
+ timeMillis: _effect.Schema.Number
162
+ });
163
+ };
164
+ const getTestResultsStream = (testRun, schemas) => {
165
+ const RowSchema = makeTestResultSchema(schemas);
166
+ const RowsSchema = _effect.Schema.Array(RowSchema);
167
+ // better-sqlite3 is synchronous and doesn't expose a cursor, so the
168
+ // full result set is materialised before emission. Decoding once in
169
+ // bulk avoids fiber-per-row overhead from `Stream.mapEffect`.
170
+ return _effect.Stream.unwrap(_effect.Effect.gen(function* () {
171
+ const rows = yield* sql`
172
+ SELECT res.* FROM ${sql(tables.testResults)} res
173
+ JOIN ${sql(tables.testRunResults)} runres ON res.id = runres.testResult
174
+ JOIN ${sql(tables.testRuns)} runs ON runs.id = runres.testRun
175
+ WHERE runs.id = ${testRun.id}
176
+ ORDER BY ordering ASC;
177
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('getTestResultsStream')));
178
+ const decoded = yield* _effect.Schema.decodeUnknown(RowsSchema)(rows).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('getTestResultsStream')));
179
+ return _effect.Stream.fromIterable(decoded);
180
+ }));
181
+ };
140
182
  const hasResults = testRun => _effect.Effect.gen(function* () {
141
183
  const b = yield* sql`
142
184
  SELECT COUNT(*) count FROM ${sql(tables.testRunResults)}
143
185
  WHERE testRun = ${testRun.id};
144
- `;
145
- const r = yield* _effect.Schema.decodeUnknown(CountSchema)(b);
186
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('hasResults')));
187
+ const r = yield* _effect.Schema.decodeUnknown(CountSchema)(b).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('hasResults')));
146
188
  return r > 0;
147
189
  });
148
190
  const getPreviousTestRun = name => _effect.Effect.gen(function* () {
@@ -151,66 +193,75 @@ const makeTestRepository = /*#__PURE__*/_effect.Effect.gen(function* () {
151
193
  WHERE hash IS NOT NULL AND name = ${name}
152
194
  ORDER BY id DESC
153
195
  LIMIT 1;
154
- `;
155
- const p = yield* _effect.Schema.decode(TestRunsReadSchema)(r);
196
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('getPreviousTestRun')));
197
+ const p = yield* _effect.Schema.decodeUnknown(TestRunsReadSchema)(r).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('getPreviousTestRun')));
156
198
  return _effect.Array.head(p);
157
199
  });
158
200
  const getAllTestRuns = _effect.Effect.gen(function* () {
159
201
  const results = yield* sql`
160
- SELECT * from ${sql(tables.testRuns)};
161
- `;
162
- return yield* _effect.Schema.decode(TestRunsReadSchema)(results);
202
+ SELECT * from ${sql(tables.testRuns)};
203
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('getAllTestRuns')));
204
+ return yield* _effect.Schema.decodeUnknown(TestRunsReadSchema)(results).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('getAllTestRuns')));
163
205
  });
164
206
  const getAllTestRunResults = _effect.Effect.gen(function* () {
165
207
  const results = yield* sql`
166
- SELECT * from ${sql(tables.testRunResults)};
167
- `;
168
- return yield* _effect.Schema.decode(TestRunResultsSchema)(results);
208
+ SELECT * from ${sql(tables.testRunResults)};
209
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('getAllTestRunResults')));
210
+ return yield* _effect.Schema.decodeUnknown(TestRunResultsSchema)(results).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('getAllTestRunResults')));
169
211
  });
170
212
  const getAllTestResults = _effect.Effect.gen(function* () {
171
213
  const results = yield* sql`
172
- SELECT * from ${sql(tables.testResults)};
173
- `;
174
- return yield* _effect.Schema.decode(TestResultsSchema)(results);
214
+ SELECT * from ${sql(tables.testResults)};
215
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('getAllTestResults')));
216
+ return yield* _effect.Schema.decodeUnknown(TestResultsSchema)(results).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('getAllTestResults')));
175
217
  });
176
- const getLastTestRunHash = name => _effect.Effect.gen(function* () {
177
- const current = yield* sql`
178
- SELECT *
179
- FROM ${sql(tables.testRuns)}
180
- WHERE hash IS NOT NULL AND name = ${name}
181
- ORDER BY id DESC
182
- LIMIT 1;
183
- `;
184
- return current;
185
- }).pipe(_effect.Effect.map((0, _effect.flow)(_effect.Array.get(0), _effect.Option.flatMap(_ => _effect.Option.fromNullable(_.hash)))));
186
- const getOrCreateCurrentTestRun = name => _effect.Effect.gen(function* () {
187
- const current = yield* sql`
188
- SELECT *
189
- FROM ${sql(tables.testRuns)}
190
- WHERE hash IS NULL AND name = ${name};
191
- `;
192
- if (current.length === 0) {
193
- return yield* sql`
218
+ const getLastTestRunHash = name => sql`
219
+ SELECT *
220
+ FROM ${sql(tables.testRuns)}
221
+ WHERE hash IS NOT NULL AND name = ${name}
222
+ ORDER BY id DESC
223
+ LIMIT 1;
224
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('getLastTestRunHash')), _effect.Effect.map((0, _effect.flow)(_effect.Array.get(0), _effect.Option.flatMap(_ => _effect.Option.fromNullable(_.hash)))));
225
+ const getOrCreateCurrentTestRun = name => sql.withTransaction(_effect.Effect.gen(function* () {
226
+ const currentRaw = yield* sql`
227
+ SELECT *
228
+ FROM ${sql(tables.testRuns)}
229
+ WHERE hash IS NULL AND name = ${name}
230
+ ORDER BY id DESC
231
+ LIMIT 1;
232
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('getOrCreateCurrentTestRun')));
233
+ const current = yield* _effect.Schema.decodeUnknown(TestRunsReadSchema)(currentRaw).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('getOrCreateCurrentTestRun')));
234
+ const existing = _effect.Array.head(current);
235
+ if (_effect.Option.isSome(existing)) {
236
+ return existing.value;
237
+ }
238
+ const insertedRaw = yield* sql`
194
239
  INSERT INTO ${sql(tables.testRuns)}
195
240
  ${sql.insert({
196
- name
197
- })}
241
+ name
242
+ })}
198
243
  RETURNING *;
199
- `;
200
- }
201
- return current;
202
- }).pipe(_effect.Effect.map((0, _effect.flow)(_effect.Array.head, _effect.Option.getOrThrow)));
244
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('getOrCreateCurrentTestRun')));
245
+ const inserted = yield* _effect.Schema.decodeUnknown(TestRunsReadSchema)(insertedRaw).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('getOrCreateCurrentTestRun')));
246
+ return yield* _effect.Array.head(inserted).pipe(_effect.Option.match({
247
+ onNone: () => _effect.Effect.fail(new _RepositoryError.TestRunNotCreated({
248
+ name
249
+ })),
250
+ onSome: _effect.Effect.succeed
251
+ }));
252
+ })).pipe(_effect.Effect.catchTag('SqlError', e => _effect.Effect.fail(_RepositoryError.RepositoryQueryError.fromSql('getOrCreateCurrentTestRun')(e))));
203
253
  const clearStale = ({
204
254
  name,
205
255
  keep = 1
206
256
  }) => sql.withTransaction(_effect.Effect.gen(function* () {
207
- const staleTestRuns = yield* _effect.Schema.decode(TestRunsReadSchema)(yield* sql`
208
- SELECT *
209
- FROM ${sql(tables.testRuns)}
210
- WHERE hash IS NOT NULL AND name = ${name}
211
- ORDER BY id DESC
212
- LIMIT -1 OFFSET ${keep};
213
- `);
257
+ const raw = yield* sql`
258
+ SELECT *
259
+ FROM ${sql(tables.testRuns)}
260
+ WHERE hash IS NOT NULL AND name = ${name}
261
+ ORDER BY id DESC
262
+ LIMIT -1 OFFSET ${keep};
263
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('clearStale')));
264
+ const staleTestRuns = yield* _effect.Schema.decodeUnknown(TestRunsReadSchema)(raw).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('clearStale')));
214
265
  if (staleTestRuns.length === 0) {
215
266
  return;
216
267
  }
@@ -218,38 +269,45 @@ const makeTestRepository = /*#__PURE__*/_effect.Effect.gen(function* () {
218
269
  yield* sql`
219
270
  DELETE FROM ${sql(tables.testRunResults)}
220
271
  WHERE testRun IN ${sql.in(ids)};
221
- `;
272
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('clearStale')));
222
273
  yield* sql`
223
274
  DELETE FROM ${sql(tables.testRuns)}
224
275
  WHERE id IN ${sql.in(ids)};
225
- `;
276
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('clearStale')));
226
277
  yield* sql`
227
278
  DELETE FROM ${sql(tables.testResults)}
228
279
  WHERE id NOT IN (
229
280
  SELECT DISTINCT testResult FROM ${sql(tables.testRunResults)}
230
281
  );
231
- `;
282
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('clearStale')));
232
283
  yield* _effect.Console.log('Cleared stale test runs.');
233
- }));
284
+ })).pipe(_effect.Effect.catchTag('SqlError', e => _effect.Effect.fail(_RepositoryError.RepositoryWriteError.from('clearStale')(e))));
234
285
  const clearUncommitedTestResults = ({
235
286
  name
236
287
  }) => sql.withTransaction(_effect.Effect.gen(function* () {
237
- const currentTestRun = yield* _effect.Schema.decodeUnknown(CurrentTestRunSchema)(yield* sql`
238
- SELECT *
239
- FROM ${sql(tables.testRuns)}
240
- WHERE hash IS NULL AND name = ${name};
241
- `);
288
+ const currentRaw = yield* sql`
289
+ SELECT *
290
+ FROM ${sql(tables.testRuns)}
291
+ WHERE hash IS NULL AND name = ${name}
292
+ ORDER BY id DESC
293
+ LIMIT 1;
294
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('clearUncommitedTestResults')));
295
+ const current = yield* _effect.Schema.decodeUnknown(TestRunsReadSchema)(currentRaw).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('clearUncommitedTestResults')));
296
+ const currentTestRun = _effect.Array.head(current);
297
+ if (_effect.Option.isNone(currentTestRun)) {
298
+ return;
299
+ }
242
300
  yield* sql`
243
301
  DELETE FROM ${sql(tables.testRunResults)}
244
- WHERE testRun = ${currentTestRun.id};
245
- `;
302
+ WHERE testRun = ${currentTestRun.value.id};
303
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('clearUncommitedTestResults')));
246
304
  yield* sql`
247
305
  DELETE FROM ${sql(tables.testResults)}
248
306
  WHERE id NOT IN (
249
307
  SELECT DISTINCT testResult FROM ${sql(tables.testRunResults)}
250
308
  );
251
- `;
252
- }));
309
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('clearUncommitedTestResults')));
310
+ })).pipe(_effect.Effect.catchTag('SqlError', e => _effect.Effect.fail(_RepositoryError.RepositoryWriteError.from('clearUncommitedTestResults')(e))));
253
311
  const commitCurrentTestRun = ({
254
312
  name,
255
313
  hash
@@ -261,7 +319,7 @@ const makeTestRepository = /*#__PURE__*/_effect.Effect.gen(function* () {
261
319
  FROM ${sql(tables.testRuns)}
262
320
  WHERE hash IS NULL AND name = ${name}
263
321
  );
264
- `);
322
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('commitCurrentTestRun')))).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('commitCurrentTestRun')));
265
323
  if (currentTestRunResults === 0) {
266
324
  yield* _effect.Console.log('Current run has no test results, not commiting.');
267
325
  return;
@@ -274,13 +332,13 @@ const makeTestRepository = /*#__PURE__*/_effect.Effect.gen(function* () {
274
332
  FROM ${sql(tables.testRuns)}
275
333
  WHERE hash IS NULL AND name = ${name}
276
334
  );
277
- `;
335
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('commitCurrentTestRun')));
278
336
  yield* sql`
279
337
  INSERT INTO ${sql(tables.testRuns)}
280
338
  ${sql.insert({
281
339
  name
282
340
  })};
283
- `;
341
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('commitCurrentTestRun')));
284
342
  yield* _effect.Console.log('Commited test run.');
285
343
  });
286
344
  const service = {
@@ -295,16 +353,9 @@ const makeTestRepository = /*#__PURE__*/_effect.Effect.gen(function* () {
295
353
  getTestResultsStream,
296
354
  hasResults,
297
355
  insertTestResult,
356
+ insertTestResults,
298
357
  getAllTestRunResults
299
358
  };
300
359
  return service;
301
360
  });
302
- const LiveLayer = exports.LiveLayer = /*#__PURE__*/_effect.Layer.effect(TestRepository, makeTestRepository);
303
- const makeSqliteLiveLayer = dbPath => Sqlite.SqliteClient.layer({
304
- filename: dbPath
305
- });
306
- exports.makeSqliteLiveLayer = makeSqliteLiveLayer;
307
- const SqliteTestLayer = exports.SqliteTestLayer = /*#__PURE__*/Sqlite.SqliteClient.layer({
308
- filename: ':memory:'
309
- });
310
361
  //# sourceMappingURL=Test.repository.sqlite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Test.repository.sqlite.js","names":["Sql","_interopRequireWildcard","require","Sqlite","_effect","_Classify","_Schema","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","tables","exports","testResults","testRuns","testRunResults","TestResultWriteSchema","Schema","Struct","id","String","hashTestCase","ordering","Int","input","parseJson","Unknown","result","expected","label","LabelSchema","tags","split","timeMillis","Number","TestResultsSchema","pipe","Array","TestRunReadSchema","name","hash","NullOr","CountSchema","Tuple","count","transform","decode","encode","TestRunsReadSchema","CurrentTestRunSchema","_","TestRunResultsSchema","testRun","testResult","TestRepository","Context","GenericTag","makeTestRepository","Effect","gen","sql","SqlClient","insertTestResult","withTransaction","encoded","insert","getTestResultsStream","raw","Stream","fromIterableEffect","hasResults","b","decodeUnknown","getPreviousTestRun","p","head","getAllTestRuns","results","getAllTestRunResults","getAllTestResults","getLastTestRunHash","current","map","flow","Option","flatMap","fromNullable","getOrCreateCurrentTestRun","length","getOrThrow","clearStale","keep","staleTestRuns","ids","in","Console","log","clearUncommitedTestResults","currentTestRun","commitCurrentTestRun","currentTestRunResults","service","LiveLayer","Layer","effect","makeSqliteLiveLayer","dbPath","SqliteClient","layer","filename","SqliteTestLayer"],"sources":["../../../src/internal/Test.repository.sqlite.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Test.repository.sqlite.js","names":["SqlClient","_interopRequireWildcard","require","_effect","_TestRepository","_TestRepositoryTypes","_RepositoryError","_Classify","_Schema","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","tables","exports","testResults","testRuns","testRunResults","TestResultWriteSchema","Schema","Struct","id","String","hashTestCase","ordering","Int","input","parseJson","Unknown","result","expected","label","LabelSchema","tags","split","timeMillis","Number","TestResultsSchema","Array","CountSchema","Tuple","count","pipe","transform","decode","encode","TestRunsReadSchema","TestRun","TestRunResultsSchema","testRun","testResult","makeTestRepository","Effect","gen","sql","INSERT_BATCH_SIZE","insertTestResults","withTransaction","length","encoded","forEach","_","mapError","RepositoryDecodeError","from","chunk","slice","insert","RepositoryWriteError","junction","map","catchTag","fail","insertTestResult","makeTestResultSchema","schemas","getTestResultsStream","RowSchema","RowsSchema","Stream","unwrap","rows","RepositoryQueryError","fromSql","decoded","decodeUnknown","fromIterable","hasResults","b","getPreviousTestRun","name","p","head","getAllTestRuns","results","getAllTestRunResults","getAllTestResults","getLastTestRunHash","flow","Option","flatMap","fromNullable","hash","getOrCreateCurrentTestRun","currentRaw","current","existing","isSome","value","insertedRaw","inserted","match","onNone","TestRunNotCreated","onSome","succeed","clearStale","keep","raw","staleTestRuns","ids","in","Console","log","clearUncommitedTestResults","currentTestRun","isNone","commitCurrentTestRun","currentTestRunResults","service"],"sources":["../../../src/internal/Test.repository.sqlite.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}