db-modeling-markdown 1.0.5 → 2.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.
Files changed (116) hide show
  1. package/CHANGELOG.md +24 -3
  2. package/CONTRIBUTING.md +78 -0
  3. package/README.md +63 -46
  4. package/dist/dialects/core/dbImportProvider.d.ts +5 -0
  5. package/dist/dialects/core/dbImportProvider.js +7 -0
  6. package/dist/dialects/core/dbImportProvider.js.map +1 -0
  7. package/dist/dialects/core/dbProvider.d.ts +19 -6
  8. package/dist/dialects/core/dbProvider.js +40 -6
  9. package/dist/dialects/core/dbProvider.js.map +1 -1
  10. package/dist/dialects/core/dbUtils.d.ts +35 -0
  11. package/dist/dialects/core/dbUtils.js +159 -0
  12. package/dist/dialects/core/dbUtils.js.map +1 -0
  13. package/dist/dialects/core/providerFactory.d.ts +3 -1
  14. package/dist/dialects/core/providerFactory.js +28 -3
  15. package/dist/dialects/core/providerFactory.js.map +1 -1
  16. package/dist/dialects/db2/db2Provider.d.ts +2 -1
  17. package/dist/dialects/db2/db2Provider.js +75 -46
  18. package/dist/dialects/db2/db2Provider.js.map +1 -1
  19. package/dist/dialects/mariadb/mariaDbImportProvider.d.ts +19 -0
  20. package/dist/dialects/mariadb/mariaDbImportProvider.js +254 -0
  21. package/dist/dialects/mariadb/mariaDbImportProvider.js.map +1 -0
  22. package/dist/dialects/mariadb/mariaDbProvider.d.ts +11 -11
  23. package/dist/dialects/mariadb/mariaDbProvider.js +128 -161
  24. package/dist/dialects/mariadb/mariaDbProvider.js.map +1 -1
  25. package/dist/dialects/mariadb/mariaDbUtil.d.ts +6 -0
  26. package/dist/dialects/mariadb/mariaDbUtil.js +23 -0
  27. package/dist/dialects/mariadb/mariaDbUtil.js.map +1 -0
  28. package/dist/dialects/mssql/msSqlProvider.d.ts +2 -1
  29. package/dist/dialects/mssql/msSqlProvider.js +128 -73
  30. package/dist/dialects/mssql/msSqlProvider.js.map +1 -1
  31. package/dist/dialects/mysql/mySqlImportProvider.d.ts +3 -0
  32. package/dist/dialects/mysql/mySqlImportProvider.js +8 -0
  33. package/dist/dialects/mysql/mySqlImportProvider.js.map +1 -0
  34. package/dist/dialects/mysql/mySqlProvider.d.ts +2 -20
  35. package/dist/dialects/mysql/mySqlProvider.js +2 -182
  36. package/dist/dialects/mysql/mySqlProvider.js.map +1 -1
  37. package/dist/dialects/oracle/oracleProvider.d.ts +5 -1
  38. package/dist/dialects/oracle/oracleProvider.js +111 -70
  39. package/dist/dialects/oracle/oracleProvider.js.map +1 -1
  40. package/dist/dialects/postgresql/postgreSqlProvider.d.ts +2 -1
  41. package/dist/dialects/postgresql/postgreSqlProvider.js +34 -31
  42. package/dist/dialects/postgresql/postgreSqlProvider.js.map +1 -1
  43. package/dist/dialects/sqlite/sqliteSqlProvider.d.ts +2 -1
  44. package/dist/dialects/sqlite/sqliteSqlProvider.js +38 -28
  45. package/dist/dialects/sqlite/sqliteSqlProvider.js.map +1 -1
  46. package/dist/index.d.ts +9 -4
  47. package/dist/index.js +5 -5
  48. package/dist/index.js.map +1 -1
  49. package/dist/lib/code-flow/codeFlow.js.map +1 -1
  50. package/dist/lib/markdown-object/markdownModel.d.ts +0 -4
  51. package/dist/lib/markdown-object/markdownModel.js +0 -4
  52. package/dist/lib/markdown-object/markdownModel.js.map +1 -1
  53. package/dist/lib/markdown-object/markdownReader.d.ts +19 -0
  54. package/dist/lib/markdown-object/markdownReader.js +85 -28
  55. package/dist/lib/markdown-object/markdownReader.js.map +1 -1
  56. package/dist/lib/markdown-object/markdownWriter.d.ts +25 -1
  57. package/dist/lib/markdown-object/markdownWriter.js +117 -52
  58. package/dist/lib/markdown-object/markdownWriter.js.map +1 -1
  59. package/dist/lib/markdown-object/readerContext.js +3 -1
  60. package/dist/lib/markdown-object/readerContext.js.map +1 -1
  61. package/dist/lib/utils/fileHelper.d.ts +4 -0
  62. package/dist/lib/utils/fileHelper.js +20 -1
  63. package/dist/lib/utils/fileHelper.js.map +1 -1
  64. package/dist/lib/utils/logger.js.map +1 -1
  65. package/dist/lib/utils/markdownParser.js +3 -6
  66. package/dist/lib/utils/markdownParser.js.map +1 -1
  67. package/dist/lib/utils/sqlHelper.js.map +1 -1
  68. package/dist/lib/utils/textFileReader.js +2 -2
  69. package/dist/lib/utils/textFileReader.js.map +1 -1
  70. package/dist/lib/utils/textHelper.d.ts +18 -0
  71. package/dist/lib/utils/textHelper.js +62 -0
  72. package/dist/lib/utils/textHelper.js.map +1 -1
  73. package/dist/{services → models}/databaseTypes.d.ts +0 -0
  74. package/dist/{services → models}/databaseTypes.js +0 -0
  75. package/dist/models/databaseTypes.js.map +1 -0
  76. package/dist/models/dbColumn.d.ts +43 -0
  77. package/dist/models/dbColumn.js +3 -0
  78. package/dist/models/dbColumn.js.map +1 -0
  79. package/dist/models/dbDiffModel.d.ts +43 -0
  80. package/dist/models/dbDiffModel.js +3 -0
  81. package/dist/models/dbDiffModel.js.map +1 -0
  82. package/dist/models/dbForeignKey.d.ts +33 -0
  83. package/dist/models/dbForeignKey.js +3 -0
  84. package/dist/models/dbForeignKey.js.map +1 -0
  85. package/dist/models/dbIndex.d.ts +28 -0
  86. package/dist/models/dbIndex.js +3 -0
  87. package/dist/models/dbIndex.js.map +1 -0
  88. package/dist/models/dbIndexType.d.ts +8 -0
  89. package/dist/models/dbIndexType.js +13 -0
  90. package/dist/models/dbIndexType.js.map +1 -0
  91. package/dist/models/dbModel.d.ts +10 -0
  92. package/dist/{services → models}/dbModel.js +0 -0
  93. package/dist/{services → models}/dbModel.js.map +1 -1
  94. package/dist/models/dbPrimaryKey.d.ts +16 -0
  95. package/dist/models/dbPrimaryKey.js +3 -0
  96. package/dist/models/dbPrimaryKey.js.map +1 -0
  97. package/dist/models/dbTable.d.ts +49 -0
  98. package/dist/models/dbTable.js +3 -0
  99. package/dist/models/dbTable.js.map +1 -0
  100. package/dist/models/dbTableMarkdown.d.ts +34 -0
  101. package/dist/models/dbTableMarkdown.js +3 -0
  102. package/dist/models/dbTableMarkdown.js.map +1 -0
  103. package/dist/services/dbOptions.d.ts +35 -0
  104. package/dist/services/dbOptions.js +18 -0
  105. package/dist/services/dbOptions.js.map +1 -0
  106. package/dist/services/dbmOptions.d.ts +1 -1
  107. package/dist/services/dbmOptions.js +1 -1
  108. package/dist/services/dbmOptions.js.map +1 -1
  109. package/dist/services/dbmService.d.ts +36 -1
  110. package/dist/services/dbmService.js +80 -13
  111. package/dist/services/dbmService.js.map +1 -1
  112. package/package.json +74 -81
  113. package/.eslintcache +0 -1
  114. package/.prettierrc +0 -8
  115. package/dist/services/databaseTypes.js.map +0 -1
  116. package/dist/services/dbModel.d.ts +0 -135
