@naturalcycles/abba 1.18.2 → 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
@@ -64,9 +64,7 @@ class Abba {
64
64
  }
65
65
  const updatedExperiment = await this.experimentDao.save(experiment, { saveMethod: 'update' });
66
66
  const updatedBuckets = await (0, js_lib_1.pMap)(buckets, async (bucket) => {
67
- // Don't save batch with a single saveMethod because the cascade will delete all user assignments
68
- const saveMethod = bucket.id ? 'update' : 'insert';
69
- return await this.bucketDao.save({ ...bucket, experimentId: updatedExperiment.id }, { saveMethod });
67
+ return await this.bucketDao.save({ ...bucket, experimentId: updatedExperiment.id }, { saveMethod: bucket.id ? 'update' : undefined });
70
68
  });
71
69
  await this.updateExclusions(updatedExperiment.id, updatedExperiment.exclusions);
72
70
  return {
@@ -101,6 +99,12 @@ class Abba {
101
99
  * Cold method.
102
100
  */
103
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);
104
108
  await this.experimentDao.deleteById(experimentId);
105
109
  await this.updateExclusions(experimentId, []);
106
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.2",
3
+ "version": "1.18.3",
4
4
  "scripts": {
5
5
  "prepare": "husky install",
6
6
  "build": "build",
package/src/abba.ts CHANGED
@@ -92,11 +92,9 @@ export class Abba {
92
92
 
93
93
  const updatedExperiment = await this.experimentDao.save(experiment, { saveMethod: 'update' })
94
94
  const updatedBuckets = await pMap(buckets, async bucket => {
95
- // Don't save batch with a single saveMethod because the cascade will delete all user assignments
96
- const saveMethod = bucket.id ? 'update' : 'insert'
97
95
  return await this.bucketDao.save(
98
96
  { ...bucket, experimentId: updatedExperiment.id },
99
- { saveMethod },
97
+ { saveMethod: bucket.id ? 'update' : undefined },
100
98
  )
101
99
  })
102
100
 
@@ -143,6 +141,14 @@ export class Abba {
143
141
  * Cold method.
144
142
  */
145
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
+
146
152
  await this.experimentDao.deleteById(experimentId)
147
153
  await this.updateExclusions(experimentId, [])
148
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`);