@nymphjs/nymph 1.0.0-beta.3 → 1.0.0-beta.30

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/Nymph.d.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  import { Config } from './conf';
2
- import { NymphDriver } from './driver';
2
+ import type { NymphDriver } from './driver';
3
3
  import Entity from './Entity';
4
- import { EntityConstructor, EntityInterface } from './Entity.types';
5
- import type { Selector, Options, NymphConnectCallback, NymphDisconnectCallback, NymphBeforeGetEntityCallback, NymphBeforeGetEntitiesCallback, NymphBeforeSaveEntityCallback, NymphAfterSaveEntityCallback, NymphBeforeDeleteEntityCallback, NymphAfterDeleteEntityCallback, NymphBeforeDeleteEntityByIDCallback, NymphAfterDeleteEntityByIDCallback, NymphBeforeNewUIDCallback, NymphAfterNewUIDCallback, NymphBeforeSetUIDCallback, NymphAfterSetUIDCallback, NymphBeforeRenameUIDCallback, NymphAfterRenameUIDCallback, NymphBeforeDeleteUIDCallback, NymphAfterDeleteUIDCallback, NymphEventType, NymphQueryCallback, FormattedSelector, TilmeldInterface } from './Nymph.types';
4
+ import type { EntityConstructor, EntityInterface } from './Entity.types';
5
+ import type { Selector, Options, NymphConnectCallback, NymphDisconnectCallback, NymphBeforeGetEntityCallback, NymphBeforeGetEntitiesCallback, NymphBeforeSaveEntityCallback, NymphAfterSaveEntityCallback, NymphFailedSaveEntityCallback, NymphBeforeDeleteEntityCallback, NymphAfterDeleteEntityCallback, NymphFailedDeleteEntityCallback, NymphBeforeDeleteEntityByIDCallback, NymphAfterDeleteEntityByIDCallback, NymphFailedDeleteEntityByIDCallback, NymphBeforeNewUIDCallback, NymphAfterNewUIDCallback, NymphFailedNewUIDCallback, NymphBeforeSetUIDCallback, NymphAfterSetUIDCallback, NymphFailedSetUIDCallback, NymphBeforeRenameUIDCallback, NymphAfterRenameUIDCallback, NymphFailedRenameUIDCallback, NymphBeforeDeleteUIDCallback, NymphAfterDeleteUIDCallback, NymphFailedDeleteUIDCallback, NymphBeforeStartTransactionCallback, NymphAfterStartTransactionCallback, NymphBeforeCommitTransactionCallback, NymphAfterCommitTransactionCallback, NymphBeforeRollbackTransactionCallback, NymphAfterRollbackTransactionCallback, NymphEventType, NymphQueryCallback, FormattedSelector, TilmeldInterface } from './Nymph.types';
6
6
  export default class Nymph {
7
7
  config: Config;
8
+ parent: Nymph | null;
8
9
  driver: NymphDriver;
9
10
  tilmeld?: TilmeldInterface;
10
11
  private entityClasses;
@@ -16,21 +17,35 @@ export default class Nymph {
16
17
  private beforeGetEntitiesCallbacks;
17
18
  private beforeSaveEntityCallbacks;
18
19
  private afterSaveEntityCallbacks;
20
+ private failedSaveEntityCallbacks;
19
21
  private beforeDeleteEntityCallbacks;
20
22
  private afterDeleteEntityCallbacks;
23
+ private failedDeleteEntityCallbacks;
21
24
  private beforeDeleteEntityByIDCallbacks;
22
25
  private afterDeleteEntityByIDCallbacks;
26
+ private failedDeleteEntityByIDCallbacks;
23
27
  private beforeNewUIDCallbacks;
24
28
  private afterNewUIDCallbacks;
29
+ private failedNewUIDCallbacks;
25
30
  private beforeSetUIDCallbacks;
26
31
  private afterSetUIDCallbacks;
32
+ private failedSetUIDCallbacks;
27
33
  private beforeRenameUIDCallbacks;
28
34
  private afterRenameUIDCallbacks;
35
+ private failedRenameUIDCallbacks;
29
36
  private beforeDeleteUIDCallbacks;
30
37
  private afterDeleteUIDCallbacks;
31
- addEntityClass(entityClass: EntityConstructor): void;
38
+ private failedDeleteUIDCallbacks;
39
+ private beforeStartTransactionCallbacks;
40
+ private afterStartTransactionCallbacks;
41
+ private beforeCommitTransactionCallbacks;
42
+ private afterCommitTransactionCallbacks;
43
+ private beforeRollbackTransactionCallbacks;
44
+ private afterRollbackTransactionCallbacks;
45
+ constructor(config: Partial<Config>, driver: NymphDriver, tilmeld?: TilmeldInterface, parent?: Nymph);
46
+ addEntityClass<T extends EntityConstructor>(entityClass: T): T;
47
+ getEntityClass<T extends EntityConstructor>(className: T): T;
32
48
  getEntityClass(className: string): EntityConstructor;
33
- constructor(config: Partial<Config>, driver: NymphDriver, tilmeld?: TilmeldInterface);
34
49
  clone(): Nymph;
35
50
  connect(): Promise<boolean>;
36
51
  disconnect(): Promise<boolean>;
@@ -68,6 +83,6 @@ export default class Nymph {
68
83
  export(filename: string): Promise<boolean>;
69
84
  exportPrint(): Promise<boolean>;
70
85
  import(filename: string): Promise<boolean>;
71
- on<T extends NymphEventType>(event: T, callback: T extends 'connect' ? NymphConnectCallback : T extends 'disconnect' ? NymphDisconnectCallback : T extends 'query' ? NymphQueryCallback : T extends 'beforeGetEntity' ? NymphBeforeGetEntityCallback : T extends 'beforeGetEntities' ? NymphBeforeGetEntitiesCallback : T extends 'beforeSaveEntity' ? NymphBeforeSaveEntityCallback : T extends 'afterSaveEntity' ? NymphAfterSaveEntityCallback : T extends 'beforeDeleteEntity' ? NymphBeforeDeleteEntityCallback : T extends 'afterDeleteEntity' ? NymphAfterDeleteEntityCallback : T extends 'beforeDeleteEntityByID' ? NymphBeforeDeleteEntityByIDCallback : T extends 'afterDeleteEntityByID' ? NymphAfterDeleteEntityByIDCallback : T extends 'beforeNewUID' ? NymphBeforeNewUIDCallback : T extends 'afterNewUID' ? NymphAfterNewUIDCallback : T extends 'beforeSetUID' ? NymphBeforeSetUIDCallback : T extends 'afterSetUID' ? NymphAfterSetUIDCallback : T extends 'beforeRenameUID' ? NymphBeforeRenameUIDCallback : T extends 'afterRenameUID' ? NymphAfterRenameUIDCallback : T extends 'beforeDeleteUID' ? NymphBeforeDeleteUIDCallback : T extends 'afterDeleteUID' ? NymphAfterDeleteUIDCallback : never): () => boolean;
72
- off<T extends NymphEventType>(event: T, callback: T extends 'connect' ? NymphConnectCallback : T extends 'disconnect' ? NymphDisconnectCallback : T extends 'query' ? NymphQueryCallback : T extends 'beforeGetEntity' ? NymphBeforeGetEntityCallback : T extends 'beforeGetEntities' ? NymphBeforeGetEntitiesCallback : T extends 'beforeSaveEntity' ? NymphBeforeSaveEntityCallback : T extends 'afterSaveEntity' ? NymphAfterSaveEntityCallback : T extends 'beforeDeleteEntity' ? NymphBeforeDeleteEntityCallback : T extends 'afterDeleteEntity' ? NymphAfterDeleteEntityCallback : T extends 'beforeDeleteEntityByID' ? NymphBeforeDeleteEntityByIDCallback : T extends 'afterDeleteEntityByID' ? NymphAfterDeleteEntityByIDCallback : T extends 'beforeNewUID' ? NymphBeforeNewUIDCallback : T extends 'afterNewUID' ? NymphAfterNewUIDCallback : T extends 'beforeSetUID' ? NymphBeforeSetUIDCallback : T extends 'afterSetUID' ? NymphAfterSetUIDCallback : T extends 'beforeRenameUID' ? NymphBeforeRenameUIDCallback : T extends 'afterRenameUID' ? NymphAfterRenameUIDCallback : T extends 'beforeDeleteUID' ? NymphBeforeDeleteUIDCallback : T extends 'afterDeleteUID' ? NymphAfterDeleteUIDCallback : never): boolean;
86
+ on<T extends NymphEventType>(event: T, callback: T extends 'connect' ? NymphConnectCallback : T extends 'disconnect' ? NymphDisconnectCallback : T extends 'query' ? NymphQueryCallback : T extends 'beforeGetEntity' ? NymphBeforeGetEntityCallback : T extends 'beforeGetEntities' ? NymphBeforeGetEntitiesCallback : T extends 'beforeSaveEntity' ? NymphBeforeSaveEntityCallback : T extends 'afterSaveEntity' ? NymphAfterSaveEntityCallback : T extends 'failedSaveEntity' ? NymphFailedSaveEntityCallback : T extends 'beforeDeleteEntity' ? NymphBeforeDeleteEntityCallback : T extends 'afterDeleteEntity' ? NymphAfterDeleteEntityCallback : T extends 'failedDeleteEntity' ? NymphFailedDeleteEntityCallback : T extends 'beforeDeleteEntityByID' ? NymphBeforeDeleteEntityByIDCallback : T extends 'afterDeleteEntityByID' ? NymphAfterDeleteEntityByIDCallback : T extends 'failedDeleteEntityByID' ? NymphFailedDeleteEntityByIDCallback : T extends 'beforeNewUID' ? NymphBeforeNewUIDCallback : T extends 'afterNewUID' ? NymphAfterNewUIDCallback : T extends 'failedNewUID' ? NymphFailedNewUIDCallback : T extends 'beforeSetUID' ? NymphBeforeSetUIDCallback : T extends 'afterSetUID' ? NymphAfterSetUIDCallback : T extends 'failedSetUID' ? NymphFailedSetUIDCallback : T extends 'beforeRenameUID' ? NymphBeforeRenameUIDCallback : T extends 'afterRenameUID' ? NymphAfterRenameUIDCallback : T extends 'failedRenameUID' ? NymphFailedRenameUIDCallback : T extends 'beforeDeleteUID' ? NymphBeforeDeleteUIDCallback : T extends 'afterDeleteUID' ? NymphAfterDeleteUIDCallback : T extends 'failedDeleteUID' ? NymphFailedDeleteUIDCallback : T extends 'beforeStartTransaction' ? NymphBeforeStartTransactionCallback : T extends 'afterStartTransaction' ? NymphAfterStartTransactionCallback : T extends 'beforeCommitTransaction' ? NymphBeforeCommitTransactionCallback : T extends 'afterCommitTransaction' ? NymphAfterCommitTransactionCallback : T extends 'beforeRollbackTransaction' ? NymphBeforeRollbackTransactionCallback : T extends 'afterRollbackTransaction' ? NymphAfterRollbackTransactionCallback : never): () => boolean;
87
+ off<T extends NymphEventType>(event: T, callback: T extends 'connect' ? NymphConnectCallback : T extends 'disconnect' ? NymphDisconnectCallback : T extends 'query' ? NymphQueryCallback : T extends 'beforeGetEntity' ? NymphBeforeGetEntityCallback : T extends 'beforeGetEntities' ? NymphBeforeGetEntitiesCallback : T extends 'beforeSaveEntity' ? NymphBeforeSaveEntityCallback : T extends 'afterSaveEntity' ? NymphAfterSaveEntityCallback : T extends 'failedSaveEntity' ? NymphFailedSaveEntityCallback : T extends 'beforeDeleteEntity' ? NymphBeforeDeleteEntityCallback : T extends 'afterDeleteEntity' ? NymphAfterDeleteEntityCallback : T extends 'failedDeleteEntity' ? NymphFailedDeleteEntityCallback : T extends 'beforeDeleteEntityByID' ? NymphBeforeDeleteEntityByIDCallback : T extends 'afterDeleteEntityByID' ? NymphAfterDeleteEntityByIDCallback : T extends 'failedDeleteEntityByID' ? NymphFailedDeleteEntityByIDCallback : T extends 'beforeNewUID' ? NymphBeforeNewUIDCallback : T extends 'afterNewUID' ? NymphAfterNewUIDCallback : T extends 'failedNewUID' ? NymphFailedNewUIDCallback : T extends 'beforeSetUID' ? NymphBeforeSetUIDCallback : T extends 'afterSetUID' ? NymphAfterSetUIDCallback : T extends 'failedSetUID' ? NymphFailedSetUIDCallback : T extends 'beforeRenameUID' ? NymphBeforeRenameUIDCallback : T extends 'afterRenameUID' ? NymphAfterRenameUIDCallback : T extends 'failedRenameUID' ? NymphFailedRenameUIDCallback : T extends 'beforeDeleteUID' ? NymphBeforeDeleteUIDCallback : T extends 'afterDeleteUID' ? NymphAfterDeleteUIDCallback : T extends 'failedDeleteUID' ? NymphFailedDeleteUIDCallback : T extends 'beforeStartTransaction' ? NymphBeforeStartTransactionCallback : T extends 'afterStartTransaction' ? NymphAfterStartTransactionCallback : T extends 'beforeCommitTransaction' ? NymphBeforeCommitTransactionCallback : T extends 'afterCommitTransaction' ? NymphAfterCommitTransactionCallback : T extends 'beforeRollbackTransaction' ? NymphBeforeRollbackTransactionCallback : T extends 'afterRollbackTransaction' ? NymphAfterRollbackTransactionCallback : never): boolean;
73
88
  }
package/dist/Nymph.js CHANGED
@@ -7,22 +7,9 @@ const conf_1 = require("./conf");
7
7
  const Entity_1 = __importDefault(require("./Entity"));
8
8
  const errors_1 = require("./errors");
9
9
  class Nymph {
10
- addEntityClass(entityClass) {
11
- this.entityClasses[entityClass.class] = entityClass;
12
- entityClass.nymph = this;
13
- }
14
- getEntityClass(className) {
15
- if (className in this.entityClasses) {
16
- const EntityClass = this.entityClasses[className];
17
- EntityClass.nymph = this;
18
- return EntityClass;
19
- }
20
- throw new errors_1.ClassNotAvailableError('Tried to use class: ' + className);
21
- }
22
- constructor(config, driver, tilmeld) {
10
+ constructor(config, driver, tilmeld, parent) {
23
11
  this.tilmeld = undefined;
24
12
  this.entityClasses = {};
25
- this.Entity = Entity_1.default;
26
13
  this.connectCallbacks = [];
27
14
  this.disconnectCallbacks = [];
28
15
  this.queryCallbacks = [];
@@ -30,73 +17,122 @@ class Nymph {
30
17
  this.beforeGetEntitiesCallbacks = [];
31
18
  this.beforeSaveEntityCallbacks = [];
32
19
  this.afterSaveEntityCallbacks = [];
20
+ this.failedSaveEntityCallbacks = [];
33
21
  this.beforeDeleteEntityCallbacks = [];
34
22
  this.afterDeleteEntityCallbacks = [];
23
+ this.failedDeleteEntityCallbacks = [];
35
24
  this.beforeDeleteEntityByIDCallbacks = [];
36
25
  this.afterDeleteEntityByIDCallbacks = [];
26
+ this.failedDeleteEntityByIDCallbacks = [];
37
27
  this.beforeNewUIDCallbacks = [];
38
28
  this.afterNewUIDCallbacks = [];
29
+ this.failedNewUIDCallbacks = [];
39
30
  this.beforeSetUIDCallbacks = [];
40
31
  this.afterSetUIDCallbacks = [];
32
+ this.failedSetUIDCallbacks = [];
41
33
  this.beforeRenameUIDCallbacks = [];
42
34
  this.afterRenameUIDCallbacks = [];
35
+ this.failedRenameUIDCallbacks = [];
43
36
  this.beforeDeleteUIDCallbacks = [];
44
37
  this.afterDeleteUIDCallbacks = [];
38
+ this.failedDeleteUIDCallbacks = [];
39
+ this.beforeStartTransactionCallbacks = [];
40
+ this.afterStartTransactionCallbacks = [];
41
+ this.beforeCommitTransactionCallbacks = [];
42
+ this.afterCommitTransactionCallbacks = [];
43
+ this.beforeRollbackTransactionCallbacks = [];
44
+ this.afterRollbackTransactionCallbacks = [];
45
45
  this.config = { ...conf_1.ConfigDefaults, ...config };
46
46
  this.driver = driver;
47
- if (typeof tilmeld !== 'undefined') {
48
- this.tilmeld = tilmeld;
47
+ this.parent = parent ?? null;
48
+ this.Entity = this.addEntityClass(Entity_1.default);
49
+ if (parent) {
50
+ for (const name in parent.entityClasses) {
51
+ if (name === 'Entity' ||
52
+ parent.entityClasses[name].skipOnClone) {
53
+ continue;
54
+ }
55
+ this.addEntityClass(parent.entityClasses[name]);
56
+ }
57
+ const events = [
58
+ 'connect',
59
+ 'disconnect',
60
+ 'query',
61
+ 'beforeGetEntity',
62
+ 'beforeGetEntities',
63
+ 'beforeSaveEntity',
64
+ 'afterSaveEntity',
65
+ 'failedSaveEntity',
66
+ 'beforeDeleteEntity',
67
+ 'afterDeleteEntity',
68
+ 'failedDeleteEntity',
69
+ 'beforeDeleteEntityByID',
70
+ 'afterDeleteEntityByID',
71
+ 'failedDeleteEntityByID',
72
+ 'beforeNewUID',
73
+ 'afterNewUID',
74
+ 'failedNewUID',
75
+ 'beforeSetUID',
76
+ 'afterSetUID',
77
+ 'failedSetUID',
78
+ 'beforeRenameUID',
79
+ 'afterRenameUID',
80
+ 'failedRenameUID',
81
+ 'beforeDeleteUID',
82
+ 'afterDeleteUID',
83
+ 'failedDeleteUID',
84
+ 'beforeStartTransaction',
85
+ 'afterStartTransaction',
86
+ 'beforeCommitTransaction',
87
+ 'afterCommitTransaction',
88
+ 'beforeRollbackTransaction',
89
+ 'afterRollbackTransaction',
90
+ ];
91
+ for (let event of events) {
92
+ const prop = event + 'Callbacks';
93
+ const callbacks = parent[prop];
94
+ for (let callback of callbacks) {
95
+ if (callback.skipOnClone) {
96
+ continue;
97
+ }
98
+ this.on(event, callback);
99
+ }
100
+ }
49
101
  }
50
- class NymphEntity extends Entity_1.default {
102
+ if (tilmeld != null) {
103
+ this.tilmeld = tilmeld;
51
104
  }
52
- NymphEntity.nymph = this;
53
- this.Entity = NymphEntity;
54
- this.addEntityClass(NymphEntity);
55
105
  this.driver.init(this);
56
106
  if (this.tilmeld) {
57
107
  this.tilmeld.init(this);
58
108
  }
59
109
  }
60
- clone() {
61
- const nymph = new Nymph(this.config, this.driver, this.tilmeld?.clone());
62
- for (const name in this.entityClasses) {
63
- if (name === 'Entity' || this.entityClasses[name].skipOnClone) {
64
- continue;
65
- }
66
- nymph.addEntityClass(this.entityClasses[name]);
67
- }
68
- const events = [
69
- 'connect',
70
- 'disconnect',
71
- 'query',
72
- 'beforeGetEntity',
73
- 'beforeGetEntities',
74
- 'beforeSaveEntity',
75
- 'afterSaveEntity',
76
- 'beforeDeleteEntity',
77
- 'afterDeleteEntity',
78
- 'beforeDeleteEntityByID',
79
- 'afterDeleteEntityByID',
80
- 'beforeNewUID',
81
- 'afterNewUID',
82
- 'beforeSetUID',
83
- 'afterSetUID',
84
- 'beforeRenameUID',
85
- 'afterRenameUID',
86
- 'beforeDeleteUID',
87
- 'afterDeleteUID',
88
- ];
89
- for (let event of events) {
90
- const prop = event + 'Callbacks';
91
- const callbacks = this[prop];
92
- for (let callback of callbacks) {
93
- if (callback.skipOnClone) {
94
- continue;
95
- }
96
- nymph.on(event, callback);
110
+ addEntityClass(entityClass) {
111
+ const nymph = this;
112
+ class NymphEntity extends entityClass {
113
+ constructor(...args) {
114
+ super(...args);
97
115
  }
98
116
  }
99
- return nymph;
117
+ NymphEntity.nymph = nymph;
118
+ this.entityClasses[entityClass.class] = NymphEntity;
119
+ return NymphEntity;
120
+ }
121
+ getEntityClass(className) {
122
+ let key = null;
123
+ if (typeof className === 'string') {
124
+ key = className;
125
+ }
126
+ else {
127
+ key = className.class;
128
+ }
129
+ if (key in this.entityClasses) {
130
+ return this.entityClasses[key];
131
+ }
132
+ throw new errors_1.ClassNotAvailableError('Tried to use class: ' + key);
133
+ }
134
+ clone() {
135
+ return new Nymph(this.config, this.driver.clone(), this.tilmeld?.clone(), this);
100
136
  }
101
137
  async connect() {
102
138
  const result = this.driver.connect();
@@ -124,13 +160,46 @@ class Nymph {
124
160
  }
125
161
  }
126
162
  async startTransaction(name) {
127
- return await this.driver.startTransaction(name);
163
+ for (let callback of this.beforeStartTransactionCallbacks) {
164
+ if (callback) {
165
+ await callback(this, name);
166
+ }
167
+ }
168
+ const result = await this.driver.startTransaction(name);
169
+ for (let callback of this.afterStartTransactionCallbacks) {
170
+ if (callback) {
171
+ await callback(this, name, result);
172
+ }
173
+ }
174
+ return result;
128
175
  }
129
176
  async commit(name) {
130
- return await this.driver.commit(name);
177
+ for (let callback of this.beforeCommitTransactionCallbacks) {
178
+ if (callback) {
179
+ await callback(this, name);
180
+ }
181
+ }
182
+ const result = await this.driver.commit(name);
183
+ for (let callback of this.afterCommitTransactionCallbacks) {
184
+ if (callback) {
185
+ await callback(this, name, result);
186
+ }
187
+ }
188
+ return result;
131
189
  }
132
190
  async rollback(name) {
133
- return await this.driver.rollback(name);
191
+ for (let callback of this.beforeRollbackTransactionCallbacks) {
192
+ if (callback) {
193
+ await callback(this, name);
194
+ }
195
+ }
196
+ const result = await this.driver.rollback(name);
197
+ for (let callback of this.afterRollbackTransactionCallbacks) {
198
+ if (callback) {
199
+ await callback(this, name, result);
200
+ }
201
+ }
202
+ return result;
134
203
  }
135
204
  async inTransaction() {
136
205
  return await this.driver.inTransaction();
@@ -141,7 +210,18 @@ class Nymph {
141
210
  await callback(this, name);
142
211
  }
143
212
  }
144
- const result = this.driver.newUID(name);
213
+ let result;
214
+ try {
215
+ result = this.driver.newUID(name);
216
+ }
217
+ catch (e) {
218
+ for (let callback of this.failedNewUIDCallbacks) {
219
+ if (callback) {
220
+ await callback(this, e);
221
+ }
222
+ }
223
+ throw e;
224
+ }
145
225
  for (let callback of this.afterNewUIDCallbacks) {
146
226
  if (callback) {
147
227
  await callback(this, result);
@@ -158,7 +238,18 @@ class Nymph {
158
238
  await callback(this, name, value);
159
239
  }
160
240
  }
161
- const result = this.driver.setUID(name, value);
241
+ let result;
242
+ try {
243
+ result = this.driver.setUID(name, value);
244
+ }
245
+ catch (e) {
246
+ for (let callback of this.failedSetUIDCallbacks) {
247
+ if (callback) {
248
+ await callback(this, e);
249
+ }
250
+ }
251
+ throw e;
252
+ }
162
253
  for (let callback of this.afterSetUIDCallbacks) {
163
254
  if (callback) {
164
255
  await callback(this, result);
@@ -172,7 +263,18 @@ class Nymph {
172
263
  await callback(this, name);
173
264
  }
174
265
  }
175
- const result = this.driver.deleteUID(name);
266
+ let result;
267
+ try {
268
+ result = this.driver.deleteUID(name);
269
+ }
270
+ catch (e) {
271
+ for (let callback of this.failedDeleteUIDCallbacks) {
272
+ if (callback) {
273
+ await callback(this, e);
274
+ }
275
+ }
276
+ throw e;
277
+ }
176
278
  for (let callback of this.afterDeleteUIDCallbacks) {
177
279
  if (callback) {
178
280
  await callback(this, result);
@@ -186,7 +288,18 @@ class Nymph {
186
288
  await callback(this, oldName, newName);
187
289
  }
188
290
  }
189
- const result = this.driver.renameUID(oldName, newName);
291
+ let result;
292
+ try {
293
+ result = this.driver.renameUID(oldName, newName);
294
+ }
295
+ catch (e) {
296
+ for (let callback of this.failedRenameUIDCallbacks) {
297
+ if (callback) {
298
+ await callback(this, e);
299
+ }
300
+ }
301
+ throw e;
302
+ }
190
303
  for (let callback of this.afterRenameUIDCallbacks) {
191
304
  if (callback) {
192
305
  await callback(this, result);
@@ -200,7 +313,18 @@ class Nymph {
200
313
  await callback(this, entity);
201
314
  }
202
315
  }
203
- const result = this.driver.saveEntity(entity);
316
+ let result;
317
+ try {
318
+ result = this.driver.saveEntity(entity);
319
+ }
320
+ catch (e) {
321
+ for (let callback of this.failedSaveEntityCallbacks) {
322
+ if (callback) {
323
+ await callback(this, e);
324
+ }
325
+ }
326
+ throw e;
327
+ }
204
328
  for (let callback of this.afterSaveEntityCallbacks) {
205
329
  if (callback) {
206
330
  await callback(this, result);
@@ -241,7 +365,18 @@ class Nymph {
241
365
  await callback(this, entity);
242
366
  }
243
367
  }
244
- const result = this.driver.deleteEntity(entity);
368
+ let result;
369
+ try {
370
+ result = this.driver.deleteEntity(entity);
371
+ }
372
+ catch (e) {
373
+ for (let callback of this.failedDeleteEntityCallbacks) {
374
+ if (callback) {
375
+ await callback(this, e);
376
+ }
377
+ }
378
+ throw e;
379
+ }
245
380
  for (let callback of this.afterDeleteEntityCallbacks) {
246
381
  if (callback) {
247
382
  await callback(this, result);
@@ -255,7 +390,18 @@ class Nymph {
255
390
  await callback(this, guid, className);
256
391
  }
257
392
  }
258
- const result = this.driver.deleteEntityByID(guid, className);
393
+ let result;
394
+ try {
395
+ result = this.driver.deleteEntityByID(guid, className);
396
+ }
397
+ catch (e) {
398
+ for (let callback of this.failedDeleteEntityByIDCallbacks) {
399
+ if (callback) {
400
+ await callback(this, e);
401
+ }
402
+ }
403
+ throw e;
404
+ }
259
405
  for (let callback of this.afterDeleteEntityByIDCallbacks) {
260
406
  if (callback) {
261
407
  await callback(this, result);
package/dist/Nymph.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Nymph.js","sourceRoot":"","sources":["../src/Nymph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Nymph.js","sourceRoot":"","sources":["../src/Nymph.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { EntityConstructor, EntityInterface } from './Entity.types';
2
2
  import Nymph from './Nymph';
3
- export type NymphEventType = 'connect' | 'disconnect' | 'query' | 'beforeGetEntity' | 'beforeGetEntities' | 'beforeSaveEntity' | 'afterSaveEntity' | 'beforeDeleteEntity' | 'afterDeleteEntity' | 'beforeDeleteEntityByID' | 'afterDeleteEntityByID' | 'beforeNewUID' | 'afterNewUID' | 'beforeSetUID' | 'afterSetUID' | 'beforeRenameUID' | 'afterRenameUID' | 'beforeDeleteUID' | 'afterDeleteUID';
3
+ export type NymphEventType = 'connect' | 'disconnect' | 'query' | 'beforeGetEntity' | 'beforeGetEntities' | 'beforeSaveEntity' | 'afterSaveEntity' | 'failedSaveEntity' | 'beforeDeleteEntity' | 'afterDeleteEntity' | 'failedDeleteEntity' | 'beforeDeleteEntityByID' | 'afterDeleteEntityByID' | 'failedDeleteEntityByID' | 'beforeNewUID' | 'afterNewUID' | 'failedNewUID' | 'beforeSetUID' | 'afterSetUID' | 'failedSetUID' | 'beforeRenameUID' | 'afterRenameUID' | 'failedRenameUID' | 'beforeDeleteUID' | 'afterDeleteUID' | 'failedDeleteUID' | 'beforeStartTransaction' | 'afterStartTransaction' | 'beforeCommitTransaction' | 'afterCommitTransaction' | 'beforeRollbackTransaction' | 'afterRollbackTransaction';
4
4
  export type NymphConnectCallback = (nymph: Nymph, result: Promise<boolean>) => Promise<void>;
5
5
  export type NymphDisconnectCallback = (nymph: Nymph, result: Promise<boolean>) => Promise<void>;
6
6
  export type NymphQueryCallback = (nymph: Nymph, options: Options, selectors: FormattedSelector[]) => void;
@@ -8,24 +8,37 @@ export type NymphBeforeGetEntityCallback = (nymph: Nymph, options: Options, sele
8
8
  export type NymphBeforeGetEntitiesCallback = (nymph: Nymph, options: Options, selectors: Selector[]) => Promise<void>;
9
9
  export type NymphBeforeSaveEntityCallback = (nymph: Nymph, entity: EntityInterface) => Promise<void>;
10
10
  export type NymphAfterSaveEntityCallback = (nymph: Nymph, result: Promise<boolean>) => Promise<void>;
11
+ export type NymphFailedSaveEntityCallback = (nymph: Nymph, error: any) => Promise<void>;
11
12
  export type NymphBeforeDeleteEntityCallback = (nymph: Nymph, entity: EntityInterface) => Promise<void>;
12
13
  export type NymphAfterDeleteEntityCallback = (nymph: Nymph, result: Promise<boolean>) => Promise<void>;
14
+ export type NymphFailedDeleteEntityCallback = (nymph: Nymph, error: any) => Promise<void>;
13
15
  export type NymphBeforeDeleteEntityByIDCallback = (nymph: Nymph, guid: string, className?: string) => Promise<void>;
14
16
  export type NymphAfterDeleteEntityByIDCallback = (nymph: Nymph, result: Promise<boolean>) => Promise<void>;
17
+ export type NymphFailedDeleteEntityByIDCallback = (nymph: Nymph, error: any) => Promise<void>;
15
18
  export type NymphBeforeNewUIDCallback = (nymph: Nymph, name: string) => Promise<void>;
16
19
  export type NymphAfterNewUIDCallback = (nymph: Nymph, result: Promise<number | null>) => Promise<void>;
20
+ export type NymphFailedNewUIDCallback = (nymph: Nymph, error: any) => Promise<void>;
17
21
  export type NymphBeforeSetUIDCallback = (nymph: Nymph, name: string, value: number) => Promise<void>;
18
22
  export type NymphAfterSetUIDCallback = (nymph: Nymph, result: Promise<boolean>) => Promise<void>;
23
+ export type NymphFailedSetUIDCallback = (nymph: Nymph, error: any) => Promise<void>;
19
24
  export type NymphBeforeRenameUIDCallback = (nymph: Nymph, oldName: string, newName: string) => Promise<void>;
20
25
  export type NymphAfterRenameUIDCallback = (nymph: Nymph, result: Promise<boolean>) => Promise<void>;
26
+ export type NymphFailedRenameUIDCallback = (nymph: Nymph, error: any) => Promise<void>;
21
27
  export type NymphBeforeDeleteUIDCallback = (nymph: Nymph, name: string) => Promise<void>;
22
28
  export type NymphAfterDeleteUIDCallback = (nymph: Nymph, result: Promise<boolean>) => Promise<void>;
29
+ export type NymphFailedDeleteUIDCallback = (nymph: Nymph, error: any) => Promise<void>;
30
+ export type NymphBeforeStartTransactionCallback = (nymph: Nymph, name: string) => Promise<void>;
31
+ export type NymphAfterStartTransactionCallback = (nymph: Nymph, name: string, result: Nymph) => Promise<void>;
32
+ export type NymphBeforeCommitTransactionCallback = (nymph: Nymph, name: string) => Promise<void>;
33
+ export type NymphAfterCommitTransactionCallback = (nymph: Nymph, name: string, result: boolean) => Promise<void>;
34
+ export type NymphBeforeRollbackTransactionCallback = (nymph: Nymph, name: string) => Promise<void>;
35
+ export type NymphAfterRollbackTransactionCallback = (nymph: Nymph, name: string, result: boolean) => Promise<void>;
23
36
  export type Options<T extends EntityConstructor = EntityConstructor> = {
24
37
  class?: T;
25
38
  limit?: number;
26
39
  offset?: number;
27
40
  reverse?: boolean;
28
- sort?: 'cdate' | 'mdate';
41
+ sort?: 'cdate' | 'mdate' | string;
29
42
  return?: 'entity' | 'guid' | 'count';
30
43
  source?: string;
31
44
  skipCache?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Nymph.types.js","sourceRoot":"","sources":["../src/Nymph.types.ts"],"names":[],"mappings":";;;AAwSA,IAAY,mBAMX;AAND,WAAY,mBAAmB;IAC7B,uEAAa,CAAA;IACb,2EAAe,CAAA;IACf,6EAAgB,CAAA;IAEhB,2EAAe,CAAA;AACjB,CAAC,EANW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAM9B"}
1
+ {"version":3,"file":"Nymph.types.js","sourceRoot":"","sources":["../src/Nymph.types.ts"],"names":[],"mappings":";;;AA4WA,IAAY,mBAMX;AAND,WAAY,mBAAmB;IAC7B,uEAAa,CAAA;IACb,2EAAe,CAAA;IACf,6EAAgB,CAAA;IAEhB,2EAAe,CAAA;AACjB,CAAC,EANW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAM9B"}
@@ -16,6 +16,7 @@ export default abstract class NymphDriver {
16
16
  [k: string]: number;
17
17
  };
18
18
  private putDataCounter;
19
+ abstract clone(): NymphDriver;
19
20
  abstract connect(): Promise<boolean>;
20
21
  abstract isConnected(): boolean;
21
22
  abstract startTransaction(name: string): Promise<Nymph>;
@@ -356,9 +356,9 @@ class NymphDriver {
356
356
  for (let i = 0; i < tmpArr.length; i++) {
357
357
  const name = tmpArr[i][0];
358
358
  const [qrefOptions, ...qrefSelectors] = tmpArr[i][1];
359
- const QrefEntityClass = typeof qrefOptions.class === 'string'
359
+ const QrefEntityClass = qrefOptions.class
360
360
  ? this.nymph.getEntityClass(qrefOptions.class)
361
- : qrefOptions.class ?? this.nymph.getEntityClass('Entity');
361
+ : this.nymph.getEntityClass('Entity');
362
362
  const newOptions = {
363
363
  ...qrefOptions,
364
364
  class: QrefEntityClass,