package/CHANGELOG.md CHANGED
@@ -7,21 +7,39 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ## [1.0.5] - 2021-11-19
10
+ ## [2.0.0] - 2022-12-08
11
11
 
12
12
  ### Changes
13
13
 
14
+ - [Feature]: [mariadb/mysql] provice method `fromDatabase`
15
+ Generate database model markdow files from a specific database.
16
+ - [Feature]: [mariadb/mysql] provice method `toUpgradeSql`
17
+ Generate a SQL file with upgrade scripts.
18
+ - [Feature]: provide more readable format for markdown files
19
+ - [Feature]: [mariadb/mysql] provice method `genIndexFile`
20
+ Generate a `index.md` for all tables
21
+
22
+ ## [1.0.6] - 2021-11-19
23
+
24
+ ### Fix
25
+
26
+ - [Defect]: error when there is an empty definition file
27
+
28
+ ## [1.0.5] - 2021-11-19
29
+
30
+ ### Fix
31
+
14
32
  - [Defect]: bad package
15
33
 
16
34
  ## [1.0.4] - 2021-11-19
17
35
 
18
- ### Changes
36
+ ### Fix
19
37
 
20
38
  - [Defect]: bad package
21
39
 
22
40
  ## [1.0.3] - 2021-11-17
23
41
 
