generate-dac 1.0.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.
@@ -0,0 +1,567 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DAC_Generate_From_XLSX = exports.DAC_Generate_From_XLSX_Sheet = exports.dac_generate_table_schema = exports.dac_generate_structure = exports.dac_generate_conversions = exports.dac_generate_dataServiceObject = exports.dac_generate_sql = exports.get_output_filepath = exports.dac_generate_data_access = exports.repeat = exports.get_SqlDbType = exports.binding_template = void 0;
7
+ var dayjs_1 = __importDefault(require("dayjs"));
8
+ var excel_utils_1 = require("./utils/excel-utils");
9
+ var file_utils_1 = require("./utils/file_utils");
10
+ var OUTPUT_DIR = './output/';
11
+ var TEMPLATE_DIR = (0, file_utils_1.__parent_dir)(__dirname) + '/';
12
+ var now = (0, dayjs_1.default)();
13
+ var CREATED_DATETIME = now.format('DD-ddd-YYYY HH:mm');
14
+ var GENERATOR_BY = "TigerBabySoft V1.0.0";
15
+ var DataAccess_Structure_Template = (0, file_utils_1.text_from_file)("".concat(TEMPLATE_DIR, "/templates/DataAccess_Structure_Template.cs"));
16
+ var DataServiceObjects_Template = (0, file_utils_1.text_from_file)("".concat(TEMPLATE_DIR, "/templates/DataServiceObjects_Template.cs"));
17
+ var MakeDSO_Template = (0, file_utils_1.text_from_file)("".concat(TEMPLATE_DIR, "/templates/MakeDSO_Template.cs"));
18
+ function binding_template(content, data) {
19
+ var result = content;
20
+ data.datetime = CREATED_DATETIME;
21
+ data.generator = GENERATOR_BY;
22
+ for (var key in data) {
23
+ result = result.replace(new RegExp("{".concat(key, "}"), 'g'), data[key]);
24
+ }
25
+ return result;
26
+ }
27
+ exports.binding_template = binding_template;
28
+ function get_SqlDbType(type) {
29
+ type = type.toLowerCase();
30
+ if (type === 'int') {
31
+ return {
32
+ type: 'Int',
33
+ codeType: 'int',
34
+ codeGetMethodType: 'GetInt32',
35
+ sqlType: 'int'
36
+ };
37
+ }
38
+ if (type === 'money') {
39
+ return {
40
+ type: 'Money',
41
+ codeType: 'decimal',
42
+ codeGetMethodType: 'GetDecimal',
43
+ sqlType: 'money'
44
+ };
45
+ }
46
+ if (type === 'tinyint') {
47
+ return {
48
+ type: 'TinyInt',
49
+ codeGetMethodType: 'GetByte',
50
+ sqlType: 'tinyint',
51
+ codeType: 'int'
52
+ };
53
+ }
54
+ var nvarcharReg = /NVARCHAR\(([^\(\)]+)\)/i;
55
+ if (nvarcharReg.test(type)) {
56
+ var match = nvarcharReg.exec(type);
57
+ var length_1 = match ? match[1] : 250;
58
+ return {
59
+ type: 'NVarChar',
60
+ option: length_1,
61
+ codeType: 'string',
62
+ codeGetMethodType: 'GetString',
63
+ sqlType: "nvarchar(".concat(length_1, ")")
64
+ };
65
+ }
66
+ if (/DateTime/i.test(type)) {
67
+ return {
68
+ type: 'DateTime',
69
+ codeGetMethodType: 'GetDateTime',
70
+ sqlType: 'datetime',
71
+ codeType: 'DateTime'
72
+ };
73
+ }
74
+ if (/Bit/i.test(type)) {
75
+ return {
76
+ type: 'Bit',
77
+ codeGetMethodType: 'GetBoolean',
78
+ sqlType: 'bit',
79
+ codeType: 'bool'
80
+ };
81
+ }
82
+ return {
83
+ type: '',
84
+ };
85
+ }
86
+ exports.get_SqlDbType = get_SqlDbType;
87
+ function repeat(str, count) {
88
+ var result = '';
89
+ for (var i = 0; i < count; i++) {
90
+ "";
91
+ result += str;
92
+ }
93
+ return result;
94
+ }
95
+ exports.repeat = repeat;
96
+ function dac_generate_data_access(tableName, schemas) {
97
+ var result = {
98
+ files: [],
99
+ classes: []
100
+ };
101
+ var createColumn = schemas.find(function (e) { return e.col_name === 'Create_User_Account_ID'; });
102
+ var dacTemplateGeneratedContent = (0, file_utils_1.text_from_file)("".concat(TEMPLATE_DIR, "/templates/DAC_Template.generated.cs"));
103
+ var columnEnumStr = schemas.map(function (e, i) { return "".concat(e.col_name, " = ").concat(i); }).join(",\n\t\t\t");
104
+ if (createColumn) {
105
+ var createUserFields = [
106
+ 'CreatedByLogonName',
107
+ 'CreatedByFirstName',
108
+ 'CreatedByLastName',
109
+ 'UpdatedByLogonName',
110
+ 'UpdatedByFirstName',
111
+ 'UpdatedByLastName'
112
+ ];
113
+ var createUserStr = createUserFields.map(function (e, i) { return "".concat(e, " = ").concat(schemas.length + i); }).join(",\n\t\t\t");
114
+ columnEnumStr += ",\n\t\t\t" + createUserStr;
115
+ }
116
+ var insertParamsStart = schemas.filter(function (e) {
117
+ return e.col_name !== 'ID'
118
+ && e.col_name !== 'Create_DateTime'
119
+ && e.col_name !== 'Update_DateTime';
120
+ }).map(function (e, i) {
121
+ var types = get_SqlDbType(e.type);
122
+ if (types.type === 'DateTime') {
123
+ return "CreateParameter(dbCommand, \"@".concat(e.col_name, "\", SqlDbType.").concat(types.type, ", FixDBDateTime(obj").concat(tableName, "s.Collection[i].").concat(e.col_name, "));");
124
+ }
125
+ return "CreateParameter(dbCommand, \"@".concat(e.col_name, "\", SqlDbType.").concat(types.type, ", obj").concat(tableName, "s.Collection[i].").concat(e.col_name, ");");
126
+ }).join("\n" + repeat("\t", 5));
127
+ var updateParamsStart = schemas.filter(function (e) {
128
+ return e.col_name !== 'Create_DateTime'
129
+ && e.col_name !== 'Update_DateTime'
130
+ && e.col_name !== 'Create_User_Account_ID';
131
+ }).map(function (e, i) {
132
+ var types = get_SqlDbType(e.type);
133
+ if (types.type === 'DateTime') {
134
+ return "CreateParameter(dbCommand, \"@".concat(e.col_name, "\", SqlDbType.").concat(types.type, ", FixDBDateTime(obj").concat(tableName, "s.Collection[i].").concat(e.col_name, "));");
135
+ }
136
+ return "CreateParameter(dbCommand, \"@".concat(e.col_name, "\", SqlDbType.").concat(types.type, ", obj").concat(tableName, "s.Collection[i].").concat(e.col_name, ");");
137
+ }).join("\n" + repeat("\t", 5));
138
+ var fillStr = schemas.map(function (e, i) {
139
+ return "\t\t\tif (!objDataReader.IsDBNull((int)".concat(tableName, "Column.").concat(e.col_name, "))\n\t\t\t\tobj").concat(tableName, ".").concat(e.col_name, " = objDataReader.").concat(get_SqlDbType(e.type).codeGetMethodType, "((int)").concat(tableName, "Column.").concat(e.col_name, ");");
140
+ }).join("\n\n");
141
+ var createField = '';
142
+ var updateField = '';
143
+ if (createColumn) {
144
+ createField = "obj".concat(tableName, ".CreatedByUser = ReadUserAccount(objDataReader, (int)").concat(tableName, "Column.Create_User_Account_ID, (int)").concat(tableName, "Column.CreatedByLogonName, (int)").concat(tableName, "Column.CreatedByFirstName, (int)").concat(tableName, "Column.CreatedByLastName);");
145
+ }
146
+ var updateColumn = schemas.find(function (e) { return e.col_name === 'Update_User_Account_ID'; });
147
+ if (updateColumn) {
148
+ updateField = "obj".concat(tableName, ".UpdatedByUser = ReadUserAccount(objDataReader, (int)").concat(tableName, "Column.Update_User_Account_ID, (int)").concat(tableName, "Column.UpdatedByLogonName, (int)").concat(tableName, "Column.UpdatedByFirstName, (int)").concat(tableName, "Column.UpdatedByLastName);");
149
+ }
150
+ var dacTemplateGeneratedContentOutput = binding_template(dacTemplateGeneratedContent, {
151
+ Table_Name: tableName,
152
+ table_name_lower: tableName.toLowerCase(),
153
+ table_column_enum: columnEnumStr,
154
+ insert_params: insertParamsStart,
155
+ update_params: updateParamsStart,
156
+ fill: fillStr,
157
+ datetime: CREATED_DATETIME,
158
+ createField: createField,
159
+ updateField: updateField
160
+ });
161
+ (0, file_utils_1.str_to_file)(get_output_filepath(tableName, "DAC_".concat(tableName, ".generated.cs")), dacTemplateGeneratedContentOutput);
162
+ result.files.push({
163
+ name: "DAC_".concat(tableName, ".generated.cs"),
164
+ path: "".concat(OUTPUT_DIR).concat(tableName, "/DAC_").concat(tableName, ".generated.cs"),
165
+ content: dacTemplateGeneratedContentOutput
166
+ });
167
+ var dacTemplateContent = (0, file_utils_1.text_from_file)("".concat(TEMPLATE_DIR, "/templates/DAC_Template.cs"));
168
+ var str = binding_template(dacTemplateContent, {
169
+ Table_Name: tableName
170
+ });
171
+ (0, file_utils_1.str_to_file)(get_output_filepath(tableName, "DAC_".concat(tableName, ".cs")), str);
172
+ result.files.push({
173
+ name: "DAC_".concat(tableName, ".cs"),
174
+ path: "".concat(OUTPUT_DIR).concat(tableName, "/DAC_").concat(tableName, ".cs"),
175
+ content: str
176
+ });
177
+ return result;
178
+ }
179
+ exports.dac_generate_data_access = dac_generate_data_access;
180
+ function get_output_filepath(tableName, name) {
181
+ return "".concat(OUTPUT_DIR, "Tables/").concat(tableName, "/").concat(name);
182
+ }
183
+ exports.get_output_filepath = get_output_filepath;
184
+ function dac_generate_sql(tableName, schemas) {
185
+ var result = {
186
+ content: '',
187
+ files: []
188
+ };
189
+ var hasCreateUserColumn = schemas.find(function (e) { return e.col_name === 'Create_User_Account_ID'; });
190
+ var templatePath = hasCreateUserColumn ? "".concat(TEMPLATE_DIR, "/templates/sp_stores_template_with_create_user.generated.sql") : "".concat(TEMPLATE_DIR, "/templates/sp_stores_template.generated.sql");
191
+ var template = (0, file_utils_1.text_from_file)(templatePath);
192
+ var insertParams = schemas.filter(function (e) { return e.col_name !== 'ID' && e.col_name !== 'Create_DateTime' && e.col_name !== 'Update_DateTime'; }).map(function (e, i) {
193
+ return "@".concat(e.col_name, " ").concat(get_SqlDbType(e.type).sqlType);
194
+ }).join(',\n\t');
195
+ var insertCols = schemas.filter(function (e) { return e.col_name !== 'ID'; }).map(function (e, i) {
196
+ return "[".concat(e.col_name, "]");
197
+ }).join(',\n\t\t');
198
+ var insertValues = schemas.filter(function (e) { return e.col_name !== 'ID'; }).map(function (e, i) {
199
+ if (e.col_name === 'Create_DateTime' || e.col_name === 'Update_DateTime') {
200
+ return 'GETUTCDATE()';
201
+ }
202
+ return "@".concat(e.col_name);
203
+ }).join(',\n\t\t');
204
+ var updateParams = schemas.filter(function (e) { return e.col_name !== 'ID'
205
+ && e.col_name !== 'Create_DateTime'
206
+ && e.col_name !== 'Update_DateTime'
207
+ && e.col_name !== 'Create_User_Account_ID'; }).map(function (e, i) {
208
+ return "@".concat(e.col_name, " ").concat(get_SqlDbType(e.type).sqlType);
209
+ }).join(',\n\t');
210
+ var updateValues = schemas.filter(function (e) { return e.col_name !== 'Create_DateTime'
211
+ && e.col_name !== 'Create_User_Account_ID'
212
+ && e.col_name !== 'ID'; }).map(function (e, i) {
213
+ if (e.col_name === 'Update_DateTime') {
214
+ return '[Update_DateTime] = GETUTCDATE()';
215
+ }
216
+ return "[".concat(e.col_name, "] = @").concat(e.col_name);
217
+ }).join(',\n\t\t');
218
+ var content = binding_template(template, {
219
+ table_name: tableName,
220
+ table_name_lower: tableName.toLowerCase(),
221
+ insert_params: insertParams,
222
+ insert_cols: insertCols,
223
+ insert_values: insertValues,
224
+ update_params: updateParams,
225
+ update_values: updateValues,
226
+ datetime: CREATED_DATETIME,
227
+ });
228
+ result.content = content;
229
+ var fileName = "sp_".concat(tableName.toLowerCase(), ".generated.sql");
230
+ var filePath = get_output_filepath(tableName, fileName);
231
+ result.files.push({
232
+ name: fileName,
233
+ path: filePath,
234
+ content: content
235
+ });
236
+ (0, file_utils_1.str_to_file)(filePath, content);
237
+ return result;
238
+ }
239
+ exports.dac_generate_sql = dac_generate_sql;
240
+ function dac_generate_dataServiceObject(tableName, schemas) {
241
+ var result = {
242
+ content: '',
243
+ classes: []
244
+ };
245
+ var classTemplate = (0, file_utils_1.text_from_file)("".concat(TEMPLATE_DIR, "/templates/DataServiceObjects_Class_Template.cs"));
246
+ var strProperties = schemas.map(function (e, i) {
247
+ return "public ".concat(get_SqlDbType(e.type).codeType, " ").concat(e.col_name.replace(/[ _]+/g, ''), " { get; set; }");
248
+ }).join('\n' + repeat("\t", 2));
249
+ var created_by_user = '';
250
+ var updated_by_user = '';
251
+ if (schemas.find(function (e) { return e.col_name === 'Create_User_Account_ID'; })) {
252
+ created_by_user = "public RPMAdminUser CreatedByUser { get; set; }";
253
+ }
254
+ if (schemas.find(function (e) { return e.col_name === 'Update_User_Account_ID'; })) {
255
+ updated_by_user = "public RPMAdminUser UpdatedByUser { get; set; }";
256
+ }
257
+ var className = get_className(tableName);
258
+ var classStr = binding_template(classTemplate, {
259
+ table_name: tableName,
260
+ table_name_lower: tableName.toLowerCase(),
261
+ class_name: className,
262
+ properties: strProperties,
263
+ created_by_user: created_by_user,
264
+ updated_by_user: updated_by_user,
265
+ datetime: CREATED_DATETIME
266
+ });
267
+ result.classes.push(classStr);
268
+ var content = binding_template(DataServiceObjects_Template, {
269
+ table_name: tableName,
270
+ table_name_lower: tableName.toLowerCase(),
271
+ class_name: className,
272
+ datetime: CREATED_DATETIME,
273
+ content: classStr
274
+ });
275
+ result.content = content;
276
+ (0, file_utils_1.str_to_file)(get_output_filepath(tableName, "DataServiceObjects_".concat(className, ".cs")), content);
277
+ return result;
278
+ }
279
+ exports.dac_generate_dataServiceObject = dac_generate_dataServiceObject;
280
+ function dac_generate_conversions(tableName, schemas) {
281
+ var result = {
282
+ content: '',
283
+ methods: []
284
+ };
285
+ var className = get_className(tableName);
286
+ var methodTemplate = (0, file_utils_1.text_from_file)("".concat(TEMPLATE_DIR, "/templates/MakeDSO_Template_Method.cs"));
287
+ var dsoFields = schemas.map(function (e, i) {
288
+ return "ds".concat(className, ".").concat(e.colName, " = db").concat(className, ".").concat(e.col_name, ";");
289
+ }).join('\n' + repeat("\t", 3));
290
+ var dbFields = schemas.map(function (e, i) {
291
+ var type = get_SqlDbType(e.type);
292
+ if (type.codeType === 'string' && e.allow_null !== 'yes') {
293
+ return "db".concat(className, ".").concat(e.col_name, " = this.NoNull(ds").concat(className, ".").concat(e.colName, ");");
294
+ }
295
+ if (type.codeType === 'DateTime') {
296
+ return "db".concat(className, ".").concat(e.col_name, " = DateTimeHelper.MakeDBDefaultValue(ds").concat(className, ".").concat(e.colName, ");");
297
+ }
298
+ return "db".concat(className, ".").concat(e.col_name, " = ds").concat(className, ".").concat(e.colName, ";");
299
+ }).join('\n' + repeat("\t", 3));
300
+ var created_by_user = '';
301
+ var updated_by_user = '';
302
+ if (schemas.find(function (e) { return e.col_name === 'Create_User_Account_ID'; })) {
303
+ }
304
+ if (schemas.find(function (e) { return e.col_name === 'Update_User_Account_ID'; })) {
305
+ }
306
+ var methodStr = binding_template(methodTemplate, {
307
+ table_name: tableName,
308
+ table_name_lower: tableName.toLowerCase(),
309
+ class_name: className,
310
+ created_by_user: created_by_user,
311
+ updated_by_user: updated_by_user,
312
+ datetime: CREATED_DATETIME,
313
+ db_fields: dbFields,
314
+ dso_fields: dsoFields
315
+ });
316
+ result.methods.push(methodStr);
317
+ var content = binding_template(MakeDSO_Template, {
318
+ table_name: tableName,
319
+ table_name_lower: tableName.toLowerCase(),
320
+ class_name: className,
321
+ datetime: CREATED_DATETIME,
322
+ content: methodStr
323
+ });
324
+ result.content = content;
325
+ (0, file_utils_1.str_to_file)(get_output_filepath(tableName, "Conversions_".concat(className, ".cs")), content);
326
+ return result;
327
+ }
328
+ exports.dac_generate_conversions = dac_generate_conversions;
329
+ function get_className(tableName) {
330
+ return tableName.replace(/[_ ]+/g, '');
331
+ }
332
+ function dac_generate_structure(tableName, schemas) {
333
+ var result = {
334
+ classes: [],
335
+ content: ''
336
+ };
337
+ var classItemTemplate = (0, file_utils_1.text_from_file)("".concat(TEMPLATE_DIR, "/templates/DataAccess_Structure_Class_Template.cs"));
338
+ var strProperties = schemas.map(function (e, i) {
339
+ return "public ".concat(get_SqlDbType(e.type).codeType, " ").concat(e.col_name, ";");
340
+ }).join('\n' + repeat("\t", 2));
341
+ var created_by_user = '';
342
+ var updated_by_user = '';
343
+ if (schemas.find(function (e) { return e.col_name === 'Create_User_Account_ID'; })) {
344
+ created_by_user = "public User_AccountInfo CreatedByUser;";
345
+ }
346
+ if (schemas.find(function (e) { return e.col_name === 'Update_User_Account_ID'; })) {
347
+ updated_by_user = "public User_AccountInfo UpdatedByUser;";
348
+ }
349
+ var className = tableName.replace(/[_ ]+/g, '');
350
+ var classStr = binding_template(classItemTemplate, {
351
+ table_name: tableName,
352
+ table_name_lower: tableName.toLowerCase(),
353
+ class_name: className,
354
+ properties: strProperties,
355
+ datetime: CREATED_DATETIME,
356
+ created_by_user: created_by_user,
357
+ updated_by_user: updated_by_user,
358
+ });
359
+ result.classes.push(classStr);
360
+ var content = binding_template(DataAccess_Structure_Template, {
361
+ table_name: tableName,
362
+ table_name_lower: tableName.toLowerCase(),
363
+ class_name: className,
364
+ datetime: CREATED_DATETIME,
365
+ content: classStr,
366
+ });
367
+ result.content = content;
368
+ (0, file_utils_1.str_to_file)(get_output_filepath(tableName, "Structure_".concat(tableName, ".cs")), content);
369
+ return result;
370
+ }
371
+ exports.dac_generate_structure = dac_generate_structure;
372
+ function dac_generate_table_schema(tableName, schemas) {
373
+ var template = (0, file_utils_1.text_from_file)("".concat(TEMPLATE_DIR, "/templates/Table_Schema.sql"));
374
+ var strColumns = schemas.map(function (e) {
375
+ return "\t".concat(e.col_name, " ").concat(get_SqlDbType(e.type).sqlType).concat(e.primary_key === 'yes' ? ' IDENTITY(1,1)' : '', " ").concat(e.allow_null === 'yes' && e.primary_key !== 'yes' ? "NULL" : "NOT NULL");
376
+ }).join(",\n");
377
+ var dropConstraints = [];
378
+ var strForeignKeys = schemas.filter(function (e) { return e.foreign_table; }).map(function (e, i) {
379
+ dropConstraints.push("ALTER TABLE [dbo].".concat(tableName, " DROP CONSTRAINT [FK_").concat(tableName, "_").concat(e.foreign_table, "]"));
380
+ var foreignKey = e.foreign_column ? e.foreign_column : "ID";
381
+ return "ALTER TABLE [dbo].".concat(tableName, " WITH CHECK ADD CONSTRAINT [FK_").concat(tableName, "_").concat(e.foreign_table, "] FOREIGN KEY(").concat(e.col_name, ") REFERENCES [dbo].").concat(e.foreign_table, " ([").concat(foreignKey, "])\nGO");
382
+ }).join('\n\n');
383
+ var dropContent = dropConstraints.length ? dropConstraints.join("\n\t") : '';
384
+ var content = binding_template(template, {
385
+ Table_Name: tableName,
386
+ columns: strColumns,
387
+ foreign_keys: strForeignKeys,
388
+ drop_constraint: dropContent
389
+ });
390
+ (0, file_utils_1.str_to_file)(get_output_filepath(tableName, "".concat(tableName, "_table_schema.sql")), content);
391
+ return {
392
+ content: content,
393
+ dropConstrains: dropConstraints.join("\n"),
394
+ dropTable: "DROP TABLE [dbo].".concat(tableName)
395
+ };
396
+ }
397
+ exports.dac_generate_table_schema = dac_generate_table_schema;
398
+ function DAC_Generate_From_XLSX_Sheet(sheetData) {
399
+ var _a;
400
+ console.log("[BEGIN] Generate DAC for SheetName=".concat(sheetData.name).yellow);
401
+ var result = {};
402
+ if (!sheetData || !sheetData.data || !sheetData.data.length) {
403
+ console.log("[END] Generate DAC for SheetName=".concat(sheetData.name, " failed. Data is empty").red);
404
+ return;
405
+ }
406
+ var columSchemas = sheetData.data;
407
+ var missingColumnName = columSchemas.find(function (e) { return !e.col_name; });
408
+ if (missingColumnName) {
409
+ console.log("[END] Generate DAC for SheetName=".concat(sheetData.name, " failed. Some column names are missing. Check again").red);
410
+ return;
411
+ }
412
+ var missingType = columSchemas.find(function (e) { return !e.type; });
413
+ if (missingType) {
414
+ console.log("[END] Generate DAC for SheetName=".concat(sheetData.name, " failed. Data for [").concat(missingType.col_name, "] is missing").red);
415
+ return;
416
+ }
417
+ columSchemas.forEach(function (e) {
418
+ e.colName = e.col_name.replace(/[ _]+/g, '');
419
+ });
420
+ var tableName = ((_a = columSchemas.find(function (e) { return e.table_name; })) === null || _a === void 0 ? void 0 : _a.table_name) || '';
421
+ var dataAccess = dac_generate_data_access(tableName, columSchemas);
422
+ var tableSchema = dac_generate_table_schema(tableName, columSchemas);
423
+ var stores = dac_generate_sql(tableName, columSchemas);
424
+ var structures = dac_generate_structure(tableName, columSchemas);
425
+ var dataServiceObjects = dac_generate_dataServiceObject(tableName, columSchemas);
426
+ var conversions = dac_generate_conversions(tableName, columSchemas);
427
+ console.log("[END] Generate DAC for SheetName=".concat(sheetData.name).yellow);
428
+ result.schema = tableSchema;
429
+ result.store = stores;
430
+ result.structures = structures;
431
+ result.dataServiceObjects = dataServiceObjects;
432
+ result.dataAccess = dataAccess;
433
+ result.conversions = conversions;
434
+ return result;
435
+ }
436
+ exports.DAC_Generate_From_XLSX_Sheet = DAC_Generate_From_XLSX_Sheet;
437
+ function DAC_Generate_From_XLSX(filePath, sheetIndex) {
438
+ if (sheetIndex === void 0) { sheetIndex = 0; }
439
+ if (!(0, file_utils_1.file_exists)(filePath)) {
440
+ console.log("Failed to generate DAC. File is not exists. Path=".concat(filePath).red);
441
+ return;
442
+ }
443
+ var outputFolder = (0, file_utils_1.get_filename_without_extension)(filePath);
444
+ console.log("DAC_Generate_From_XLSX: ".concat(outputFolder).yellow);
445
+ var sheets = (0, excel_utils_1.json_read_all_sheets_from_excel)(filePath, { sheetIndex: sheetIndex, transformColumnName: true });
446
+ var schemas = [];
447
+ var stores = [];
448
+ var dropTables = [];
449
+ var dropConstrains = [];
450
+ var dataAccessClasses = [];
451
+ var dataObjectClasses = [];
452
+ var conversionsMethods = [];
453
+ var files = [];
454
+ sheets.forEach(function (sheet) {
455
+ var result = DAC_Generate_From_XLSX_Sheet(sheet);
456
+ if (result) {
457
+ if (result.schema) {
458
+ schemas.push(result.schema.content || '');
459
+ dropTables.push(result.schema.dropTable || '');
460
+ dropConstrains.push(result.schema.dropConstrains || '');
461
+ }
462
+ if (result.dataAccess) {
463
+ if (result.dataAccess.files) {
464
+ result.dataAccess.files.forEach(function (e) {
465
+ files.push(e);
466
+ });
467
+ }
468
+ }
469
+ if (result.store) {
470
+ stores.push(result.store.content);
471
+ if (result.store.files && result.store.files.length) {
472
+ result.store.files.forEach(function (e) {
473
+ files.push(e);
474
+ });
475
+ }
476
+ }
477
+ if (result.structures && result.structures.classes && result.structures.classes.length) {
478
+ result.structures.classes.forEach(function (e) {
479
+ dataAccessClasses.push(e);
480
+ });
481
+ }
482
+ if (result.dataServiceObjects && result.dataServiceObjects.classes && result.dataServiceObjects.classes.length) {
483
+ result.dataServiceObjects.classes.forEach(function (e) {
484
+ dataObjectClasses.push(e);
485
+ });
486
+ }
487
+ if (result.conversions && result.conversions.methods && result.conversions.methods.length) {
488
+ result.conversions.methods.forEach(function (e) {
489
+ conversionsMethods.push(e);
490
+ });
491
+ }
492
+ }
493
+ });
494
+ if (!schemas.length && !stores.length) {
495
+ return;
496
+ }
497
+ if (dataAccessClasses.length) {
498
+ var content = binding_template(DataAccess_Structure_Template, {
499
+ content: dataAccessClasses.join("\n\n"),
500
+ table_name: ''
501
+ });
502
+ files.push({
503
+ name: 'Structure.cs',
504
+ content: content
505
+ });
506
+ }
507
+ if (dataObjectClasses.length) {
508
+ var content = binding_template(DataServiceObjects_Template, {
509
+ content: dataObjectClasses.join("\n\n")
510
+ });
511
+ files.push({
512
+ name: 'DataServiceObject.cs',
513
+ content: content
514
+ });
515
+ }
516
+ if (conversionsMethods.length) {
517
+ var content = binding_template(MakeDSO_Template, {
518
+ content: conversionsMethods.join("\n\n"),
519
+ table_name: ''
520
+ });
521
+ files.push({
522
+ name: 'Conversions.cs',
523
+ content: content,
524
+ });
525
+ }
526
+ if (stores.length) {
527
+ files.push({
528
+ name: 'stores.sql',
529
+ content: stores.join("\n\n")
530
+ });
531
+ }
532
+ if (schemas.length) {
533
+ files.push({
534
+ name: 'table_schema.sql',
535
+ content: schemas.join("\n\n\n")
536
+ });
537
+ var content = "\n".concat(dropConstrains.join("\n"), "\n \n").concat(dropTables.join("\n"));
538
+ files.push({
539
+ name: 'table_schema_reset.sql',
540
+ content: content
541
+ });
542
+ }
543
+ if (files.length) {
544
+ (0, file_utils_1.dir_create)("".concat(OUTPUT_DIR).concat(outputFolder));
545
+ (0, file_utils_1.dir_create)("".concat(OUTPUT_DIR).concat(outputFolder, "/DAC"));
546
+ (0, file_utils_1.dir_create)("".concat(OUTPUT_DIR).concat(outputFolder, "/DataServiceObjects"));
547
+ (0, file_utils_1.dir_create)("".concat(OUTPUT_DIR).concat(outputFolder, "/sql"));
548
+ (0, file_utils_1.dir_create)("".concat(OUTPUT_DIR).concat(outputFolder, "/stores"));
549
+ files.forEach(function (e) {
550
+ if (e.content) {
551
+ if (/\.sql$/.test(e.name) && /^sp_/.test(e.name)) {
552
+ (0, file_utils_1.str_to_file)("".concat(OUTPUT_DIR).concat(outputFolder, "/stores/").concat(e.name), e.content);
553
+ }
554
+ else if (/\.sql$/.test(e.name)) {
555
+ (0, file_utils_1.str_to_file)("".concat(OUTPUT_DIR).concat(outputFolder, "/sql/").concat(e.name), e.content);
556
+ }
557
+ else if (/^DAC_/.test(e.name)) {
558
+ (0, file_utils_1.str_to_file)("".concat(OUTPUT_DIR).concat(outputFolder, "/DAC/").concat(e.name), e.content);
559
+ }
560
+ else {
561
+ (0, file_utils_1.str_to_file)("".concat(OUTPUT_DIR).concat(outputFolder, "/DataServiceObjects/").concat(e.name), e.content);
562
+ }
563
+ }
564
+ });
565
+ }
566
+ }
567
+ exports.DAC_Generate_From_XLSX = DAC_Generate_From_XLSX;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var DAC_Utils_1 = require("./DAC_Utils");
7
+ var dayjs_1 = __importDefault(require("dayjs"));
8
+ var path = "./input/Apply_To_Approve_Steps_Schema.xlsx";
9
+ var now = (0, dayjs_1.default)().format('DD-ddd-YYYY HH:mm');
10
+ console.log("Process Generate DAC ".concat(now).green);
11
+ (0, DAC_Utils_1.DAC_Generate_From_XLSX)(path);
package/dist/index.js ADDED
@@ -0,0 +1,30 @@
1
+ #! /usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ var colors_1 = __importDefault(require("colors"));
8
+ var DAC_Utils_1 = require("./DAC_Utils");
9
+ var dayjs_1 = __importDefault(require("dayjs"));
10
+ var file_utils_1 = require("./utils/file_utils");
11
+ colors_1.default.enable();
12
+ var INPUT_DIR = './input/';
13
+ start();
14
+ function start() {
15
+ if (!(0, file_utils_1.file_exists)(INPUT_DIR)) {
16
+ console.log("There's no input folder. Please create input folder and put excel file to generate.".red);
17
+ return;
18
+ }
19
+ var files = (0, file_utils_1.fileName_in_folder)(INPUT_DIR);
20
+ if (!files || !files.length) {
21
+ console.log("No input files.".red);
22
+ return;
23
+ }
24
+ var now = (0, dayjs_1.default)().format('DD-ddd-YYYY HH:mm');
25
+ console.log("Process Generate DAC ".concat(now).green);
26
+ files.forEach(function (file, i) {
27
+ console.log("Begin to process file ".concat(file.name).yellow);
28
+ (0, DAC_Utils_1.DAC_Generate_From_XLSX)(file.path);
29
+ });
30
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/dist/tools.js ADDED
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Car = void 0;
4
+ var Car = (function () {
5
+ function Car() {
6
+ this.title = '';
7
+ }
8
+ return Car;
9
+ }());
10
+ exports.Car = Car;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });