@naturalcycles/abba 2.1.0 → 2.1.1

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
@@ -121,7 +121,7 @@ export class Abba {
121
121
  await this.experimentDao.saveBatch(requiresUpdating, { saveMethod: 'update' });
122
122
  }
123
123
  async softDeleteExperiment(experimentId) {
124
- await this.experimentDao.patchById(experimentId, { deleted: true, exclusions: [] });
124
+ await this.experimentDao.patchById(experimentId, { deleted: true, exclusions: [] }, { saveMethod: 'update' });
125
125
  await this.updateExclusions(experimentId, []);
126
126
  }
127
127
  /**
@@ -135,12 +135,8 @@ export class Abba {
135
135
  const hasBeenInactiveFor15Mins = experiment.status === AssignmentStatus.Inactive &&
136
136
  localTime(experiment.updated).isOlderThan(15, 'minute');
137
137
  _assert(hasBeenInactiveFor15Mins, 'Experiment must be inactive for at least 15 minutes before deletion');
138
- const userAssignmentDeleteQuery = this.userAssignmentDao
139
- .query()
140
- .filterEq('experimentId', experimentId);
141
- await this.userAssignmentDao.deleteByQuery(userAssignmentDeleteQuery, { chunkSize: 50000 });
142
- const bucketDeleteQuery = this.bucketDao.query().filterEq('experimentId', experimentId);
143
- await this.bucketDao.deleteByQuery(bucketDeleteQuery);
138
+ await this.userAssignmentDao.deleteByExperimentId(experimentId);
139
+ await this.bucketDao.deleteByExperimentId(experimentId);
144
140
  await this.experimentDao.deleteById(experimentId);
145
141
  await this.updateExclusions(experimentId, []);
146
142
  }
@@ -6,6 +6,7 @@ type BucketDBM = BaseBucket & {
6
6
  };
7
7
  export declare class BucketDao extends CommonDao<Bucket, BucketDBM> {
8
8
  getByExperimentId(experimentId: string): Promise<Bucket[]>;
9
+ deleteByExperimentId(experimentId: string): Promise<void>;
9
10
  }
10
11
  export declare function bucketDao(db: CommonDB): BucketDao;
11
12
  export {};
@@ -3,6 +3,9 @@ export class BucketDao extends CommonDao {
3
3
  async getByExperimentId(experimentId) {
4
4
  return await this.query().filterEq('experimentId', experimentId).runQuery();
5
5
  }
6
+ async deleteByExperimentId(experimentId) {
7
+ await this.query().filterEq('experimentId', experimentId).deleteByQuery();
8
+ }
6
9
  }
7
10
  export function bucketDao(db) {
8
11
  return new BucketDao({
@@ -4,6 +4,7 @@ import type { UserAssignment } from '../types.js';
4
4
  export declare class UserAssignmentDao extends CommonDao<UserAssignment> {
5
5
  getUserAssignmentByExperimentId(userId: string, experimentId: string): Promise<UserAssignment | null>;
6
6
  getUserAssigmentsByExperimentIds(userId: string, experimentIds: string[]): Promise<UserAssignment[]>;
7
+ deleteByExperimentId(experimentId: string): Promise<void>;
7
8
  getCountByExperimentId(experimentId: string): Promise<number>;
8
9
  getCountByBucketId(bucketId: string): Promise<number>;
9
10
  }
@@ -9,6 +9,9 @@ export class UserAssignmentDao extends CommonDao {
9
9
  const query = this.query().filterEq('userId', userId).filterIn('experimentId', experimentIds);
10
10
  return await this.runQuery(query);
11
11
  }
12
+ async deleteByExperimentId(experimentId) {
13
+ await this.query().filterEq('experimentId', experimentId).deleteByQuery();
14
+ }
12
15
  async getCountByExperimentId(experimentId) {
13
16
  return await this.query().filterEq('experimentId', experimentId).runQueryCount();
14
17
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@naturalcycles/abba",
3
3
  "type": "module",
4
- "version": "2.1.0",
4
+ "version": "2.1.1",
5
5
  "scripts": {
6
6
  "prepare": "husky",
7
7
  "build": "dev-lib build",
package/src/abba.ts CHANGED
@@ -185,7 +185,11 @@ export class Abba {
185
185
  }
186
186
 
187
187
  async softDeleteExperiment(experimentId: string): Promise<void> {
188
- await this.experimentDao.patchById(experimentId, { deleted: true, exclusions: [] })
188
+ await this.experimentDao.patchById(
189
+ experimentId,
190
+ { deleted: true, exclusions: [] },
191
+ { saveMethod: 'update' },
192
+ )
189
193
  await this.updateExclusions(experimentId, [])
190
194
  }
191
195
 
@@ -206,14 +210,8 @@ export class Abba {
206
210
  'Experiment must be inactive for at least 15 minutes before deletion',
207
211
  )
208
212
 
209
- const userAssignmentDeleteQuery = this.userAssignmentDao
210
- .query()
211
- .filterEq('experimentId', experimentId)
212
- await this.userAssignmentDao.deleteByQuery(userAssignmentDeleteQuery, { chunkSize: 50000 })
213
-
214
- const bucketDeleteQuery = this.bucketDao.query().filterEq('experimentId', experimentId)
215
- await this.bucketDao.deleteByQuery(bucketDeleteQuery)
216
-
213
+ await this.userAssignmentDao.deleteByExperimentId(experimentId)
214
+ await this.bucketDao.deleteByExperimentId(experimentId)
217
215
  await this.experimentDao.deleteById(experimentId)
218
216
  await this.updateExclusions(experimentId, [])
219
217
  }
@@ -10,6 +10,10 @@ export class BucketDao extends CommonDao<Bucket, BucketDBM> {
10
10
  async getByExperimentId(experimentId: string): Promise<Bucket[]> {
11
11
  return await this.query().filterEq('experimentId', experimentId).runQuery()
12
12
  }
13
+
14
+ async deleteByExperimentId(experimentId: string): Promise<void> {
15
+ await this.query().filterEq('experimentId', experimentId).deleteByQuery()
16
+ }
13
17
  }
14
18
 
15
19
  export function bucketDao(db: CommonDB): BucketDao {
@@ -20,6 +20,10 @@ export class UserAssignmentDao extends CommonDao<UserAssignment> {
20
20
  return await this.runQuery(query)
21
21
  }
22
22
 
23
+ async deleteByExperimentId(experimentId: string): Promise<void> {
24
+ await this.query().filterEq('experimentId', experimentId).deleteByQuery()
25
+ }
26
+
23
27
  async getCountByExperimentId(experimentId: string): Promise<number> {
24
28
  return await this.query().filterEq('experimentId', experimentId).runQueryCount()
25
29
  }