24
- ### Changes
42
+ ### Fix
25
43
 
26
44
  - [Defect]: do not export file when file name is not provided.
27
45
 
@@ -30,6 +48,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
30
48
  ### Changes
31
49
 
32
50
  - [Feature]: provice method toMarkdown
51
+
52
+ ### Fixed
53
+
33
54
  - [Defect]: some document issues.
34
55
 
35
56
  ## [1.0.1] - 2020-02-22
@@ -0,0 +1,78 @@
1
+ # Contributing to db-modeling-markdown
2
+
3
+ ## Prepare Development Environment
4
+
5
+ ```sh
6
+ npm add --global yarn
7
+ npm add --global prettier typescript ts-node
8
+ yarn
9
+ yarn prepare
10
+ ```
11
+
12
+ ## Publish steps
13
+
14
+ - change the package version
15
+ - change CHANGELOG
16
+ - change version in README
17
+ - build: run `yarn build`
18
+ - check the package
19
+ - publish: `npm publish --access public`
20
+ edit `~/npmrc`, comment out the mirrow repositories
21
+ if need, `npm adduser` to add
22
+ - document: update gitee pages
23
+
24
+ ## Test
25
+
26
+ - test all
27
+
28
+ ```sh
29
+ yarn test
30
+ ```
31
+
32
+ - test a specific test file
33
+
34
+ ```sh
35
+ yarn test filename.test.ts
36
+ ```
37
+
38
+ ## Tips
39
+
40
+ - we can use the variable `OverwriteExpected` to overwrite expected files
41
+
42
+ [dbmService.test.ts](tests\services\dbmService.test.ts)
43
+
44
+ ```ts
45
+ // used to overwrite expected data
46
+ const OverwriteExpected = false
47
+ ```
48
+
49
+ ## Command
50
+
51
+ - Generate table markdown files for all databases
52
+
53
+ ```typescript
54
+ // run tests\data\generateMarkdown.ts
55
+ ```
56
+
57
+ - husky: project initialization
58
+
59
+ ```sh
60
+ # husky init (for project initialization)
61
+ # npx husky-init
62
+ ```
63
+
64
+ - husky: pre-commit command
65
+ [pre-commit.sh](.husky/pre-commit)
66
+
67
+ ## Guidelings
68
+
69
+ ### Coding Conventions
70
+
71
+ - Use `tab` rather than `space`
72
+ - using `.test.{ts, js}` extension for unit test files
73
+ - folder and file name: `camel`
74
+ - class name: `Pascal`
75
+ - max line width: `120`
76
+ - type scripts
77
+ - Semicolons: `true`
78
+ - Quotes: `single quoted`
package/README.md CHANGED
@@ -6,7 +6,7 @@ Now, you may define your database tables in markdown files, and this utility wil
6
6
 
7
7
  ## Release Notes
8
8
 
9
- ### 1.0.5
9
+ ### 2.0.0
10
10
 
11
11
  [Change Log](./CHANGELOG.md)
12
12
 
@@ -15,86 +15,99 @@ Now, you may define your database tables in markdown files, and this utility wil
15
15
  Define a markdown file(.db.md) like:
16
16
 
