@naturalcycles/abba 1.18.1 → 1.18.3

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.
package/dist/abba.js CHANGED
@@ -63,7 +63,9 @@ class Abba {
63
63
  (0, util_1.validateTotalBucketRatio)(buckets);
64
64
  }
65
65
  const updatedExperiment = await this.experimentDao.save(experiment, { saveMethod: 'update' });
66
- const updatedBuckets = await this.bucketDao.saveBatch(buckets.map(b => ({ ...b, experimentId: updatedExperiment.id })));
66
+ const updatedBuckets = await (0, js_lib_1.pMap)(buckets, async (bucket) => {
67
+ return await this.bucketDao.save({ ...bucket, experimentId: updatedExperiment.id }, { saveMethod: bucket.id ? 'update' : undefined });
68
+ });
67
69
  await this.updateExclusions(updatedExperiment.id, updatedExperiment.exclusions);
68
70
  return {
69
71
  ...updatedExperiment,
@@ -97,6 +99,12 @@ class Abba {
97
99
  * Cold method.
98
100
  */
99
101
  async deleteExperiment(experimentId) {
102
+ const userAssignmentDeleteQuery = this.userAssignmentDao
103
+ .query()
104
+ .filterEq('experimentId', experimentId);
105
+ await this.userAssignmentDao.deleteByQuery(userAssignmentDeleteQuery);
106
+ const bucketDeleteQuery = this.bucketDao.query().filterEq('experimentId', experimentId);
107
+ await this.bucketDao.deleteByQuery(bucketDeleteQuery);
100
108
  await this.experimentDao.deleteById(experimentId);
101
109
  await this.updateExclusions(experimentId, []);
102
110
  }
@@ -42,10 +42,10 @@ CREATE TABLE IF NOT EXISTS `UserAssignment` (
42
42
  ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
43
43
 
44
44
  -- AddForeignKey
45
- ALTER TABLE `Bucket` ADD CONSTRAINT `Bucket_experimentId_fkey` FOREIGN KEY (`experimentId`) REFERENCES `Experiment`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
45
+ ALTER TABLE `Bucket` ADD CONSTRAINT `Bucket_experimentId_fkey` FOREIGN KEY (`experimentId`) REFERENCES `Experiment`(`id`);
46
46
 
47
47
  -- AddForeignKey
48
- ALTER TABLE `UserAssignment` ADD CONSTRAINT `UserAssignment_bucketId_fkey` FOREIGN KEY (`bucketId`) REFERENCES `Bucket`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
48
+ ALTER TABLE `UserAssignment` ADD CONSTRAINT `UserAssignment_bucketId_fkey` FOREIGN KEY (`bucketId`) REFERENCES `Bucket`(`id`);
49
49
 
50
50
  -- AddForeignKey
51
- ALTER TABLE `UserAssignment` ADD CONSTRAINT `UserAssignment_experimentId_fkey` FOREIGN KEY (`experimentId`) REFERENCES `Experiment`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
51
+ ALTER TABLE `UserAssignment` ADD CONSTRAINT `UserAssignment_experimentId_fkey` FOREIGN KEY (`experimentId`) REFERENCES `Experiment`(`id`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@naturalcycles/abba",
3
- "version": "1.18.1",
3
+ "version": "1.18.3",
4
4
  "scripts": {
5
5
  "prepare": "husky install",
6
6
  "build": "build",
package/src/abba.ts CHANGED
@@ -91,9 +91,12 @@ export class Abba {
91
91
  }
92
92
 
93
93
  const updatedExperiment = await this.experimentDao.save(experiment, { saveMethod: 'update' })
94
- const updatedBuckets = await this.bucketDao.saveBatch(
95
- buckets.map(b => ({ ...b, experimentId: updatedExperiment.id })),
96
- )
94
+ const updatedBuckets = await pMap(buckets, async bucket => {
95
+ return await this.bucketDao.save(
96
+ { ...bucket, experimentId: updatedExperiment.id },
97
+ { saveMethod: bucket.id ? 'update' : undefined },
98
+ )
99
+ })
97
100
 
98
101
  await this.updateExclusions(updatedExperiment.id, updatedExperiment.exclusions)
99
102
 
@@ -138,6 +141,14 @@ export class Abba {
138
141
  * Cold method.
139
142
  */
140
143
  async deleteExperiment(experimentId: string): Promise<void> {
144
+ const userAssignmentDeleteQuery = this.userAssignmentDao
145
+ .query()
146
+ .filterEq('experimentId', experimentId)
147
+ await this.userAssignmentDao.deleteByQuery(userAssignmentDeleteQuery)
148
+
149
+ const bucketDeleteQuery = this.bucketDao.query().filterEq('experimentId', experimentId)
150
+ await this.bucketDao.deleteByQuery(bucketDeleteQuery)
151
+
141
152
  await this.experimentDao.deleteById(experimentId)
142
153
  await this.updateExclusions(experimentId, [])
143
154
  }
@@ -42,10 +42,10 @@ CREATE TABLE IF NOT EXISTS `UserAssignment` (
42
42
  ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
43
43
 
44
44
  -- AddForeignKey
45
- ALTER TABLE `Bucket` ADD CONSTRAINT `Bucket_experimentId_fkey` FOREIGN KEY (`experimentId`) REFERENCES `Experiment`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
45
+ ALTER TABLE `Bucket` ADD CONSTRAINT `Bucket_experimentId_fkey` FOREIGN KEY (`experimentId`) REFERENCES `Experiment`(`id`);
46
46
 
47
47
  -- AddForeignKey
48
- ALTER TABLE `UserAssignment` ADD CONSTRAINT `UserAssignment_bucketId_fkey` FOREIGN KEY (`bucketId`) REFERENCES `Bucket`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
48
+ ALTER TABLE `UserAssignment` ADD CONSTRAINT `UserAssignment_bucketId_fkey` FOREIGN KEY (`bucketId`) REFERENCES `Bucket`(`id`);
49
49
 
50
50
  -- AddForeignKey
51
- ALTER TABLE `UserAssignment` ADD CONSTRAINT `UserAssignment_experimentId_fkey` FOREIGN KEY (`experimentId`) REFERENCES `Experiment`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
51
+ ALTER TABLE `UserAssignment` ADD CONSTRAINT `UserAssignment_experimentId_fkey` FOREIGN KEY (`experimentId`) REFERENCES `Experiment`(`id`);