@arcaelas/dynamite 2.1.0 → 3.1.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 (57) hide show
  1. package/build/cjs/core/client.d.ts +3 -3
  2. package/build/cjs/core/client.js +3 -3
  3. package/build/cjs/core/client.js.map +1 -1
  4. package/build/cjs/core/decorator.d.ts +12 -0
  5. package/build/cjs/core/decorator.js +18 -4
  6. package/build/cjs/core/decorator.js.map +1 -1
  7. package/build/cjs/core/table.d.ts +27 -9
  8. package/build/cjs/core/table.js +130 -28
  9. package/build/cjs/core/table.js.map +1 -1
  10. package/build/cjs/decorators/hooks.d.ts +35 -0
  11. package/build/cjs/decorators/hooks.js +50 -0
  12. package/build/cjs/decorators/hooks.js.map +1 -0
  13. package/build/cjs/decorators/transforms.js +1 -1
  14. package/build/cjs/decorators/transforms.js.map +1 -1
  15. package/build/cjs/index.d.ts +2 -0
  16. package/build/cjs/index.js +9 -1
  17. package/build/cjs/index.js.map +1 -1
  18. package/build/cjs/test/basic.js +2 -2
  19. package/build/cjs/test/basic.js.map +1 -1
  20. package/build/cjs/test/contracts.js +7 -7
  21. package/build/cjs/test/contracts.js.map +1 -1
  22. package/build/cjs/test/hooks.d.ts +1 -0
  23. package/build/cjs/test/hooks.js +191 -0
  24. package/build/cjs/test/hooks.js.map +1 -0
  25. package/build/cjs/test/index.js +2 -0
  26. package/build/cjs/test/index.js.map +1 -1
  27. package/build/cjs/test/transactions.js +11 -11
  28. package/build/cjs/test/transactions.js.map +1 -1
  29. package/build/esm/core/client.d.ts +3 -3
  30. package/build/esm/core/client.js +3 -3
  31. package/build/esm/core/client.js.map +1 -1
  32. package/build/esm/core/decorator.d.ts +12 -0
  33. package/build/esm/core/decorator.js +17 -4
  34. package/build/esm/core/decorator.js.map +1 -1
  35. package/build/esm/core/table.d.ts +27 -9
  36. package/build/esm/core/table.js +130 -28
  37. package/build/esm/core/table.js.map +1 -1
  38. package/build/esm/decorators/hooks.d.ts +35 -0
  39. package/build/esm/decorators/hooks.js +47 -0
  40. package/build/esm/decorators/hooks.js.map +1 -0
  41. package/build/esm/decorators/transforms.js +2 -2
  42. package/build/esm/decorators/transforms.js.map +1 -1
  43. package/build/esm/index.d.ts +2 -0
  44. package/build/esm/index.js +2 -0
  45. package/build/esm/index.js.map +1 -1
  46. package/build/esm/test/basic.js +2 -2
  47. package/build/esm/test/basic.js.map +1 -1
  48. package/build/esm/test/contracts.js +7 -7
  49. package/build/esm/test/contracts.js.map +1 -1
  50. package/build/esm/test/hooks.d.ts +1 -0
  51. package/build/esm/test/hooks.js +188 -0
  52. package/build/esm/test/hooks.js.map +1 -0
  53. package/build/esm/test/index.js +2 -0
  54. package/build/esm/test/index.js.map +1 -1
  55. package/build/esm/test/transactions.js +11 -11
  56. package/build/esm/test/transactions.js.map +1 -1
  57. package/package.json +1 -1
@@ -87,10 +87,10 @@ export declare class TransactionContext {
87
87
  addDelete(table_name: string, key: Record<string, any>): void;
88
88
  addUpdate(table_name: string, key: Record<string, any>, expression: string, names: Record<string, string>, values: Record<string, any>): void;
89
89
  /**
90
- * @description Register a callback to run after successful commit.
91
- * @description Registra un callback que se ejecuta después de un commit exitoso.
90
+ * @description Register a callback (sync or async) to run after successful commit.
91
+ * @description Registra un callback (síncrono o asíncrono) que se ejecuta después de un commit exitoso.
92
92
  */
93
- onCommit(fn: () => void): void;
93
+ onCommit(fn: () => void | Promise<void>): void;
94
94
  commit(): Promise<void>;
95
95
  private guard;
96
96
  }