17
17
  ```markdown
18
- # Table: Departments
18
+ # Table: departments
19
19
 
20
- - `Name`: Departments
21
- - `Comment`: The department table.
20
+ ## `Table`
21
+
22
+ | `Name` | `Comment` | `Character Set` | `Collation` |
23
+ | ----------- | --------------------- | --------------- | ------------------ |
24
+ | departments | The department table. | utf8mb4 | utf8mb4_general_ci |
22
25
 
23
26
  ## `Primary Key`
24
27
 
25
- - `Columns`: DepartmentID
26
- - `Cluster`: `true`
28
+ | `Columns` |
29
+ | ------------ |
30
+ | DepartmentID |
27
31
 
28
- ## `Indexes[]`
32
+ ## `Indexes`
29
33
 
30
- ## `Foreign Keys[]`
34
+ ## `Foreign Keys`
31
35
 
32
36
  | `Columns` | `Ref Table` | `Ref Columns` | `Options` |
33
37
  | --------- | ----------- | ------------- | --------- |
34
- | ManagerID | Employees | EmployeeID | |
35
- | ParentID | Departments | DepartmentID | |
36
-
37
- ## `Columns[]`
38
-
39
- | `Label` | `Name` | `Type` | `Nullable` | `Default` | `Comment` |
40
- | ----------------- | -------------- | ------------------ | ---------- | --------- | --------- |
41
- | Department ID | DepartmentID | int auto_increment | `false` | | |
42
- | Department Name | DepartmentName | varchar(50) | `false` | | |
43
- | Parent Department | ParentID | int | `true` | | |
44
- | Manager | ManagerID | int | `true` | | |
38
+ | ManagerID | employees | EmployeeID | |
39
+ | ParentID | departments | DepartmentID | |
40
+
41
+ ## `Columns`
42
+
43
+ | `Label` | `Name` | `Type` | `Nullable` | `Default` | `Comment` |
44
+ | --------------- | -------------- | -------------------------------------- | ---------- | ------------------- | -------------------- |
45
+ | Department ID | DepartmentID | int auto_increment | `No` | | Department ID |
46
+ | Department Name | DepartmentName | varchar(50) | `No` | | Department Name |
47
+ | Parent ID | ParentID | int | `Yes` | | Parent Department |
48
+ | Manager ID | ManagerID | int | `Yes` | | Manager |
49
+ | Created By | CreatedBy | varchar(255) | `No` | '' | Created By User Name |
50
+ | Create Time | CreateTime | datetime | `No` | current_timestamp() | Created Time |
51
+ | Update By | UpdateBy | varchar(255) | `No` | '' | Updated By User Name |
52
+ | Update Time | UpdateTime | datetime on update current_timestamp() | `No` | current_timestamp() | Updated Time |
45
53
  ```
46
54
 
47
55
  You will get SQL scripts:
48
56
 
49
57
  ```sql
50
- CREATE TABLE Departments (
51
- DepartmentID int auto_increment NOT NULL COMMENT 'Department ID'
52
- ,DepartmentName varchar(50) NOT NULL COMMENT 'Department Name'
53
- ,ParentID int NULL COMMENT 'Parent Department'
54
- ,ManagerID int NULL COMMENT 'Manager'
55
- ,CONSTRAINT PK_Departments PRIMARY KEY (DepartmentID)
56
- );
58
+ -- Create table 'departments'
59
+ CREATE TABLE `departments` (
60
+ `DepartmentID` int auto_increment NOT NULL COMMENT 'Department ID'
61
+ , `DepartmentName` varchar(50) NOT NULL COMMENT 'Department Name'
62
+ , `ParentID` int COMMENT 'Parent Department'
63
+ , `ManagerID` int COMMENT 'Manager'
64
+ , `CreatedBy` varchar(255) NOT NULL DEFAULT '' COMMENT 'Created By User Name'
65
+ , `CreateTime` datetime NOT NULL DEFAULT current_timestamp() COMMENT 'Created Time'
66
+ , `UpdateBy` varchar(255) NOT NULL DEFAULT '' COMMENT 'Updated By User Name'
67
+ , `UpdateTime` datetime on update current_timestamp() NOT NULL DEFAULT current_timestamp() COMMENT 'Updated Time'
68
+ , PRIMARY KEY (DepartmentID)
69
+ ) COMMENT='The department table.'
70
+ ;
57
71
  ```
58
72
 
59
73
  ## Sample Code
60
74
 
