1 | import { ValidationOptions } from './instance-validator';
|
2 | import Model, {
|
3 | BulkCreateOptions,
|
4 | CountOptions,
|
5 | CreateOptions,
|
6 | DestroyOptions,
|
7 | FindOptions,
|
8 | InstanceDestroyOptions,
|
9 | InstanceUpdateOptions,
|
10 | ModelAttributes,
|
11 | ModelOptions,
|
12 | UpdateOptions,
|
13 | } from './model';
|
14 | import { Config, Options, Sequelize, SyncOptions } from './sequelize';
|
15 |
|
16 | export type HookReturn = Promise<void> | void;
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 | export interface ModelHooks<M extends Model = Model> {
|
23 | beforeValidate(instance: M, options: ValidationOptions): HookReturn;
|
24 | afterValidate(instance: M, options: ValidationOptions): HookReturn;
|
25 | beforeCreate(attributes: M, options: CreateOptions): HookReturn;
|
26 | afterCreate(attributes: M, options: CreateOptions): HookReturn;
|
27 | beforeDestroy(instance: M, options: InstanceDestroyOptions): HookReturn;
|
28 | afterDestroy(instance: M, options: InstanceDestroyOptions): HookReturn;
|
29 | beforeUpdate(instance: M, options: InstanceUpdateOptions): HookReturn;
|
30 | afterUpdate(instance: M, options: InstanceUpdateOptions): HookReturn;
|
31 | beforeSave(instance: M, options: InstanceUpdateOptions | CreateOptions): HookReturn;
|
32 | afterSave(instance: M, options: InstanceUpdateOptions | CreateOptions): HookReturn;
|
33 | beforeBulkCreate(instances: M[], options: BulkCreateOptions): HookReturn;
|
34 | afterBulkCreate(instances: M[], options: BulkCreateOptions): HookReturn;
|
35 | beforeBulkDestroy(options: DestroyOptions): HookReturn;
|
36 | afterBulkDestroy(options: DestroyOptions): HookReturn;
|
37 | beforeBulkUpdate(options: UpdateOptions): HookReturn;
|
38 | afterBulkUpdate(options: UpdateOptions): HookReturn;
|
39 | beforeFind(options: FindOptions): HookReturn;
|
40 | beforeCount(options: CountOptions): HookReturn;
|
41 | beforeFindAfterExpandIncludeAll(options: FindOptions): HookReturn;
|
42 | beforeFindAfterOptions(options: FindOptions): HookReturn;
|
43 | afterFind(instancesOrInstance: M[] | M | null, options: FindOptions): HookReturn;
|
44 | beforeSync(options: SyncOptions): HookReturn;
|
45 | afterSync(options: SyncOptions): HookReturn;
|
46 | beforeBulkSync(options: SyncOptions): HookReturn;
|
47 | afterBulkSync(options: SyncOptions): HookReturn;
|
48 | }
|
49 |
|
50 | export interface SequelizeHooks extends ModelHooks {
|
51 | beforeDefine(attributes: ModelAttributes, options: ModelOptions<Model>): void;
|
52 | afterDefine(model: typeof Model): void;
|
53 | beforeInit(config: Config, options: Options): void;
|
54 | afterInit(sequelize: Sequelize): void;
|
55 | beforeConnect(config: Config): HookReturn;
|
56 | afterConnect(connection: unknown, config: Config): HookReturn;
|
57 | beforeDisconnect(connection: unknown): HookReturn;
|
58 | afterDisconnect(connection: unknown): HookReturn;
|
59 | }
|
60 |
|
61 |
|
62 |
|
63 |
|
64 | export class Hooks {
|
65 | |
66 |
|
67 |
|
68 |
|
69 |
|
70 |
|
71 | public static addHook<C extends typeof Hooks, K extends keyof SequelizeHooks>(
|
72 | hookType: K,
|
73 | name: string,
|
74 | fn: SequelizeHooks[K]
|
75 | ): C;
|
76 | public static addHook<C extends typeof Hooks, K extends keyof SequelizeHooks>(
|
77 | hookType: K,
|
78 | fn: SequelizeHooks[K]
|
79 | ): C;
|
80 |
|
81 | |
82 |
|
83 |
|
84 | public static removeHook<C extends typeof Hooks, K extends keyof SequelizeHooks>(hookType: K, name: string): C;
|
85 |
|
86 | |
87 |
|
88 |
|
89 | public static hasHook<K extends keyof SequelizeHooks>(hookType: K): boolean;
|
90 | public static hasHooks<K extends keyof SequelizeHooks>(hookType: K): boolean;
|
91 |
|
92 | |
93 |
|
94 |
|
95 |
|
96 |
|
97 |
|
98 | public addHook<K extends keyof SequelizeHooks>(hookType: K, name: string, fn: SequelizeHooks[K]): this;
|
99 | public addHook<K extends keyof SequelizeHooks>(hookType: K, fn: SequelizeHooks[K]): this;
|
100 | |
101 |
|
102 |
|
103 | public removeHook<K extends keyof SequelizeHooks>(hookType: K, name: string): this;
|
104 |
|
105 | |
106 |
|
107 |
|
108 | public hasHook<K extends keyof SequelizeHooks>(hookType: K): boolean;
|
109 | public hasHooks<K extends keyof SequelizeHooks>(hookType: K): boolean;
|
110 | }
|