fiberx-backend-toolkit 0.1.20 → 1.0.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/README.md +207 -139
- package/dist/code_templates/sequelize_code_template.d.ts +1 -1
- package/dist/code_templates/sequelize_code_template.js +127 -74
- package/dist/config/constants.d.ts +1 -0
- package/dist/config/constants.js +82 -15
- package/dist/database/connectors/sequelize_connector.d.ts +2 -0
- package/dist/database/connectors/sequelize_connector.js +43 -21
- package/dist/database/main.d.ts +3 -2
- package/dist/database/main.js +4 -2
- package/dist/database/schema/schema_diff_util.d.ts +0 -1
- package/dist/database/schema/schema_diff_util.js +7 -15
- package/dist/database/scripts/create_schema_script.js +6 -3
- package/dist/database/scripts/make_migrations_script.js +17 -10
- package/dist/database/scripts/migration_runner_script.d.ts +3 -1
- package/dist/database/scripts/migration_runner_script.js +58 -23
- package/dist/database/scripts/seeder_runner_script.d.ts +3 -1
- package/dist/database/scripts/seeder_runner_script.js +49 -17
- package/dist/database/scripts/sequelize_model_generator_script.d.ts +2 -2
- package/dist/database/scripts/sequelize_model_generator_script.js +11 -5
- package/dist/index.d.ts +7 -0
- package/dist/index.js +7 -0
- package/dist/mailer/main.d.ts +1 -1
- package/dist/mailer/processors/email_delivery_processor.js +45 -13
- package/dist/mailer/processors/email_enqueue_processor.js +23 -7
- package/dist/mailer/utils/mailer_data_loader_util.d.ts +4 -4
- package/dist/mailer/utils/mailer_data_loader_util.js +5 -5
- package/dist/middle_ware/authentication_middle_ware.d.ts +3 -3
- package/dist/middle_ware/authentication_middle_ware.js +27 -25
- package/dist/middle_ware/cookie_manager_middle_ware.js +1 -1
- package/dist/middle_ware/main.d.ts +3 -2
- package/dist/middle_ware/main.js +4 -2
- package/dist/middle_ware/rate_limiter_middle_ware.js +0 -1
- package/dist/middle_ware/request_logger_middle_ware.js +2 -1
- package/dist/middle_ware/response_formatter_middle_ware.js +5 -4
- package/dist/middle_ware/secure_headers_middle_ware.js +2 -1
- package/dist/rbac/rbac_loader_util.js +2 -2
- package/dist/storage/drivers/gcs_storage_driver.js +5 -5
- package/dist/storage/drivers/local_storage_driver.js +2 -2
- package/dist/storage/main.d.ts +1 -1
- package/dist/storage/processors/file_upload_processor.js +4 -4
- package/dist/storage/utils/storage_driver_util.d.ts +1 -1
- package/dist/storage/utils/storage_driver_util.js +12 -10
- package/dist/types/express_decelaration.d.ts +1 -1
- package/dist/types/express_decelaration.js +0 -1
- package/dist/types/middle_ware_type.d.ts +14 -12
- package/dist/types/middle_ware_type.js +0 -2
- package/dist/types/schema_type.js +0 -1
- package/dist/types/util_type.js +0 -1
- package/dist/utils/content_manager_util.js +11 -9
- package/dist/utils/crypto_key_util.js +9 -10
- package/dist/utils/encryptor_decryptor_util.js +19 -9
- package/dist/utils/env_manager_util.d.ts +1 -0
- package/dist/utils/env_manager_util.js +10 -2
- package/dist/utils/fs_actions_util.js +1 -1
- package/dist/utils/input_transformer_util.js +11 -25
- package/dist/utils/input_validator_util.d.ts +1 -1
- package/dist/utils/input_validator_util.js +78 -27
- package/dist/utils/logger_util.d.ts +2 -2
- package/dist/utils/logger_util.js +23 -9
- package/dist/utils/main.d.ts +1 -1
- package/dist/utils/safe_execute_util.js +21 -11
- package/dist/utils/sql_formatter_util.js +1 -5
- package/dist/utils/totp_service_util.js +3 -7
- package/dist/utils/uuid_gen_util.js +6 -2
- package/dist/validators/file_validator_util.js +2 -2
- package/dist/validators/query_validator_util.js +3 -3
- package/package.json +68 -2
package/README.md
CHANGED
|
@@ -1,23 +1,13 @@
|
|
|
1
1
|
# FiberX Backend Toolkit
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Shared TypeScript backend utilities for FiberX services. The package includes Sequelize connection helpers, schema-driven migration generation, migration and seeder runners, Express middleware, storage helpers, mailer processors, RBAC loading, validators, and common utilities.
|
|
4
4
|
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
The FiberX Backend Toolkit is a centralized library designed to streamline backend development across FiberX services. It provides database abstraction layers, migration management, utilities for common operations, and TypeScript type definitions for consistency across the ecosystem.
|
|
8
|
-
|
|
9
|
-
## Features
|
|
5
|
+
## Requirements
|
|
10
6
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
- Input validation and transformation
|
|
16
|
-
- Environment variable management
|
|
17
|
-
- SQL formatting and query building
|
|
18
|
-
- Structured logging with file persistence
|
|
19
|
-
- **TypeScript Support**: Fully typed exports for schema, migration, and utility types
|
|
20
|
-
- **Flexible Exports**: Modular exports for `utils`, `types`, and `database` modules
|
|
7
|
+
- Node.js 20.x
|
|
8
|
+
- TypeScript projects using CommonJS or transpiled output
|
|
9
|
+
- Sequelize v6
|
|
10
|
+
- A project-level environment file in `environment_variables/`
|
|
21
11
|
|
|
22
12
|
## Installation
|
|
23
13
|
|
|
@@ -25,191 +15,269 @@ The FiberX Backend Toolkit is a centralized library designed to streamline backe
|
|
|
25
15
|
npm install fiberx-backend-toolkit
|
|
26
16
|
```
|
|
27
17
|
|
|
28
|
-
##
|
|
18
|
+
## Quality Commands
|
|
29
19
|
|
|
30
|
-
|
|
31
|
-
|
|
20
|
+
```bash
|
|
21
|
+
npm run typecheck
|
|
22
|
+
npm run lint
|
|
23
|
+
npm run format:check
|
|
24
|
+
npm run spell:check
|
|
25
|
+
npm run build
|
|
26
|
+
npm run check
|
|
27
|
+
```
|
|
32
28
|
|
|
33
|
-
|
|
29
|
+
Use `npm run format` to apply Prettier formatting locally. The CI workflow runs type checking, linting, formatting checks, spell checking, and the build on every push and pull request.
|
|
34
30
|
|
|
35
|
-
|
|
31
|
+
## Import Paths
|
|
36
32
|
|
|
37
|
-
```
|
|
38
|
-
import
|
|
33
|
+
```ts
|
|
34
|
+
import { LoggerUtil, EnvManagerUtil } from "fiberx-backend-toolkit/utils";
|
|
35
|
+
import { SequelizeConnector, MigrationRunnerScript } from "fiberx-backend-toolkit/database";
|
|
36
|
+
import { AuthenticationMiddleWare } from "fiberx-backend-toolkit/middle-ware";
|
|
37
|
+
import type { SchemaDefinitionInterface } from "fiberx-backend-toolkit/types";
|
|
39
38
|
```
|
|
40
39
|
|
|
41
|
-
|
|
40
|
+
The root package also re-exports the public modules:
|
|
42
41
|
|
|
43
|
-
```
|
|
44
|
-
import {
|
|
42
|
+
```ts
|
|
43
|
+
import { SequelizeConnector, LoggerUtil } from "fiberx-backend-toolkit";
|
|
44
|
+
```
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
const logger = new LoggerUtil("my-module");
|
|
48
|
-
logger.info("Application started");
|
|
46
|
+
## Environment Configuration
|
|
49
47
|
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
By default, the toolkit reads YAML files from:
|
|
49
|
+
|
|
50
|
+
```text
|
|
51
|
+
environment_variables/
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
The file is selected from `process.env.MODE`:
|
|
55
55
|
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
```text
|
|
57
|
+
development -> development_env.yaml
|
|
58
|
+
staging -> staging_env.yaml
|
|
59
|
+
production -> production_env.yaml
|
|
60
|
+
```
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
Example:
|
|
63
|
+
|
|
64
|
+
```yaml
|
|
65
|
+
MODE: development
|
|
66
|
+
DB_DIALECT: postgres
|
|
67
|
+
DB_HOST: localhost
|
|
68
|
+
DB_PORT: 5432
|
|
69
|
+
DB_NAME: fiberx_app
|
|
70
|
+
DB_USER: postgres
|
|
71
|
+
DB_PASSWORD: postgres
|
|
72
|
+
DB_LOGGING: false
|
|
65
73
|
```
|
|
66
74
|
|
|
67
|
-
|
|
75
|
+
For compatibility, the previous misspelled `environment_variables/` directory is still read if the corrected directory is not present.
|
|
76
|
+
|
|
77
|
+
## Database Connection
|
|
78
|
+
|
|
79
|
+
Use `SequelizeConnector.getInstance()` rather than constructing the connector directly.
|
|
80
|
+
|
|
81
|
+
```ts
|
|
82
|
+
import { SequelizeConnector } from "fiberx-backend-toolkit/database";
|
|
68
83
|
|
|
69
|
-
|
|
84
|
+
const connector = SequelizeConnector.getInstance();
|
|
70
85
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
86
|
+
const sequelize = await connector.connect({
|
|
87
|
+
name: "default",
|
|
88
|
+
dialect: "postgres",
|
|
89
|
+
database: "fiberx_app",
|
|
90
|
+
username: "postgres",
|
|
91
|
+
password: "postgres",
|
|
92
|
+
host: "localhost",
|
|
93
|
+
port: 5432,
|
|
94
|
+
logging: false,
|
|
95
|
+
});
|
|
96
|
+
```
|
|
76
97
|
|
|
77
|
-
|
|
98
|
+
`connect()` authenticates and attempts database creation for supported SQL dialects. `connectSync()` only creates a Sequelize instance and is useful when model files need to be initialized before application bootstrap.
|
|
78
99
|
|
|
79
|
-
|
|
80
|
-
- **BaseConnector**: Abstract base class for database connections
|
|
81
|
-
- **SequelizeConnector**: Sequelize ORM connector implementation
|
|
100
|
+
## Directory Convention
|
|
82
101
|
|
|
83
|
-
|
|
84
|
-
- **SchemaDiffUtil**: Compare database schemas and detect changes
|
|
85
|
-
- **SchemaNormalizerUtil**: Normalize schema definitions for consistency
|
|
102
|
+
The generator and runner scripts expect these project-root paths:
|
|
86
103
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
104
|
+
```text
|
|
105
|
+
src/database/
|
|
106
|
+
schemas/
|
|
107
|
+
schema_snapshots/
|
|
108
|
+
models/
|
|
109
|
+
migrations/
|
|
110
|
+
seeders/
|
|
111
|
+
```
|
|
93
112
|
|
|
94
|
-
|
|
113
|
+
Missing directories are created where the scripts need them.
|
|
114
|
+
|
|
115
|
+
## Schema Definitions
|
|
116
|
+
|
|
117
|
+
Schemas are plain TypeScript files with a default export:
|
|
118
|
+
|
|
119
|
+
```ts
|
|
120
|
+
import { DataTypes } from "sequelize";
|
|
121
|
+
import type { SchemaDefinitionInterface } from "fiberx-backend-toolkit/types";
|
|
122
|
+
|
|
123
|
+
const UserSchema: SchemaDefinitionInterface = {
|
|
124
|
+
connection_name: "default",
|
|
125
|
+
database_name: "public",
|
|
126
|
+
migration_priority: 1,
|
|
127
|
+
table_name: "users",
|
|
128
|
+
model_name: "User",
|
|
129
|
+
timestamps: true,
|
|
130
|
+
columns: {
|
|
131
|
+
id: {
|
|
132
|
+
type: DataTypes.BIGINT,
|
|
133
|
+
primaryKey: true,
|
|
134
|
+
autoIncrement: true,
|
|
135
|
+
allowNull: false,
|
|
136
|
+
},
|
|
137
|
+
email: {
|
|
138
|
+
type: DataTypes.STRING(255),
|
|
139
|
+
allowNull: false,
|
|
140
|
+
unique: true,
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
indexes: [{ name: "users_email_unique", fields: ["email"], unique: true }],
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
export default UserSchema;
|
|
147
|
+
```
|
|
95
148
|
|
|
96
|
-
|
|
97
|
-
- **MigrationInterface**: Migration type definitions
|
|
98
|
-
- **UtilInterface**: Utility function types
|
|
149
|
+
You can scaffold a schema:
|
|
99
150
|
|
|
100
|
-
|
|
151
|
+
```ts
|
|
152
|
+
import { CreateSchemaScript } from "fiberx-backend-toolkit/database";
|
|
101
153
|
|
|
102
|
-
|
|
154
|
+
new CreateSchemaScript("User").run();
|
|
155
|
+
```
|
|
103
156
|
|
|
104
|
-
|
|
105
|
-
// Main exports (all modules)
|
|
106
|
-
import * as toolkit from "fiberx-backend-toolkit";
|
|
157
|
+
## Migration Workflow
|
|
107
158
|
|
|
108
|
-
|
|
109
|
-
import { LoggerUtil, InputValidatorUtil } from "fiberx-backend-toolkit/utils";
|
|
159
|
+
Generate migrations from schema changes:
|
|
110
160
|
|
|
111
|
-
|
|
112
|
-
import {
|
|
161
|
+
```ts
|
|
162
|
+
import { MakeMigrationsScript } from "fiberx-backend-toolkit/database";
|
|
113
163
|
|
|
114
|
-
|
|
115
|
-
import type { SchemaInterface } from "fiberx-backend-toolkit/types";
|
|
164
|
+
new MakeMigrationsScript().run();
|
|
116
165
|
```
|
|
117
166
|
|
|
118
|
-
|
|
167
|
+
Run migrations:
|
|
119
168
|
|
|
120
|
-
|
|
169
|
+
```ts
|
|
170
|
+
import { MigrationRunnerScript } from "fiberx-backend-toolkit/database";
|
|
121
171
|
|
|
172
|
+
await new MigrationRunnerScript().run("up");
|
|
122
173
|
```
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
│ ├── schema_snapshots/ # Schema snapshots for comparison
|
|
129
|
-
│ ├── models/ # Sequelize models
|
|
130
|
-
│ ├── migrations/ # Database migrations
|
|
131
|
-
│ └── seeders/ # Database seeders
|
|
174
|
+
|
|
175
|
+
Rollback migrations:
|
|
176
|
+
|
|
177
|
+
```ts
|
|
178
|
+
await new MigrationRunnerScript().run("down");
|
|
132
179
|
```
|
|
133
180
|
|
|
134
|
-
|
|
181
|
+
Run a specific migration file:
|
|
135
182
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
- **axios**: ^1.11.0 - HTTP client
|
|
140
|
-
- **bcrypt**: ^6.0.0 - Password hashing
|
|
141
|
-
- **jsonwebtoken**: ^9.0.2 - JWT handling
|
|
142
|
-
- **dayjs**: ^1.11.18 - Date/time utilities
|
|
143
|
-
- **js-yaml**: ^4.1.0 - YAML parsing
|
|
144
|
-
- **uuid**: ^12.0.0 - UUID generation
|
|
183
|
+
```ts
|
|
184
|
+
await new MigrationRunnerScript().run("up", undefined, "1_20260515120000_create_table_users.ts");
|
|
185
|
+
```
|
|
145
186
|
|
|
146
|
-
|
|
187
|
+
Migration runner behavior:
|
|
188
|
+
|
|
189
|
+
- Tracks applied migrations in `sequelize_database_tables_meta`.
|
|
190
|
+
- Supports both `.ts` and `.js` migration files and ignores `.d.ts`.
|
|
191
|
+
- Uses dialect-safe quoting for metadata reads.
|
|
192
|
+
- Sorts by numeric migration priority, then filename.
|
|
193
|
+
- Runs toolkit-generated migrations and metadata updates in a Sequelize transaction.
|
|
194
|
+
- Skips already-applied migrations on `up` and skips unapplied migrations on `down`.
|
|
195
|
+
|
|
196
|
+
When running TypeScript migration files directly, execute your script with `ts-node` and `tsconfig-paths/register` so path aliases resolve.
|
|
147
197
|
|
|
148
198
|
```bash
|
|
149
|
-
|
|
199
|
+
node -r ts-node/register -r tsconfig-paths/register ./scripts/migrate.ts
|
|
150
200
|
```
|
|
151
201
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
## API Documentation
|
|
202
|
+
## Model Generation
|
|
155
203
|
|
|
156
|
-
|
|
204
|
+
Generate Sequelize model files from schemas:
|
|
157
205
|
|
|
158
|
-
```
|
|
159
|
-
|
|
206
|
+
```ts
|
|
207
|
+
import { SequelizeModelGeneratorScript } from "fiberx-backend-toolkit/database";
|
|
160
208
|
|
|
161
|
-
|
|
162
|
-
logger.warn("Warning message");
|
|
163
|
-
logger.error("Error message");
|
|
164
|
-
logger.debug("Debug message");
|
|
209
|
+
new SequelizeModelGeneratorScript().generateModelsFromSchemas();
|
|
165
210
|
```
|
|
166
211
|
|
|
167
|
-
|
|
212
|
+
The old misspelled `SeqeulizeModelGeneratorScript` export is still available for compatibility.
|
|
168
213
|
|
|
169
|
-
|
|
214
|
+
## Seeders
|
|
170
215
|
|
|
171
|
-
|
|
216
|
+
Create and run seeders:
|
|
172
217
|
|
|
173
|
-
|
|
218
|
+
```ts
|
|
219
|
+
import { CreateSeederScript, SeederRunnerScript } from "fiberx-backend-toolkit/database";
|
|
174
220
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
221
|
+
new CreateSeederScript("User", "initial_users").run();
|
|
222
|
+
|
|
223
|
+
await new SeederRunnerScript().run("up");
|
|
224
|
+
await new SeederRunnerScript().run("down", "user");
|
|
178
225
|
```
|
|
179
226
|
|
|
180
|
-
|
|
227
|
+
Seeder state is tracked in `sequelize_database_table_seeder_meta`.
|
|
181
228
|
|
|
182
|
-
|
|
229
|
+
## Express Middleware
|
|
183
230
|
|
|
184
|
-
|
|
231
|
+
```ts
|
|
232
|
+
import { AuthenticationMiddleWare } from "fiberx-backend-toolkit/middle-ware";
|
|
185
233
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
234
|
+
const auth = new AuthenticationMiddleWare({
|
|
235
|
+
extractRequestInfoMethod: async (req) => ({
|
|
236
|
+
access_token: req.headers.authorization ?? null,
|
|
237
|
+
refresh_token: null,
|
|
238
|
+
origin_url: req.headers.origin ?? "",
|
|
239
|
+
request_id: String(req.headers["x-request-id"] ?? ""),
|
|
240
|
+
}),
|
|
241
|
+
validateActorHasPermissionMethod: async (requestInfo) => {
|
|
242
|
+
return requestInfo.permission_name === "user.read";
|
|
243
|
+
},
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
app.get("/users", auth.setPermissionName("user.read"), handler);
|
|
199
247
|
```
|
|
200
248
|
|
|
201
|
-
|
|
249
|
+
`AuthenticationMiddleWare` is the corrected export. The previous `AuthenicationMiddleWare` export remains available for existing services.
|
|
250
|
+
|
|
251
|
+
## Utility Modules
|
|
252
|
+
|
|
253
|
+
```ts
|
|
254
|
+
import {
|
|
255
|
+
LoggerUtil,
|
|
256
|
+
EnvManagerUtil,
|
|
257
|
+
InputValidatorUtil,
|
|
258
|
+
InputTransformerUtil,
|
|
259
|
+
SafeExecuteUtil,
|
|
260
|
+
UUIDGeneratorUtil,
|
|
261
|
+
EncryptorDecryptorUtil,
|
|
262
|
+
TOTPServiceUtil,
|
|
263
|
+
} from "fiberx-backend-toolkit/utils";
|
|
264
|
+
```
|
|
202
265
|
|
|
203
|
-
|
|
266
|
+
## Build
|
|
204
267
|
|
|
205
|
-
|
|
268
|
+
```bash
|
|
269
|
+
npm run build
|
|
270
|
+
```
|
|
206
271
|
|
|
207
|
-
|
|
272
|
+
The build emits CommonJS JavaScript and declarations to `dist/`.
|
|
208
273
|
|
|
209
|
-
##
|
|
274
|
+
## Notes
|
|
210
275
|
|
|
211
|
-
|
|
276
|
+
- Generated migrations accept an optional third argument for transaction options.
|
|
277
|
+
- Existing older migrations still run, but only generated or manually transaction-aware migrations can fully participate in the runner transaction.
|
|
278
|
+
- Avoid `sequelize.sync({ alter: true })` in production services that use these migration scripts. Treat schema files as the source for migration generation, and treat migration files as the auditable database history.
|
|
279
|
+
- updated the code
|
|
212
280
|
|
|
213
|
-
##
|
|
281
|
+
## License
|
|
214
282
|
|
|
215
|
-
|
|
283
|
+
ISC
|
|
@@ -5,4 +5,4 @@ declare const SEQUELIZE_UPDATE_EXISTING_SCHEMA_MIGRATION_FILE_CODE_TEMPLATE: (ta
|
|
|
5
5
|
declare const SEQUELIZE_SEEDER_TEMPLATE: (class_name: string, table_name: string) => string;
|
|
6
6
|
declare const SEQUELIZE_MODEL_CODE_TEMPLATE: (schema_model_name: string, schema_file_name: string, schema_columns: Record<string, SchemaColumnInterface>) => string;
|
|
7
7
|
declare const SEQUELIZE_MODELS_INDEX_CODE_TEMPLATE: (model_names: string[], imports: string) => string;
|
|
8
|
-
export { SEQUELIZE_SCHEMA_CODE_TEMPLATE, SEQUELIZE_SEEDER_TEMPLATE, SEQUELIZE_CREATE_NEW_SCHEMA_MIGRATION_FILE_CODE_TEMPLATE, SEQUELIZE_UPDATE_EXISTING_SCHEMA_MIGRATION_FILE_CODE_TEMPLATE, SEQUELIZE_MODEL_CODE_TEMPLATE, SEQUELIZE_MODELS_INDEX_CODE_TEMPLATE };
|
|
8
|
+
export { SEQUELIZE_SCHEMA_CODE_TEMPLATE, SEQUELIZE_SEEDER_TEMPLATE, SEQUELIZE_CREATE_NEW_SCHEMA_MIGRATION_FILE_CODE_TEMPLATE, SEQUELIZE_UPDATE_EXISTING_SCHEMA_MIGRATION_FILE_CODE_TEMPLATE, SEQUELIZE_MODEL_CODE_TEMPLATE, SEQUELIZE_MODELS_INDEX_CODE_TEMPLATE, };
|