61
75
  ```typescript
62
- import * as path from 'path';
76
+ import * as path from 'path'
63
77
 
64
- import { DatabaseTypes, DbmService, DbmOptions } from 'db-modeling-markdown';
78
+ import { DatabaseTypes, DbmOptions, DbmService } from '../src'
65
79
 
66
- const context: DbmOptions = new DbmOptions();
67
- context.database = DatabaseTypes.mysql;
68
- context.sourceFolder = path.join(__dirname, '../tests/data/mysql/tables');
80
+ const options: DbmOptions = new DbmOptions()
81
+ options.database = DatabaseTypes.mariadb
82
+ options.sourceFolder = path.join(__dirname, '../tests/data/mariadb/tables')
69
83
 
70
84
  // Read table definition markdow files(.db.md), and produce a sql file with create-table-if-not-exists scripts
71
- context.targetPath = path.join(__dirname, '../tmp/createTableIf.sql');
72
- DbmService.toCreateTableIfNotExistsSql(context);
85
+ options.targetPath = path.join(__dirname, '../temp/createTableIf.sql')
86
+ DbmService.toCreateTableIfNotExistsSql(options)
73
87
 
74
88
  // Read table definition markdow files(.db.md), and produce a sql file with create-table scripts
75
- context.targetPath = path.join(__dirname, '../tmp/createTable.sql');
76
- DbmService.toCreateTableSql(context);
89
+ options.targetPath = path.join(__dirname, '../temp/createTable.sql')
90
+ DbmService.toCreateTableSql(options)
77
91
 
78
92
  // Read table definition markdow files(.db.md), and produce a sql file with drop-table scripts
79
- context.targetPath = path.join(__dirname, '../tmp/dropTable.sql');
80
- DbmService.toDropTableSql(context);
93
+ options.targetPath = path.join(__dirname, '../temp/dropTable.sql')
94
+ DbmService.toDropTableSql(options)
81
95
 
82
96
  // Read table definition markdow files(.db.md), and produce a sql file with drop-then-create-table scripts
83
- context.targetPath = path.join(__dirname, '../tmp/dropThenCreateTable.sql');
84
- DbmService.toDropThenCreateTableSql(context);
97
+ options.targetPath = path.join(__dirname, '../temp/dropThenCreateTable.sql')
98
+ DbmService.toDropThenCreateTableSql(options)
85
99
 
86
100
  // Read table definition markdow files(.db.md), and produce a json file
87
- context.targetPath = path.join(__dirname, '../tmp/model.json');
88
- DbmService.toJson(context);
101
+ options.targetPath = path.join(__dirname, '../temp/model.json')
102
+ DbmService.toJson(options)
89
103
 
90
104
  // Read table definition markdow files(.db.md), and produce a model object
91
- context.targetPath = '';
92
- const model = DbmService.toModel(context);
93
- console.log(JSON.stringify(model, null, 2));
105
+ options.targetPath = ''
106
+ const model = DbmService.toModel(options)
107
+ console.log(JSON.stringify(model, null, 2))
94
108
 
95
109
  // Generate database modeling markdown files (.db.md) from a model
96
- DbmService.toMarkdown(model, path.join(__dirname, '../tmp/tables'), true);
97
-
110
+ DbmService.toMarkdown(model, path.join(__dirname, '../temp/tables'), true)
98
111
  ```
99
112
 
100
113
  ## Features
@@ -117,4 +130,8 @@ DbmService.toMarkdown(model, path.join(__dirname, '../tmp/tables'), true);
117
130
  - Support generate an model object of the database model.
118
131
  - Support generate database definition markdown files from a database model.
119
132
 
133
+ ## Contributing
134
+
135
+ Please see [Contributing](./CONTRIBUTING.md)
136
+
120
137
  **Enjoy!**