@@ -357,8 +357,8 @@ class TransactionContext {
357
357
  });
358
358
  }
359
359
  /**
360
- * @description Register a callback to run after successful commit.
361
- * @description Registra un callback que se ejecuta después de un commit exitoso.
360
+ * @description Register a callback (sync or async) to run after successful commit.
361
+ * @description Registra un callback (síncrono o asíncrono) que se ejecuta después de un commit exitoso.
362
362
  */
363
363
  onCommit(fn) {
364
364
  this.after_commit.push(fn);
@@ -372,7 +372,7 @@ class TransactionContext {
372
372
  await this.client.send(new client_dynamodb_1.TransactWriteItemsCommand({ TransactItems: chunk }));
373
373
  }
374
374
  for (const fn of this.after_commit)
375
- fn();
375
+ await fn();
376
376
  }
377
377
  guard() {
378
378
  if (this.operations.length >= 100) {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/client.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,16 @@
4
4
  * @description Sistema de decoradores minimalista con Symbol storage
5
5
  */
6
6
  export declare const SCHEMA: unique symbol;
7
+ /**
8
+ * @description Lifecycle hook types supported by models.
9
+ * @description Tipos de hooks de ciclo de vida soportados por los modelos.
10
+ */
11
+ export type HookType = 'beforeCreate' | 'afterCreate' | 'beforeUpdate' | 'afterUpdate' | 'beforeDestroy' | 'afterDestroy';
7
12
  export interface Schema {
8
13
  name: string;
9
14
  primary_key: string;
10
15
  gsis: Set<string>;
16
+ hooks: Record<HookType, string[]>;
11
17
  columns: Record<string, {
12
18
  name: string;
13
19
  get: ((value: any) => any)[];
@@ -31,6 +37,12 @@ export interface Schema {
31
37
  };
32
38
  }>;
33
39
  }
40
+ /**
41
+ * @description Get (or lazily create) the Schema bound to a model class, with columns and hooks initialized.
42
+ * @description Obtiene (o crea perezosamente) el Schema asociado a una clase de modelo, con columns y hooks inicializados.
43
+ * @param ctor Model class constructor / Constructor de la clase del modelo
44
+ */
45
+ export declare function getSchema(ctor: any): Schema;
34
46
  /**
35
47
  * @description Factory to create decorators with argument support and composition
36
48
  * @description Factory para crear decoradores con soporte de argumentos y composición
@@ -6,6 +6,7 @@
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.SCHEMA = void 0;
9
+ exports.getSchema = getSchema;
9
10
  exports.decorator = decorator;
10
11
  exports.SCHEMA = Symbol('dynamite:schema');
11
12
  function toSnakePlural(str) {
@@ -15,13 +16,26 @@ function toSnakePlural(str) {
15
16
  .replace(/^_/, "");
16
17
  return snake.endsWith("s") ? snake : snake + "s";
17
18
  }
18
- function resolve(target, propertyKey) {
19
- const ctor = target.constructor;
19
+ /**
20
+ * @description Get (or lazily create) the Schema bound to a model class, with columns and hooks initialized.
21
+ * @description Obtiene (o crea perezosamente) el Schema asociado a una clase de modelo, con columns y hooks inicializados.
22
+ * @param ctor Model class constructor / Constructor de la clase del modelo
23
+ */
24
+ function getSchema(ctor) {
20
25
  if (!Object.prototype.hasOwnProperty.call(ctor, exports.SCHEMA)) {
21
- ctor[exports.SCHEMA] = { name: toSnakePlural(ctor.name), primary_key: 'id', gsis: new Set(), columns: {} };
26
+ ctor[exports.SCHEMA] = {
27
+ name: toSnakePlural(ctor.name),
28
+ primary_key: 'id',
29
+ gsis: new Set(),
30
+ hooks: { beforeCreate: [], afterCreate: [], beforeUpdate: [], afterUpdate: [], beforeDestroy: [], afterDestroy: [] },
31
+ columns: {},
32
+ };
22
33
  }
34
+ return ctor[exports.SCHEMA];
35
+ }
36
+ function resolve(target, propertyKey) {
37
+ const schema = getSchema(target.constructor);
23
38
  const key = String(propertyKey);
24
- const schema = ctor[exports.SCHEMA];
25
39
  schema.columns[key] ||= { name: key, get: [], set: [], store: {} };
26
40
  return [schema, schema.columns[key]];
27
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../../src/core/decorator.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAuDH,8BAKC;AA1DY,QAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AA8BhD,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,KAAK,GAAG,GAAG;SACd,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;SAC1B,WAAW,EAAE;SACb,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC;AACnD,CAAC;AAED,SAAS,OAAO,CAAC,MAAW,EAAE,WAA4B;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;IAChC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,cAAM,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,cAAM,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACrG,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAChC,MAAM,MAAM,GAAW,IAAI,CAAC,cAAM,CAAC,CAAC;IACpC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACnE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,QAAmF;IAC3G,OAAO,CAAC,GAAG,MAAa,EAAE,EAAE,CAAC,CAAC,MAAW,EAAE,WAA4B,EAAE,EAAE;QACzE,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC7C,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../../src/core/decorator.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAuDH,8BAWC;AAaD,8BAKC;AAlFY,QAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAwChD,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,KAAK,GAAG,GAAG;SACd,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;SAC1B,WAAW,EAAE;SACb,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC;AACnD,CAAC;AAED;;;;GAIG;AACH,SAAgB,SAAS,CAAC,IAAS;IACjC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,cAAM,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,cAAM,CAAC,GAAG;YACb,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,WAAW,EAAE,IAAI;YACjB,IAAI,EAAE,IAAI,GAAG,EAAU;YACvB,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;YACpH,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,cAAM,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,OAAO,CAAC,MAAW,EAAE,WAA4B;IACxD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAChC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACnE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,QAAmF;IAC3G,OAAO,CAAC,GAAG,MAAa,EAAE,EAAE,CAAC,CAAC,MAAW,EAAE,WAA4B,EAAE,EAAE;QACzE,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC7C,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC;AACJ,CAAC"}
@@ -7,6 +7,19 @@ type WhereFilters<M> = {
7
7
  [N in QueryOperator]?: InferAttributes<M>[K];
8
8
  };
9
9
  };
10
+ /**
11
+ * @description Lifecycle hook signature. `this` is the model instance; update hooks receive the changes delta.
12
+ * @description Firma de un hook de ciclo de vida. `this` es la instancia del modelo; los hooks de update reciben el delta de cambios.
13
+ */
14
+ export type HookFn<T = any> = (this: T, changes?: Partial<InferAttributes<T>>) => void | Promise<void>;
15
+ /**
16
+ * @description Options for mutation operations. `hook` is opt-in (default false); `tx` runs the operation inside a transaction.
17
+ * @description Opciones para operaciones de mutación. `hook` es opt-in (default false); `tx` ejecuta la operación dentro de una transacción.
18
+ */
19
+ export interface MutationOptions {
20
+ hook?: boolean;
21
+ tx?: TransactionContext;
22
+ }
10
23
  export default class Table<T = any> {
11
24
  static [SCHEMA]: Schema;
12
25
  constructor(props?: Partial<T>);
@@ -17,10 +30,10 @@ export default class Table<T = any> {
17
30
  */
18
31
  private _toDBPayload;
19
32
  toString(): string;
20
- save(): Promise<boolean>;
21
- update(data: Partial<InferAttributes<T>>): Promise<boolean>;
22
- destroy(): Promise<null>;
23
- forceDestroy(): Promise<null>;
33
+ save(options?: MutationOptions): Promise<boolean>;
34
+ update(data: Partial<InferAttributes<T>>, options?: MutationOptions): Promise<boolean>;
35
+ destroy(options?: MutationOptions): Promise<null>;
36
+ forceDestroy(options?: MutationOptions): Promise<null>;
24
37
  attach<R>(RelatedModel: new () => R, related_id: string, pivot_data?: Record<string, any>): Promise<void>;
25
38
  detach<R>(RelatedModel: new () => R, related_id: string): Promise<void>;
26
39
  /**
@@ -29,21 +42,26 @@ export default class Table<T = any> {
29
42
  * @param related_ids Array de IDs a sincronizar
30
43
  */
31
44
  sync<R>(RelatedModel: new () => R, related_ids: string[]): Promise<void>;
32
- static create<M extends Table>(this: new (data: any) => M, data: Partial<InferAttributes<M>>, tx?: TransactionContext): Promise<M>;
45
+ /**
46
+ * @description Run the registered hooks of a given type on an instance, in declaration order.
47
+ * @description Ejecuta los hooks registrados de un tipo dado sobre una instancia, en orden de declaración.
48
+ */
49
+ private static _run_hooks;
50
+ static create<M extends Table>(this: new (data: any) => M, data: Partial<InferAttributes<M>>, options?: MutationOptions): Promise<M>;
33
51
  /**
34
52
  * @description Extract PK value from filters if the filter is a simple PK equality. Returns null otherwise.
35
53
  * @description Extrae el valor de PK de los filtros si es una igualdad simple por PK. Retorna null en otro caso.
36
54
  */
37
55
  private static _extractPK;
38
- static update<M extends Table>(this: new (data: any) => M, updates: Partial<InferAttributes<M>>, filters: Partial<InferAttributes<M>>, tx?: TransactionContext): Promise<number>;
39
- static delete<M extends Table>(this: new (data: any) => M, filters: Partial<InferAttributes<M>>, tx?: TransactionContext): Promise<number>;
56
+ static update<M extends Table>(this: new (data: any) => M, updates: Partial<InferAttributes<M>>, filters: Partial<InferAttributes<M>>, options?: MutationOptions): Promise<number>;
57
+ static delete<M extends Table>(this: new (data: any) => M, filters: Partial<InferAttributes<M>>, options?: MutationOptions): Promise<number>;
40
58
  /**
41
59
  * @description Atomically increment a numeric field by amount. Uses DynamoDB SET expression.
42
60
  * @description Incrementa atómicamente un campo numérico. Usa expresión SET de DynamoDB.
43
61
  */
44
62
  private static _atomicAdd;
45
- static increment<M extends Table>(this: new (data: any) => M, field: keyof PickByType<InferAttributes<M>, number>, amount: number, filters: WhereFilters<M>, tx?: TransactionContext): Promise<number>;
46
- static decrement<M extends Table>(this: new (data: any) => M, field: keyof PickByType<InferAttributes<M>, number>, amount: number, filters: WhereFilters<M>, tx?: TransactionContext): Promise<number>;
63
+ static increment<M extends Table>(this: new (data: any) => M, field: keyof PickByType<InferAttributes<M>, number>, amount: number, filters: WhereFilters<M>, options?: MutationOptions): Promise<number>;
64
+ static decrement<M extends Table>(this: new (data: any) => M, field: keyof PickByType<InferAttributes<M>, number>, amount: number, filters: WhereFilters<M>, options?: MutationOptions): Promise<number>;
47
65
  increment<K extends keyof PickByType<InferAttributes<T>, number>>(field: K, amount?: number): Promise<void>;
48
66
  decrement<K extends keyof PickByType<InferAttributes<T>, number>>(field: K, amount?: number): Promise<void>;
49
67
  static where<M extends Table>(this: new (props?: any) => M, key: keyof InferAttributes<M>, value: InferAttributes<M>[typeof key], options?: WhereOptions<M>): Promise<M[]>;
@@ -143,28 +143,43 @@ class Table {
143
143
  toString() {
144
144
  return JSON.stringify(this);
145
145
  }
146
- async save() {
146
+ async save(options) {
147
147
  const schema = this.constructor[decorator_1.SCHEMA];
148
- const payload = this._toDBPayload();
148
+ const tx = options?.tx;
149
149
  if (this.__isPersisted) {
150
- await (0, client_1.requireClient)().send(new client_dynamodb_1.PutItemCommand({
151
- TableName: schema.name,
152
- Item: (0, util_dynamodb_1.marshall)(payload, { removeUndefinedValues: true }),
153
- }));
150
+ if (options?.hook)
151
+ await Table._run_hooks(this, 'beforeUpdate', {});
152
+ if (tx) {
153
+ tx.addPut(schema.name, this._toDBPayload());
154
+ if (options?.hook)
155
+ tx.onCommit(() => Table._run_hooks(this, 'afterUpdate', {}));
156
+ }
157
+ else {
158
+ await (0, client_1.requireClient)().send(new client_dynamodb_1.PutItemCommand({
159
+ TableName: schema.name,
160
+ Item: (0, util_dynamodb_1.marshall)(this._toDBPayload(), { removeUndefinedValues: true }),
161
+ }));
162
+ if (options?.hook)
163
+ await Table._run_hooks(this, 'afterUpdate', {});
164
+ }
154
165
  return true;
155
166
  }
167
+ if (options?.hook)
168
+ await Table._run_hooks(this, 'beforeCreate');
156
169
  const created = await this.constructor.create(Object.fromEntries(Object.keys(schema.columns)
157
170
  .filter(k => !schema.columns[k].store?.relation)
158
- .map(k => [k, this[k]])));
171
+ .map(k => [k, this[k]])), { hook: false, tx });
159
172
  for (const key in schema.columns) {
160
173
  if (!schema.columns[key].store?.relation) {
161
174
  this[key] = created[key];
162
175
  }
163
176
  }
164
177
  this.__isPersisted = true;
178
+ if (options?.hook)
179
+ await Table._run_hooks(this, 'afterCreate');
165
180
  return true;
166
181
  }
167
- async update(data) {
182
+ async update(data, options) {
168
183
  const schema = this.constructor[decorator_1.SCHEMA];
169
184
  // Filtrar relaciones (ignorarlas) en vez de lanzar error
170
185
  const filtered_data = {};
@@ -175,9 +190,35 @@ class Table {
175
190
  filtered_data[key] = data[key];
176
191
  }
177
192
  }
193
+ // Ruta con hooks: aplicar cambios y persistir sobre esta misma instancia
194
+ if (options?.hook) {
195
+ for (const key in filtered_data) {
196
+ this[key] = filtered_data[key];
197
+ }
198
+ // Auto-renovar campos @UpdatedAt no incluidos en los cambios
199
+ for (const col_name in schema.columns) {
200
+ if (schema.columns[col_name].store?.updatedAt && !(col_name in filtered_data)) {
201
+ this[col_name] = undefined;
202
+ }
203
+ }
204
+ await Table._run_hooks(this, 'beforeUpdate', filtered_data);
205
+ const tx = options.tx;
206
+ if (tx) {
207
+ tx.addPut(schema.name, this._toDBPayload());
208
+ tx.onCommit(() => Table._run_hooks(this, 'afterUpdate', filtered_data));
209
+ }
210
+ else {
211
+ await (0, client_1.requireClient)().send(new client_dynamodb_1.PutItemCommand({
212
+ TableName: schema.name,
213
+ Item: (0, util_dynamodb_1.marshall)(this._toDBPayload(), { removeUndefinedValues: true }),
214
+ }));
215
+ await Table._run_hooks(this, 'afterUpdate', filtered_data);
216
+ }
217
+ return true;
218
+ }
178
219
  const affected = await this.constructor.update(filtered_data, {
179
220
  [schema.primary_key]: this[schema.primary_key],
180
- });
221
+ }, { tx: options?.tx });
181
222
  if (affected > 0) {
182
223
  // Actualizar la instancia con los nuevos valores (incluyendo updated_at)
183
224
  for (const key in filtered_data) {
@@ -186,29 +227,58 @@ class Table {
186
227
  }
187
228
  return affected > 0;
188
229
  }
189
- async destroy() {
230
+ async destroy(options) {
190
231
  const schema = this.constructor[decorator_1.SCHEMA];
191
232
  const id = this[schema.primary_key];
192
233
  if (!id)
193
234
  throw new Error("Cannot destroy record without ID");
235
+ if (options?.hook)
236
+ await Table._run_hooks(this, 'beforeDestroy');
237
+ let soft_col = null;
194
238
  for (const column_name in schema.columns) {
195
239
  if (schema.columns[column_name].store?.softDelete) {
196
- this[column_name] = new Date().toISOString();
197
- await this.save();
198
- return null;
240
+ soft_col = column_name;
241
+ break;
199
242
  }
200
243
  }
201
- return this.forceDestroy();
244
+ if (soft_col) {
245
+ this[soft_col] = new Date().toISOString();
246
+ await this.save({ tx: options?.tx });
247
+ }
248
+ else {
249
+ await this.forceDestroy({ tx: options?.tx });
250
+ }
251
+ if (options?.hook) {
252
+ if (options.tx)
253
+ options.tx.onCommit(() => Table._run_hooks(this, 'afterDestroy'));
254
+ else
255
+ await Table._run_hooks(this, 'afterDestroy');
256
+ }
257
+ return null;
202
258
  }
203
- async forceDestroy() {
259
+ async forceDestroy(options) {
204
260
  const schema = this.constructor[decorator_1.SCHEMA];
205
261
  const id = this[schema.primary_key];
206
262
  if (!id)
207
263
  throw new Error("Cannot destroy record without ID");
208
- await (0, client_1.requireClient)().send(new client_dynamodb_1.DeleteItemCommand({
209
- TableName: schema.name,
210
- Key: (0, util_dynamodb_1.marshall)({ [schema.primary_key]: id }),
211
- }));
264
+ if (options?.hook)
265
+ await Table._run_hooks(this, 'beforeDestroy');
266
+ const tx = options?.tx;
267
+ if (tx) {
268
+ tx.addDelete(schema.name, { [schema.primary_key]: id });
269
+ }
270
+ else {
271
+ await (0, client_1.requireClient)().send(new client_dynamodb_1.DeleteItemCommand({
272
+ TableName: schema.name,
273
+ Key: (0, util_dynamodb_1.marshall)({ [schema.primary_key]: id }),
274
+ }));
275
+ }
276
+ if (options?.hook) {
277
+ if (tx)
278
+ tx.onCommit(() => Table._run_hooks(this, 'afterDestroy'));
279
+ else
280
+ await Table._run_hooks(this, 'afterDestroy');
281
+ }
212
282
  return null;
213
283
  }
214
284
  async attach(RelatedModel, related_id, pivot_data) {
@@ -350,9 +420,22 @@ class Table {
350
420
  }
351
421
  }
352
422
  }
353
- static async create(data, tx) {
423
+ /**
424
+ * @description Run the registered hooks of a given type on an instance, in declaration order.
425
+ * @description Ejecuta los hooks registrados de un tipo dado sobre una instancia, en orden de declaración.
426
+ */
427
+ static async _run_hooks(instance, type, changes) {
428
+ const schema = instance.constructor[decorator_1.SCHEMA];
429
+ for (const method_name of schema.hooks[type]) {
430
+ await instance[method_name]?.(changes);
431
+ }
432
+ }
433
+ static async create(data, options) {
354
434
  const instance = new this(data);
355
435
  const schema = this[decorator_1.SCHEMA];
436
+ const tx = options?.tx;
437
+ if (options?.hook)
438
+ await Table._run_hooks(instance, 'beforeCreate');
356
439
  const payload = instance._toDBPayload();
357
440
  const pk_db_name = schema.columns[schema.primary_key]?.name || schema.primary_key;
358
441
  const condition = {
@@ -362,6 +445,8 @@ class Table {
362
445
  if (tx) {
363
446
  tx.addPut(schema.name, payload, condition);
364
447
  tx.onCommit(() => { instance.__isPersisted = true; });
448
+ if (options?.hook)
449
+ tx.onCommit(() => Table._run_hooks(instance, 'afterCreate'));
365
450
  }
366
451
  else {
367
452
  try {
@@ -379,6 +464,8 @@ class Table {
379
464
  throw e;
380
465
  }
381
466
  instance.__isPersisted = true;
467
+ if (options?.hook)
468
+ await Table._run_hooks(instance, 'afterCreate');
382
469
  }
383
470
  return instance;
384
471
  }
@@ -402,8 +489,9 @@ class Table {
402
489
  return val[op_keys[0]];
403
490
  return null;
404
491
  }
405
- static async update(updates, filters, tx) {
492
+ static async update(updates, filters, options) {
406
493
  const schema = this[decorator_1.SCHEMA];
494
+ const tx = options?.tx;
407
495
  const parsed_updates = {};
408
496
  for (const key in updates) {
409
497
  const column = schema.columns[key];
@@ -450,24 +538,32 @@ class Table {
450
538
  record[col_name] = undefined;
451
539
  }
452
540
  }
541
+ if (options?.hook)
542
+ await Table._run_hooks(record, 'beforeUpdate', parsed_updates);
453
543
  if (tx) {
454
544
  tx.addPut(schema.name, record._toDBPayload());
545
+ if (options?.hook)
546
+ tx.onCommit(() => Table._run_hooks(record, 'afterUpdate', parsed_updates));
455
547
  }
456
548
  else {
457
549
  await (0, client_1.requireClient)().send(new client_dynamodb_1.PutItemCommand({
458
550
  TableName: schema.name,
459
551
  Item: (0, util_dynamodb_1.marshall)(record._toDBPayload(), { removeUndefinedValues: true }),
460
552
  }));
553
+ if (options?.hook)
554
+ await Table._run_hooks(record, 'afterUpdate', parsed_updates);
461
555
  }
462
556
  }
463
557
  return records.length;
464
558
  }
465
- static async delete(filters, tx) {
559
+ static async delete(filters, options) {
466
560
  const schema = this[decorator_1.SCHEMA];
467
- // Optimización: si el filtro es PK exacta y no hay softDelete, DeleteItem directo
561
+ const tx = options?.tx;
562
+ // Optimización: si el filtro es PK exacta, sin softDelete y sin hooks de destroy, DeleteItem directo
468
563
  const pk_value = this._extractPK(filters);
469
564
  const has_soft_delete = Object.values(schema.columns).some(c => c.store.softDelete);
470
- if (pk_value !== null && !has_soft_delete) {
565
+ const has_destroy_hooks = !!options?.hook && (schema.hooks.beforeDestroy.length > 0 || schema.hooks.afterDestroy.length > 0);
566
+ if (pk_value !== null && !has_soft_delete && !has_destroy_hooks) {
471
567
  if (tx) {
472
568
  tx.addDelete(schema.name, { [schema.primary_key]: pk_value });
473
569
  }
@@ -487,14 +583,20 @@ class Table {
487
583
  const id = record[schema.primary_key];
488
584
  if (!id)
489
585
  continue;
586
+ if (options?.hook)
587
+ await Table._run_hooks(record, 'beforeDestroy');
490
588
  if (tx) {
491
589
  tx.addDelete(schema.name, { [schema.primary_key]: id });
590
+ if (options?.hook)
591
+ tx.onCommit(() => Table._run_hooks(record, 'afterDestroy'));
492
592
  }
493
593
  else {
494
594
  await (0, client_1.requireClient)().send(new client_dynamodb_1.DeleteItemCommand({
495
595
  TableName: schema.name,
496
596
  Key: (0, util_dynamodb_1.marshall)({ [schema.primary_key]: id }),
497
597
  }));
598
+ if (options?.hook)
599
+ await Table._run_hooks(record, 'afterDestroy');
498
600
  }
499
601
  }
500
602
  return records.length;
@@ -549,11 +651,11 @@ class Table {
549
651
  }
550
652
  return records.length;
551
653
  }
552
- static async increment(field, amount, filters, tx) {
553
- return Table._atomicAdd(this, field, amount, filters, tx);
654
+ static async increment(field, amount, filters, options) {
655
+ return Table._atomicAdd(this, field, amount, filters, options?.tx);
554
656
  }
555
- static async decrement(field, amount, filters, tx) {
556
- return Table._atomicAdd(this, field, -amount, filters, tx);
657
+ static async decrement(field, amount, filters, options) {
658
+ return Table._atomicAdd(this, field, -amount, filters, options?.tx);
557
659
  }
558
660
  async increment(field, amount = 1) {
559
661
  const schema = this.constructor[decorator_1.SCHEMA];