mysqlsyncr 1.1.12 → 1.2.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 +59 -0
- package/__tests__/acceptCurrent.test.js +117 -0
- package/__tests__/columnAttributes.test.js +101 -0
- package/__tests__/options.test.js +259 -0
- package/__tests__/parser.test.js +167 -166
- package/__tests__/parser2.test.js +155 -152
- package/__tests__/paths.test.js +21 -0
- package/__tests__/prompt.test.js +106 -0
- package/__tests__/sync.test.js +348 -0
- package/__tests__/templateDrift.test.js +72 -0
- package/__tests__/versions.test.js +138 -0
- package/dist/index.cjs +4059 -1733
- package/dist/index.js +4101 -1777
- package/package.json +66 -59
- package/rollup.config.js +2 -1
- package/src/DBStructureChecker.js +47 -0
- package/src/acceptCurrent.js +225 -0
- package/src/apply.js +254 -136
- package/src/cli.js +61 -34
- package/src/compare.js +106 -92
- package/src/differences.js +258 -212
- package/src/dump.js +63 -54
- package/src/getters.js +151 -139
- package/src/index.js +223 -169
- package/src/loggers.js +156 -139
- package/src/normalizers.js +28 -6
- package/src/options.js +133 -0
- package/src/parsers.js +82 -36
- package/src/paths.js +41 -0
- package/src/prompt.js +109 -0
- package/src/rebuild.js +106 -0
- package/src/rows.js +46 -0
- package/src/socketServer.js +106 -24
- package/src/templateDrift.js +93 -0
- package/src/versions.js +112 -0
- package/ui/README.md +55 -40
- package/ui/dist/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuYjalmUiAw-k1h7X_-h.woff +0 -0
- package/ui/dist/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuZtalmUiAw-B7du-70m.woff +0 -0
- package/ui/dist/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuaabVmUiAw-CoAZ_DKt.woff +0 -0
- package/ui/dist/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWub2bVmUiAw-D0406B4n.woff +0 -0
- package/ui/dist/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbFmUiAw-CnAg2DeQ.woff +0 -0
- package/ui/dist/spa/assets/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbVmUiAw-BG9VWE5v.woff +0 -0
- package/ui/dist/spa/assets/MainLayout-DLH1Kfg-.js +1 -0
- package/ui/dist/spa/assets/axios-2hQ_j_Tz.js +1 -0
- package/ui/dist/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNa-OUIwM9U8.woff +0 -0
- package/ui/dist/spa/assets/index-Cqrg985P.js +23 -0
- package/ui/dist/spa/assets/index-pOWtXlXQ.css +1 -0
- package/ui/dist/spa/index.html +2 -2
- package/ui/package.json +43 -42
- package/ui/src/components/DefinitionDiff.vue +169 -0
- package/ui/src/pages/MainComponent.vue +704 -78
- package/ui/dist/spa/assets/KFOkCnqEu92Fr1MmgVxIIzQ-Y2mpUUkw.woff +0 -0
- package/ui/dist/spa/assets/KFOlCnqEu92Fr1MmEU9fBBc--ViM7Ag4Q.woff +0 -0
- package/ui/dist/spa/assets/KFOlCnqEu92Fr1MmSU5fBBc--CrFzpgl6.woff +0 -0
- package/ui/dist/spa/assets/KFOlCnqEu92Fr1MmWUlfBBc--CW3_XjG_.woff +0 -0
- package/ui/dist/spa/assets/KFOlCnqEu92Fr1MmYUtfBBc--Dr8fnyGc.woff +0 -0
- package/ui/dist/spa/assets/KFOmCnqEu92Fr1Mu4mxM-DAYh6T4l.woff +0 -0
- package/ui/dist/spa/assets/MainLayout-CvQD3xKr.js +0 -1
- package/ui/dist/spa/assets/axios-C0XcclIb.js +0 -1
- package/ui/dist/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNa-Dr0goTwe.woff +0 -0
- package/ui/dist/spa/assets/index-CwWo8xmP.js +0 -40
- package/ui/dist/spa/assets/index-kXpA8n8r.css +0 -5
package/__tests__/parser.test.js
CHANGED
|
@@ -1,167 +1,168 @@
|
|
|
1
|
-
import { parseCreateTableSQL, parseDatabaseStructure } from '../src/parsers';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
describe('Create Table Parser', () => {
|
|
6
|
-
|
|
7
|
-
test('should correctly parse a valid create table statement. Check #1', () => {
|
|
8
|
-
const input = `CREATE TABLE \`AlarmRuleHistory\` (
|
|
9
|
-
\`idAlarmHistory\` int(11) NOT NULL AUTO_INCREMENT,
|
|
10
|
-
\`idAsset\` int(11) NOT NULL,
|
|
11
|
-
\`idCaseDX\` int(11) DEFAULT NULL,
|
|
12
|
-
\`idAlertRule\` int(11) DEFAULT NULL,
|
|
13
|
-
\`activeAlarmRule\` smallint(1) NOT NULL DEFAULT '0',
|
|
14
|
-
\`alarmRule_StartDate\` timestamp NULL DEFAULT NULL,
|
|
15
|
-
\`alarmRule_EndDate\` timestamp NULL DEFAULT NULL,
|
|
16
|
-
\`dateCreated\` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
17
|
-
\`dateUpdated\` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
18
|
-
\`lastModifiedBy\` varchar(32) NOT NULL DEFAULT 'System Generated',
|
|
19
|
-
PRIMARY KEY (\`idAlarmHistory\`),
|
|
20
|
-
KEY \`AlertRule_idx\` (\`idAlertRule\`),
|
|
21
|
-
KEY \`CaseDX_idx\` (\`idCaseDX\`),
|
|
22
|
-
KEY \`Asset_idx\` (\`idAsset\`),
|
|
23
|
-
CONSTRAINT \`AlertRule\` FOREIGN KEY (\`idAlertRule\`) REFERENCES \`AlertRules\` (\`idAlertRule\`) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
|
24
|
-
CONSTRAINT \`Asset\` FOREIGN KEY (\`idAsset\`) REFERENCES \`Assets\` (\`idAsset\`) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
|
25
|
-
CONSTRAINT \`CaseDX\` FOREIGN KEY (\`idCaseDX\`) REFERENCES \`Case_DX\` (\`idCaseDX\`) ON DELETE NO ACTION ON UPDATE NO ACTION
|
|
26
|
-
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Keeps track of all active/inactive alarm rules used for the assets.\n';`;
|
|
27
|
-
|
|
28
|
-
const expectedOutput = {
|
|
29
|
-
"name": "AlarmRuleHistory",
|
|
30
|
-
"columns": [
|
|
31
|
-
{
|
|
32
|
-
"Field": "idAlarmHistory",
|
|
33
|
-
"Type": "int(11)",
|
|
34
|
-
"NotNull": true,
|
|
35
|
-
"AutoIncrement": true
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"Field": "idAsset",
|
|
39
|
-
"Type": "int(11)",
|
|
40
|
-
"NotNull": true
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"Field": "idCaseDX",
|
|
44
|
-
"Type": "int(11)",
|
|
45
|
-
"Default": "NULL"
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"Field": "idAlertRule",
|
|
49
|
-
"Type": "int(11)",
|
|
50
|
-
"Default": "NULL"
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
"Field": "activeAlarmRule",
|
|
54
|
-
"Type": "smallint(1)",
|
|
55
|
-
"NotNull": true,
|
|
56
|
-
"Default": "0"
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
"Field": "alarmRule_StartDate",
|
|
60
|
-
"Type": "timestamp",
|
|
61
|
-
"Default": "NULL"
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
"Field": "alarmRule_EndDate",
|
|
65
|
-
"Type": "timestamp",
|
|
66
|
-
"Default": "NULL"
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
"Field": "dateCreated",
|
|
70
|
-
"Type": "timestamp",
|
|
71
|
-
"NotNull": true,
|
|
72
|
-
"Default": "CURRENT_TIMESTAMP"
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
"Field": "dateUpdated",
|
|
76
|
-
"Type": "timestamp",
|
|
77
|
-
"NotNull": true,
|
|
78
|
-
"Default": "CURRENT_TIMESTAMP"
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
"
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
"
|
|
118
|
-
"
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
"
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
"
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
"
|
|
131
|
-
"
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
"
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
"
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
"
|
|
144
|
-
"
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
"
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
"
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
"
|
|
157
|
-
"
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
1
|
+
import { parseCreateTableSQL, parseDatabaseStructure } from '../src/parsers';
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
describe('Create Table Parser', () => {
|
|
6
|
+
|
|
7
|
+
test('should correctly parse a valid create table statement. Check #1', () => {
|
|
8
|
+
const input = `CREATE TABLE \`AlarmRuleHistory\` (
|
|
9
|
+
\`idAlarmHistory\` int(11) NOT NULL AUTO_INCREMENT,
|
|
10
|
+
\`idAsset\` int(11) NOT NULL,
|
|
11
|
+
\`idCaseDX\` int(11) DEFAULT NULL,
|
|
12
|
+
\`idAlertRule\` int(11) DEFAULT NULL,
|
|
13
|
+
\`activeAlarmRule\` smallint(1) NOT NULL DEFAULT '0',
|
|
14
|
+
\`alarmRule_StartDate\` timestamp NULL DEFAULT NULL,
|
|
15
|
+
\`alarmRule_EndDate\` timestamp NULL DEFAULT NULL,
|
|
16
|
+
\`dateCreated\` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
17
|
+
\`dateUpdated\` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
18
|
+
\`lastModifiedBy\` varchar(32) NOT NULL DEFAULT 'System Generated',
|
|
19
|
+
PRIMARY KEY (\`idAlarmHistory\`),
|
|
20
|
+
KEY \`AlertRule_idx\` (\`idAlertRule\`),
|
|
21
|
+
KEY \`CaseDX_idx\` (\`idCaseDX\`),
|
|
22
|
+
KEY \`Asset_idx\` (\`idAsset\`),
|
|
23
|
+
CONSTRAINT \`AlertRule\` FOREIGN KEY (\`idAlertRule\`) REFERENCES \`AlertRules\` (\`idAlertRule\`) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
|
24
|
+
CONSTRAINT \`Asset\` FOREIGN KEY (\`idAsset\`) REFERENCES \`Assets\` (\`idAsset\`) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
|
25
|
+
CONSTRAINT \`CaseDX\` FOREIGN KEY (\`idCaseDX\`) REFERENCES \`Case_DX\` (\`idCaseDX\`) ON DELETE NO ACTION ON UPDATE NO ACTION
|
|
26
|
+
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Keeps track of all active/inactive alarm rules used for the assets.\n';`;
|
|
27
|
+
|
|
28
|
+
const expectedOutput = {
|
|
29
|
+
"name": "AlarmRuleHistory",
|
|
30
|
+
"columns": [
|
|
31
|
+
{
|
|
32
|
+
"Field": "idAlarmHistory",
|
|
33
|
+
"Type": "int(11)",
|
|
34
|
+
"NotNull": true,
|
|
35
|
+
"AutoIncrement": true
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"Field": "idAsset",
|
|
39
|
+
"Type": "int(11)",
|
|
40
|
+
"NotNull": true
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"Field": "idCaseDX",
|
|
44
|
+
"Type": "int(11)",
|
|
45
|
+
"Default": "NULL"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"Field": "idAlertRule",
|
|
49
|
+
"Type": "int(11)",
|
|
50
|
+
"Default": "NULL"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"Field": "activeAlarmRule",
|
|
54
|
+
"Type": "smallint(1)",
|
|
55
|
+
"NotNull": true,
|
|
56
|
+
"Default": "0"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"Field": "alarmRule_StartDate",
|
|
60
|
+
"Type": "timestamp",
|
|
61
|
+
"Default": "NULL"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"Field": "alarmRule_EndDate",
|
|
65
|
+
"Type": "timestamp",
|
|
66
|
+
"Default": "NULL"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"Field": "dateCreated",
|
|
70
|
+
"Type": "timestamp",
|
|
71
|
+
"NotNull": true,
|
|
72
|
+
"Default": "CURRENT_TIMESTAMP"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"Field": "dateUpdated",
|
|
76
|
+
"Type": "timestamp",
|
|
77
|
+
"NotNull": true,
|
|
78
|
+
"Default": "CURRENT_TIMESTAMP",
|
|
79
|
+
"OnUpdate": "CURRENT_TIMESTAMP"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"Field": "lastModifiedBy",
|
|
83
|
+
"Type": "varchar(32)",
|
|
84
|
+
"NotNull": true,
|
|
85
|
+
"Default": "System Generated"
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
"indexes": [
|
|
89
|
+
{
|
|
90
|
+
"ColumnName": [
|
|
91
|
+
"idAlarmHistory"
|
|
92
|
+
],
|
|
93
|
+
"Primary": true,
|
|
94
|
+
"Name": "PRIMARY"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"ColumnName": [
|
|
98
|
+
"idAlertRule"
|
|
99
|
+
],
|
|
100
|
+
"Name": "AlertRule_idx"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"ColumnName": [
|
|
104
|
+
"idCaseDX"
|
|
105
|
+
],
|
|
106
|
+
"Name": "CaseDX_idx"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"ColumnName": [
|
|
110
|
+
"idAsset"
|
|
111
|
+
],
|
|
112
|
+
"Name": "Asset_idx"
|
|
113
|
+
}
|
|
114
|
+
],
|
|
115
|
+
"constraints": [
|
|
116
|
+
{
|
|
117
|
+
"Name": "AlertRule",
|
|
118
|
+
"Type": "FOREIGN KEY",
|
|
119
|
+
"ColumnName": [
|
|
120
|
+
"idAlertRule"
|
|
121
|
+
],
|
|
122
|
+
"References": {
|
|
123
|
+
"Table": "AlertRules",
|
|
124
|
+
"Column": "idAlertRule"
|
|
125
|
+
},
|
|
126
|
+
"OnDelete": "NO ACTION",
|
|
127
|
+
"OnUpdate": "NO ACTION"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"Name": "AlertRule",
|
|
131
|
+
"Type": "FOREIGN KEY",
|
|
132
|
+
"ColumnName": [
|
|
133
|
+
"idAsset"
|
|
134
|
+
],
|
|
135
|
+
"References": {
|
|
136
|
+
"Table": "Assets",
|
|
137
|
+
"Column": "idAsset"
|
|
138
|
+
},
|
|
139
|
+
"OnDelete": "NO ACTION",
|
|
140
|
+
"OnUpdate": "NO ACTION"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"Name": "AlertRule",
|
|
144
|
+
"Type": "FOREIGN KEY",
|
|
145
|
+
"ColumnName": [
|
|
146
|
+
"idCaseDX"
|
|
147
|
+
],
|
|
148
|
+
"References": {
|
|
149
|
+
"Table": "Case_DX",
|
|
150
|
+
"Column": "idCaseDX"
|
|
151
|
+
},
|
|
152
|
+
"OnDelete": "NO ACTION",
|
|
153
|
+
"OnUpdate": "NO ACTION"
|
|
154
|
+
}
|
|
155
|
+
],
|
|
156
|
+
"engine": "InnoDB",
|
|
157
|
+
"charset": "latin1",
|
|
158
|
+
"collate": null
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
const result = parseCreateTableSQL(input);
|
|
164
|
+
expect(result).toEqual(expectedOutput);
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
|
|
167
168
|
});
|
|
@@ -1,153 +1,156 @@
|
|
|
1
|
-
import { parseCreateTableSQL, parseDatabaseStructure } from '../src/parsers';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
describe('Create Table Parser', () => {
|
|
6
|
-
|
|
7
|
-
test('should correctly parse a valid create table statement. Check #1', () => {
|
|
8
|
-
const input = `CREATE TABLE \`Alarms\` (
|
|
9
|
-
\`alarmId\` int NOT NULL AUTO_INCREMENT,
|
|
10
|
-
\`alarmRuleId\` int NOT NULL,
|
|
11
|
-
\`alarmStatus\` int NOT NULL,
|
|
12
|
-
\`alarmStatus_Text\` varchar(50) NOT NULL,
|
|
13
|
-
\`alarmCreated_Date\` timestamp NULL DEFAULT NULL,
|
|
14
|
-
\`alarmConfirmed_Date\` timestamp NULL DEFAULT NULL,
|
|
15
|
-
\`alarmRecall_Date\` timestamp NULL DEFAULT NULL,
|
|
16
|
-
\`activeAlarm\` tinyint(1) NOT NULL DEFAULT '0',
|
|
17
|
-
\`emailSent\` tinyint(1) DEFAULT '0',
|
|
18
|
-
\`emailSent_AnswerPlus\` tinyint(1) DEFAULT '0',
|
|
19
|
-
\`ticketEmailSent\` tinyint(1) DEFAULT '0',
|
|
20
|
-
\`type\` varchar(45) DEFAULT NULL,
|
|
21
|
-
\`oorValue\` float(10,2) DEFAULT NULL,
|
|
22
|
-
\`thresholdValue\` float(10,2) DEFAULT NULL,
|
|
23
|
-
\`dateCreated\` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
|
24
|
-
\`dateUpdated\` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
25
|
-
PRIMARY KEY (\`alarmId\`),
|
|
26
|
-
UNIQUE KEY \`UniqueAlarmRules\` (\`alarmRuleId\`),
|
|
27
|
-
KEY \`idx_alarms_alarmruleid_alarmstatus\` (\`alarmRuleId\`, \`alarmStatus\`)
|
|
28
|
-
) ENGINE=InnoDB AUTO_INCREMENT=117 DEFAULT CHARSET=latin1 COMMENT='Alarm table for alarms '`;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const expectedOutput = {
|
|
32
|
-
"name": "Alarms",
|
|
33
|
-
"columns": [
|
|
34
|
-
{
|
|
35
|
-
"Field": "alarmId",
|
|
36
|
-
"Type": "int",
|
|
37
|
-
"NotNull": true,
|
|
38
|
-
"AutoIncrement": true
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"Field": "alarmRuleId",
|
|
42
|
-
"Type": "int",
|
|
43
|
-
"NotNull": true
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
"Field": "alarmStatus",
|
|
47
|
-
"Type": "int",
|
|
48
|
-
"NotNull": true
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
"Field": "alarmStatus_Text",
|
|
52
|
-
"Type": "varchar(50)",
|
|
53
|
-
"NotNull": true
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
"Field": "alarmCreated_Date",
|
|
57
|
-
"Type": "timestamp",
|
|
58
|
-
"Default": "NULL"
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
"Field": "alarmConfirmed_Date",
|
|
62
|
-
"Type": "timestamp",
|
|
63
|
-
"Default": "NULL"
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
"Field": "alarmRecall_Date",
|
|
67
|
-
"Type": "timestamp",
|
|
68
|
-
"Default": "NULL"
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
"Field": "activeAlarm",
|
|
72
|
-
"Type": "tinyint(1)",
|
|
73
|
-
"NotNull": true,
|
|
74
|
-
"Default": "0"
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
"Field": "emailSent",
|
|
78
|
-
"Type": "tinyint(1)",
|
|
79
|
-
"Default": "0"
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
"Field": "emailSent_AnswerPlus",
|
|
83
|
-
"Type": "tinyint(1)",
|
|
84
|
-
"Default": "0"
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
"Field": "ticketEmailSent",
|
|
88
|
-
"Type": "tinyint(1)",
|
|
89
|
-
"Default": "0"
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
"Field": "type",
|
|
93
|
-
"Type": "varchar(45)",
|
|
94
|
-
"Default": "NULL"
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
"Field": "oorValue",
|
|
98
|
-
"Type": "float(10,2)"
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
"
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
"
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
"
|
|
113
|
-
"
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
"
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
"
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
"
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
"
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
"
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
1
|
+
import { parseCreateTableSQL, parseDatabaseStructure } from '../src/parsers';
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
describe('Create Table Parser', () => {
|
|
6
|
+
|
|
7
|
+
test('should correctly parse a valid create table statement. Check #1', () => {
|
|
8
|
+
const input = `CREATE TABLE \`Alarms\` (
|
|
9
|
+
\`alarmId\` int NOT NULL AUTO_INCREMENT,
|
|
10
|
+
\`alarmRuleId\` int NOT NULL,
|
|
11
|
+
\`alarmStatus\` int NOT NULL,
|
|
12
|
+
\`alarmStatus_Text\` varchar(50) NOT NULL,
|
|
13
|
+
\`alarmCreated_Date\` timestamp NULL DEFAULT NULL,
|
|
14
|
+
\`alarmConfirmed_Date\` timestamp NULL DEFAULT NULL,
|
|
15
|
+
\`alarmRecall_Date\` timestamp NULL DEFAULT NULL,
|
|
16
|
+
\`activeAlarm\` tinyint(1) NOT NULL DEFAULT '0',
|
|
17
|
+
\`emailSent\` tinyint(1) DEFAULT '0',
|
|
18
|
+
\`emailSent_AnswerPlus\` tinyint(1) DEFAULT '0',
|
|
19
|
+
\`ticketEmailSent\` tinyint(1) DEFAULT '0',
|
|
20
|
+
\`type\` varchar(45) DEFAULT NULL,
|
|
21
|
+
\`oorValue\` float(10,2) DEFAULT NULL,
|
|
22
|
+
\`thresholdValue\` float(10,2) DEFAULT NULL,
|
|
23
|
+
\`dateCreated\` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
|
24
|
+
\`dateUpdated\` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
25
|
+
PRIMARY KEY (\`alarmId\`),
|
|
26
|
+
UNIQUE KEY \`UniqueAlarmRules\` (\`alarmRuleId\`),
|
|
27
|
+
KEY \`idx_alarms_alarmruleid_alarmstatus\` (\`alarmRuleId\`, \`alarmStatus\`)
|
|
28
|
+
) ENGINE=InnoDB AUTO_INCREMENT=117 DEFAULT CHARSET=latin1 COMMENT='Alarm table for alarms '`;
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
const expectedOutput = {
|
|
32
|
+
"name": "Alarms",
|
|
33
|
+
"columns": [
|
|
34
|
+
{
|
|
35
|
+
"Field": "alarmId",
|
|
36
|
+
"Type": "int",
|
|
37
|
+
"NotNull": true,
|
|
38
|
+
"AutoIncrement": true
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"Field": "alarmRuleId",
|
|
42
|
+
"Type": "int",
|
|
43
|
+
"NotNull": true
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"Field": "alarmStatus",
|
|
47
|
+
"Type": "int",
|
|
48
|
+
"NotNull": true
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"Field": "alarmStatus_Text",
|
|
52
|
+
"Type": "varchar(50)",
|
|
53
|
+
"NotNull": true
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"Field": "alarmCreated_Date",
|
|
57
|
+
"Type": "timestamp",
|
|
58
|
+
"Default": "NULL"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"Field": "alarmConfirmed_Date",
|
|
62
|
+
"Type": "timestamp",
|
|
63
|
+
"Default": "NULL"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"Field": "alarmRecall_Date",
|
|
67
|
+
"Type": "timestamp",
|
|
68
|
+
"Default": "NULL"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"Field": "activeAlarm",
|
|
72
|
+
"Type": "tinyint(1)",
|
|
73
|
+
"NotNull": true,
|
|
74
|
+
"Default": "0"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"Field": "emailSent",
|
|
78
|
+
"Type": "tinyint(1)",
|
|
79
|
+
"Default": "0"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"Field": "emailSent_AnswerPlus",
|
|
83
|
+
"Type": "tinyint(1)",
|
|
84
|
+
"Default": "0"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"Field": "ticketEmailSent",
|
|
88
|
+
"Type": "tinyint(1)",
|
|
89
|
+
"Default": "0"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"Field": "type",
|
|
93
|
+
"Type": "varchar(45)",
|
|
94
|
+
"Default": "NULL"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"Field": "oorValue",
|
|
98
|
+
"Type": "float(10,2)",
|
|
99
|
+
"Default": "NULL"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"Field": "thresholdValue",
|
|
103
|
+
"Type": "float(10,2)",
|
|
104
|
+
"Default": "NULL"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"Field": "dateCreated",
|
|
108
|
+
"Type": "timestamp",
|
|
109
|
+
"Default": "CURRENT_TIMESTAMP"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"Field": "dateUpdated",
|
|
113
|
+
"Type": "timestamp",
|
|
114
|
+
"NotNull": true,
|
|
115
|
+
"Default": "CURRENT_TIMESTAMP",
|
|
116
|
+
"OnUpdate": "CURRENT_TIMESTAMP"
|
|
117
|
+
}
|
|
118
|
+
],
|
|
119
|
+
"indexes": [
|
|
120
|
+
{
|
|
121
|
+
"ColumnName": [
|
|
122
|
+
"alarmId"
|
|
123
|
+
],
|
|
124
|
+
"Primary": true,
|
|
125
|
+
"Name": "PRIMARY"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"ColumnName": [
|
|
129
|
+
"alarmRuleId"
|
|
130
|
+
],
|
|
131
|
+
"Unique": true,
|
|
132
|
+
"Name": "UniqueAlarmRules"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"ColumnName": [
|
|
136
|
+
"alarmRuleId",
|
|
137
|
+
"alarmStatus"
|
|
138
|
+
],
|
|
139
|
+
"Name": "idx_alarms_alarmruleid_alarmstatus"
|
|
140
|
+
}
|
|
141
|
+
],
|
|
142
|
+
"constraints": [],
|
|
143
|
+
"engine": null,
|
|
144
|
+
"charset": null,
|
|
145
|
+
"collate": null
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
const result = parseCreateTableSQL(input);
|
|
151
|
+
console.log('Result:', JSON.stringify(result, null, 2))
|
|
152
|
+
expect(result).toEqual(expectedOutput);
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
|
|
153
156
|
});
|