@@ -0,0 +1,5 @@
1
+ import { DbModel } from '../../models/dbModel';
2
+ import { DbOptions } from '../../services/dbOptions';
3
+ export declare abstract class DbImportProvider {
4
+ abstract getModel(dbOptions: DbOptions): Promise<DbModel>;
5
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DbImportProvider = void 0;
4
+ class DbImportProvider {
5
+ }
6
+ exports.DbImportProvider = DbImportProvider;
7
+ //# sourceMappingURL=dbImportProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dbImportProvider.js","sourceRoot":"","sources":["../../../src/dialects/core/dbImportProvider.ts"],"names":[],"mappings":";;;AAGA,MAAsB,gBAAgB;CAErC;AAFD,4CAEC"}
@@ -1,11 +1,18 @@
1
- import { DbModel, DbColumn, DbForeignKey, DbIndex, DbTable } from '../../services/dbModel';
1
+ import { DbColumn } from '../../models/dbColumn';
2
+ import { DbForeignKey } from '../../models/dbForeignKey';
3
+ import { DbIndex } from '../../models/dbIndex';
4
+ import { DbModel } from '../../models/dbModel';
5
+ import { DbTable } from '../../models/dbTable';
6
+ export declare const line: string;
7
+ export declare const indent: string;
2
8
  export declare abstract class DbProvider {
3
9
  private outputs;
4
10
  getColumnComment(column: DbColumn): string;
5
- abstract getCreateTableIfNotExistsSql(model: DbModel, withComments: boolean): string;
6
- abstract getCreateTableSql(model: DbModel, withComments: boolean): string;
7
- abstract getDropTableSql(model: DbModel, withComments: boolean): string;
8
- abstract getDropThenCreateTableSql(model: DbModel, withComments: boolean): string;
11
+ abstract getCreateTableIfNotExistsSql(model: DbModel, withComment: boolean): string;
12
+ abstract getCreateTableSql(model: DbModel, withComment: boolean): string;
13
+ abstract getDropTableSql(model: DbModel, withComment: boolean): string;
14
+ abstract getDropThenCreateTableSql(model: DbModel, withComment: boolean): string;
15
+ getUpgradeSql(fromModel: DbModel, model: DbModel, withComment: boolean): string;
9
16
  private getOutput;
10
17
  outputCopy(): string;
11
18
  outputInitialize(): void;
@@ -13,9 +20,15 @@ export declare abstract class DbProvider {
13
20
  outputlnln(text: string, outputId?: number): void;
14
21
  renderDefaultName(table: DbTable, column: DbColumn): string;
15
22
  renderFkName(table: DbTable, foreignKey: DbForeignKey): string;
23
+ renderFkName2(tableName: string, foreignKey: DbForeignKey): string;
16
24
  renderIndexName(table: DbTable, index: DbIndex): string;
25
+ renderIndexName2(tableName: string, index: DbIndex): string;
17
26
  renderPkName(table: DbTable): string;
18
27
  renderTableName(name: string): string;
28
+ /**
29
+ * make sure the length of the name is <= 64
30
+ * @param name the key name
31
+ */
32
+ private renderName;
19
33
  stripBrackets(value: string, stripAll?: boolean): string;
20
34
  }
21
- export declare const line: string;
@@ -1,17 +1,24 @@
1
1
  "use strict";
2
+ /* eslint-disable class-methods-use-this */
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.line = exports.DbProvider = void 0;
4
+ exports.DbProvider = exports.indent = exports.line = void 0;
5
+ exports.line = '\n';
6
+ exports.indent = ' ';
4
7
  class DbProvider {
5
8
  constructor() {
6
9
  this.outputs = new Map();
7
10
  }
8
11
  getColumnComment(column) {
9
- let sqlComment = (column.comment ? column.comment : '');
10
- if (sqlComment.length === 0 && column.label.length > 0) {
12
+ let sqlComment = column.comment ? column.comment : '';
13
+ if (sqlComment.length === 0 && column.label) {
11
14
  sqlComment = column.label;
12
15
  }
13
16
  return sqlComment;
14
17
  }
18
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
19
+ getUpgradeSql(fromModel, model, withComment) {
20
+ throw new Error('Method not implemented.');
21
+ }
15
22
  getOutput(outputId) {
16
23
  let output = this.outputs.get(outputId);
17
24
  if (output === undefined) {
@@ -48,10 +55,23 @@ class DbProvider {
48
55
  return `DF_${this.renderTableName(table.name)}_${column.name}`;
49
56
  }
50
57
  renderFkName(table, foreignKey) {
51
- return `FK_${this.renderTableName(table.name)}_${foreignKey.columns.replace(/[()\s]/g, '').replace(',', '_')}`;
58
+ return this.renderFkName2(table.name, foreignKey);
59
+ }
60
+ renderFkName2(tableName, foreignKey) {
61
+ return `FK_${this.renderTableName(tableName)}_${foreignKey.columns
62
+ .replace(/[()\s]/g, '')
63
+ .replace(/,/g, '_')}`;
52
64
  }
53
65
  renderIndexName(table, index) {
54
- return `IK_${this.renderTableName(table.name)}_${index.columns.replace(/[()\s]/g, '').replace(',', '_')}`;
66
+ return this.renderIndexName2(table.name, index);
67
+ }
68
+ renderIndexName2(tableName, index) {
69
+ if (index.name) {
70
+ return index.name;
71
+ }
72
+ return `IK_${this.renderTableName(tableName)}_${index.columns
73
+ .replace(/[()\s]/g, '')
74
+ .replace(/,/g, '_')}`;
55
75
  }
56
76
  renderPkName(table) {
57
77
  return `PK_${this.renderTableName(table.name)}`;
@@ -59,6 +79,21 @@ class DbProvider {
59
79
  renderTableName(name) {
60
80
  return name.replace('\\s', '').replace('_', '');
61
81
  }
82
+ /**
83
+ * make sure the length of the name is <= 64
84
+ * @param name the key name
85
+ */
86
+ renderName(prefix, columns, name) {
87
+ if (name.length <= 64) {
88
+ return name;
89
+ }
90
+ const sections = name.split('_');
91
+ // for 1 field case, cut it
92
+ if (sections.length <= 2) {
93
+ return name.substring(0, 64);
94
+ }
95
+ return name;
96
+ }
62
97
  stripBrackets(value, stripAll = false) {
63
98
  let newValue = value;
64
99
  const minLength = stripAll ? 2 : 4;
@@ -82,5 +117,4 @@ class DbProvider {
82
117
  }
83
118
  }
84
119
  exports.DbProvider = DbProvider;
85
- exports.line = '\n';
86
120
  //# sourceMappingURL=dbProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dbProvider.js","sourceRoot":"","sources":["../../../src/dialects/core/dbProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dbProvider.js","sourceRoot":"","sources":["../../../src/dialects/core/dbProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { DbColumn } from '../../models/dbColumn';
2
+ import { DbForeignKey } from '../../models/dbForeignKey';
3
+ import { DbIndex } from '../../models/dbIndex';
4
+ import { DbModel } from '../../models/dbModel';
5
+ import { DbTable } from '../../models/dbTable';
6
+ export declare const line: string;
7
+ export declare const indent: string;
8
+ export declare class DbUtils {
9
+ static getComment(column: DbColumn): string | undefined;
10
+ /**
11
+ * Generate names for indexes and foreign keys
12
+ * @param model the database model
13
+ * @param maxLength the max length of key name limitation
14
+ */
15
+ static genModelNames(model: DbModel, maxLength?: number): void;
16
+ /**
17
+ * Generate names for indexes and foreign keys
18
+ * - table name + first field
19
+ * - if there is a duplicate, and more fields
20
+ * - only keep characters in max length
21
+ * - if there is a duplicate, remove and last 4 chars and add an index like 0001.
22
+ * @param table
23
+ * @param maxLength
24
+ */
25
+ static genTableNames(table: DbTable, maxLength?: number): void;
26
+ static renderDefaultName(table: DbTable, column: DbColumn): string;
27
+ static renderFkName(table: DbTable, foreignKey: DbForeignKey): string;
28
+ static renderFkName2(tableName: string, foreignKey: DbForeignKey): string;
29
+ static renderIndexName(table: DbTable, index: DbIndex): string;
30
+ static renderIndexName2(tableName: string, index: DbIndex): string;
31
+ static renderPkName(table: DbTable): string;
32
+ static renderTableName(name: string): string;
33
+ static stripBrackets(value: string, stripAll?: boolean): string;
34
+ static log(data: any): string;
35
+ }
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ /* eslint-disable class-methods-use-this */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DbUtils = exports.indent = exports.line = void 0;
5
+ exports.line = '\n';
6
+ exports.indent = ' ';
7
+ class DbUtils {
8
+ static getComment(column) {
9
+ let sqlComment = column.comment;
10
+ if (!sqlComment && column.label) {
11
+ sqlComment = column.label;
12
+ }
13
+ return sqlComment;
14
+ }
15
+ /**
16
+ * Generate names for indexes and foreign keys
17
+ * @param model the database model
18
+ * @param maxLength the max length of key name limitation
19
+ */
20
+ static genModelNames(model, maxLength = 64) {
21
+ model.tables.forEach(table => {
22
+ this.genTableNames(table, maxLength);
23
+ });
24
+ }
25
+ /**
26
+ * Generate names for indexes and foreign keys
27
+ * - table name + first field
28
+ * - if there is a duplicate, and more fields
29
+ * - only keep characters in max length
30
+ * - if there is a duplicate, remove and last 4 chars and add an index like 0001.
31
+ * @param table
32
+ * @param maxLength
33
+ */
34
+ static genTableNames(table, maxLength = 64) {
35
+ let nameMap = {};
36
+ table.indexes.forEach(index => {
37
+ if (index.name) {
38
+ nameMap[index.name] = index.name;
39
+ return;
40
+ }
41
+ const columns = index.columns.split(/,\s*/g);
42
+ index.name = `IK_${table.name}`;
43
+ // eslint-disable-next-line no-restricted-syntax
44
+ for (const column of columns) {
45
+ index.name += `_${column}`;
46
+ if (!nameMap[index.name]) {
47
+ // if the name is good
48
+ nameMap[index.name] = index.name;
49
+ return;
50
+ }
51
+ }
52
+ });
53
+ // apply the max length limitation
54
+ nameMap = {};
55
+ let nameIndex = 0;
56
+ table.indexes.forEach(index => {
57
+ if (index.name.length > maxLength) {
58
+ index.name = index.name?.substring(0, maxLength);
59
+ }
60
+ if (!nameMap[index.name]) {
61
+ // if the name is good
62
+ nameMap[index.name] = index.name;
63
+ return;
64
+ }
65
+ nameIndex += 1;
66
+ index.name = index.name.substring(0, maxLength - 4) + nameIndex.toString().padStart(4, '0');
67
+ });
68
+ // foreign keys
69
+ nameMap = {};
70
+ table.foreignKeys.forEach(foreignKey => {
71
+ if (foreignKey.name) {
72
+ nameMap[foreignKey.name] = foreignKey.name;
73
+ return;
74
+ }
75
+ const columns = foreignKey.columns.split(/,\s*/g);
76
+ foreignKey.name = `FK_${table.name}`;
77
+ // eslint-disable-next-line no-restricted-syntax
78
+ for (const column of columns) {
79
+ foreignKey.name += `_${column}`;
80
+ if (!nameMap[foreignKey.name]) {
81
+ // if the name is good
82
+ nameMap[foreignKey.name] = foreignKey.name;
83
+ return;
84
+ }
85
+ }
86
+ });
87
+ // apply the max length limitation
88
+ nameMap = {};
89
+ nameIndex = 0;
90
+ table.foreignKeys.forEach(foreignKey => {
91
+ if (foreignKey.name.length > maxLength) {
92
+ foreignKey.name = foreignKey.name?.substring(0, maxLength);
93
+ }
94
+ if (!nameMap[foreignKey.name]) {
95
+ // if the name is good
96
+ nameMap[foreignKey.name] = foreignKey.name;
97
+ return;
98
+ }
99
+ nameIndex += 1;
100
+ foreignKey.name = foreignKey.name.substring(0, maxLength - 4) + nameIndex.toString().padStart(4, '0');
101
+ });
102
+ }
103
+ static renderDefaultName(table, column) {
104
+ return `DF_${DbUtils.renderTableName(table.name)}_${column.name}`;
105
+ }
106
+ static renderFkName(table, foreignKey) {
107
+ return DbUtils.renderFkName2(table.name, foreignKey);
108
+ }
109
+ static renderFkName2(tableName, foreignKey) {
110
+ return `FK_${DbUtils.renderTableName(tableName)}_${foreignKey.columns
111
+ .replace(/[()\s]/g, '')
112
+ .replace(/,/g, '_')}`;
113
+ }
114
+ static renderIndexName(table, index) {
115
+ return DbUtils.renderIndexName2(table.name, index);
116
+ }
117
+ static renderIndexName2(tableName, index) {
118
+ if (index.name) {
119
+ return index.name;
120
+ }
121
+ return `IK_${DbUtils.renderTableName(tableName)}_${index.columns
122
+ .replace(/[()\s]/g, '')
123
+ .replace(/,/g, '_')}`;
124
+ }
125
+ static renderPkName(table) {
126
+ return `PK_${DbUtils.renderTableName(table.name)}`;
127
+ }
128
+ static renderTableName(name) {
129
+ return name.replace('\\s', '');
130
+ }
131
+ static stripBrackets(value, stripAll = false) {
132
+ let newValue = value;
133
+ const minLength = stripAll ? 2 : 4;
134
+ while (newValue.length > minLength) {
135
+ if (stripAll) {
136
+ if (newValue.startsWith('(') && newValue.endsWith(')')) {
137
+ newValue = newValue.substring(1, newValue.length - 1);
138
+ }
139
+ else {
140
+ break;
141
+ }
142
+ }
143
+ else if (newValue.startsWith('((') && newValue.endsWith('))')) {
144
+ newValue = newValue.substring(2, newValue.length - 2);
145
+ }
146
+ else {
147
+ break;
148
+ }
149
+ }
150
+ return newValue;
151
+ }
152
+ static log(data) {
153
+ // eslint-disable-next-line no-console
154
+ console.log(data);
155
+ return "";
156
+ }
157
+ }
158
+ exports.DbUtils = DbUtils;
159
+ //# sourceMappingURL=dbUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dbUtils.js","sourceRoot":"","sources":["../../../src/dialects/core/dbUtils.ts"],"names":[],"mappings":"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"}