1
- import mysql from " mysql2" ;
2
- import chalk from " chalk" ;
3
- import { config } from " dotenv" ;
1
+ import mysql from ' mysql2' ;
2
+ import chalk from ' chalk' ;
3
+ import { config } from ' dotenv' ;
4
4
5
5
config ( ) ;
6
6
@@ -18,12 +18,12 @@ const connection = mysql.createConnection({
18
18
connection . connect ( ( err ) => {
19
19
if ( err ) throw err ;
20
20
21
- console . log ( " Connected to database!" ) ;
21
+ console . log ( ' Connected to database!' ) ;
22
22
23
23
const getTables = ( db ) => {
24
24
return new Promise ( ( resolve , reject ) => {
25
25
connection . query (
26
- " SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ?" ,
26
+ ' SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ?' ,
27
27
[ db ] ,
28
28
( err , tables ) => {
29
29
if ( err ) reject ( err ) ;
@@ -33,23 +33,21 @@ connection.connect((err) => {
33
33
} ) ;
34
34
} ;
35
35
36
- const dropTable = ( table ) => {
36
+ const dropTable = ( db , table ) => {
37
37
return new Promise ( ( resolve , reject ) => {
38
- connection . query (
39
- `DROP TABLE IF EXISTS ${ db2 } .??` ,
40
- [ table ] ,
41
- ( err , res ) => {
42
- if ( err ) reject ( err ) ;
43
- return resolve ( res ) ;
44
- }
45
- ) ;
38
+ connection . query ( `DROP TABLE IF EXISTS ??.??` , [ db , table ] , ( err , res ) => {
39
+ if ( err ) reject ( err ) ;
40
+ return resolve (
41
+ `The table ${ chalk . bold . redBright ( table ) } does not exists in both databases. Dropping...`
42
+ ) ;
43
+ } ) ;
46
44
} ) ;
47
45
} ;
48
46
49
47
const getColumns = ( db , table ) => {
50
48
return new Promise ( ( resolve , reject ) => {
51
49
connection . query (
52
- " SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?" ,
50
+ ' SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?' ,
53
51
[ db , table ] ,
54
52
( err , columns ) => {
55
53
if ( err ) reject ( err ) ;
@@ -59,53 +57,46 @@ connection.connect((err) => {
59
57
} ) ;
60
58
} ;
61
59
62
- const dropColumn = ( table , column ) => {
63
- console . log ( "droping column: " + column + " from table" + table ) ;
60
+ const dropColumn = ( db , table , column ) => {
64
61
return new Promise ( ( resolve , reject ) => {
65
- connection . query (
66
- `ALTER TABLE ${ db2 } .?? DROP COLUMN ??` ,
67
- [ table , column ] ,
68
- ( err , res ) => {
69
- if ( err ) reject ( err ) ;
70
- return resolve ( res ) ;
71
- }
72
- ) ;
62
+ connection . query ( `ALTER TABLE ??.?? DROP COLUMN ??` , [ db , table , column ] , ( err , res ) => {
63
+ if ( err ) reject ( err ) ;
64
+ return resolve (
65
+ `The column ${ chalk . bold . redBright (
66
+ column
67
+ ) } does not exists in both ${ chalk . bold . redBright ( table ) } tables. Dropping...`
68
+ ) ;
69
+ } ) ;
73
70
} ) ;
74
71
} ;
75
72
76
- const getData = ( targetTableName ) => {
73
+ const dropRow = ( db , table , column , value ) => {
77
74
return new Promise ( ( resolve , reject ) => {
78
- connection . query (
79
- `SELECT * FROM ${ db2 } .?` ,
80
- [ targetTableName ] ,
81
- ( err , columns ) => {
82
- if ( err ) reject ( err ) ;
83
- return resolve ( columns ) ;
84
- }
85
- ) ;
75
+ connection . query ( `DELETE FROM ??.?? WHERE ?? = ?` , [ db , table , column , value ] , ( err , res ) => {
76
+ if ( err ) reject ( err ) ;
77
+ return resolve (
78
+ `The row ${ chalk . bold . redBright ( value ) } does not exists in both ${ chalk . bold . redBright (
79
+ table
80
+ ) } tables. Dropping...`
81
+ ) ;
82
+ } ) ;
86
83
} ) ;
87
84
} ;
88
85
89
- const setData = ( columns , targetTableName ) => {
86
+ const toggleForeignKeyCheck = ( state ) => {
90
87
return new Promise ( ( resolve , reject ) => {
91
- columns . forEach ( ( entry ) => {
92
- connection . query (
93
- `INSERT INTO ${ db1 } .? VALUES (?) ` ,
94
- [ targetTableName , entry ] ,
95
- ( err , results ) => {
96
- if ( err ) reject ( err ) ;
97
- return resolve ( results ) ;
98
- }
99
- ) ;
88
+ connection . query ( `SET FOREIGN_KEY_CHECKS = ${ state } ` , ( err , results ) => {
89
+ if ( err ) reject ( err ) ;
90
+ return resolve ( 'Foreign Key Check is set to ' + state + '!' ) ;
100
91
} ) ;
101
92
} ) ;
102
93
} ;
103
94
104
- const toggleForeignKeyCheck = ( state ) => {
95
+ const getCoreStore = ( db ) => {
105
96
return new Promise ( ( resolve , reject ) => {
106
- connection . query ( `SET FOREIGN_KEY_CHECKS = ${ state } ` , ( err , results ) => {
97
+ connection . query ( 'SELECT * FROM ??.core_store' , [ db ] , ( err , coreStore ) => {
107
98
if ( err ) reject ( err ) ;
108
- return resolve ( "Foreign Key Check is set to " + state + "!" ) ;
99
+ return resolve ( coreStore ) ;
109
100
} ) ;
110
101
} ) ;
111
102
} ;
@@ -123,66 +114,63 @@ connection.connect((err) => {
123
114
tableNames_db2 . forEach ( async ( table_db2 , tableIndex ) => {
124
115
let tableExistanceFlag = false ;
125
116
let targetTableName = table_db2 . TABLE_NAME ;
126
-
127
117
tableNames_db1 . forEach ( ( table_db1 ) => {
128
118
if ( targetTableName === table_db1 . TABLE_NAME ) {
129
119
tableExistanceFlag = true ;
130
120
}
131
121
} ) ;
132
- if ( tableExistanceFlag ) {
122
+ if ( tableExistanceFlag && targetTableName !== 'core_store' ) {
123
+ console . log (
124
+ `The table ${ chalk . bold . greenBright ( targetTableName ) } exists in both databases.`
125
+ ) ;
133
126
const columns_db1 = await getColumns ( db1 , targetTableName ) ;
134
127
const columns_db2 = await getColumns ( db2 , targetTableName ) ;
135
- let columnsCountEquality = false ;
136
- if ( columns_db1 . length === columns_db2 . length ) {
137
- columnsCountEquality = true ;
138
- } else {
139
- columns_db2 . forEach ( async ( column_db2 ) => {
140
- let columnExistanceFlag = false ;
141
- let columnNameDB2 = column_db2 . COLUMN_NAME ;
128
+ columns_db2 . forEach ( async ( column_db2 ) => {
129
+ let columnExistanceFlag = false ;
130
+ let columnNameDB2 = column_db2 . COLUMN_NAME ;
142
131
143
- columns_db1 . forEach ( ( column_db1 ) => {
144
- if ( columnNameDB2 === column_db1 . COLUMN_NAME ) {
145
- columnExistanceFlag = true ;
146
- }
147
- } ) ;
148
- if ( ! columnExistanceFlag ) {
149
- await dropColumn ( targetTableName , columnNameDB2 ) ;
132
+ columns_db1 . forEach ( ( column_db1 ) => {
133
+ if ( columnNameDB2 === column_db1 . COLUMN_NAME ) {
134
+ columnExistanceFlag = true ;
150
135
}
151
136
} ) ;
152
- }
153
- console . log (
154
- `The table ${ chalk . bold . greenBright (
155
- targetTableName
156
- ) } exists in both databases ${
157
- columnsCountEquality
158
- ? "and columns count " +
159
- chalk . bold . greenBright ( "is equal" ) +
160
- "."
161
- : "but columns count " +
162
- chalk . bold . redBright ( "is not equal" ) +
163
- "."
164
- } `
165
- ) ;
137
+ if ( ! columnExistanceFlag ) {
138
+ const dropColumnMsg = await dropColumn ( db2 , targetTableName , columnNameDB2 ) ;
139
+ console . log ( dropColumnMsg ) ;
140
+ }
141
+ } ) ;
142
+ } else if ( targetTableName === 'core_store' ) {
143
+ const coreStore1 = await getCoreStore ( db1 ) ;
144
+ const coreStore2 = await getCoreStore ( db2 ) ;
145
+ coreStore2 . forEach ( async ( coreStore2Item ) => {
146
+ let coreStoreExistanceFlag = false ;
147
+ let coreStore2ItemKey = coreStore2Item . key ;
148
+ coreStore1 . forEach ( ( coreStore1Item ) => {
149
+ if ( coreStore2ItemKey === coreStore1Item . key ) {
150
+ coreStoreExistanceFlag = true ;
151
+ }
152
+ } ) ;
153
+ if ( ! coreStoreExistanceFlag ) {
154
+ const dropRowMsg = await dropRow ( db2 , targetTableName , 'key' , coreStore2ItemKey ) ;
155
+ console . log ( dropRowMsg ) ;
156
+ }
157
+ } ) ;
166
158
} else {
167
- console . log (
168
- `The table ${ chalk . bold . redBright (
169
- targetTableName
170
- ) } does not exists in both databases`
171
- ) ;
172
- await dropTable ( targetTableName ) ;
159
+ const dropTableMsg = await dropTable ( db2 , targetTableName ) ;
160
+ console . log ( dropTableMsg ) ;
173
161
}
174
162
if ( tableIndex === tableNames_db2 . length - 1 ) {
175
163
resolve ( ) ;
176
164
}
177
165
} ) ;
178
166
} ) ;
179
167
foreignKeyCheckState = 1 ;
180
- toggleForeignKeyCheck ( foreignKeyCheckState ) . then ( ( res ) =>
181
- console . log ( chalk . bold . yellowBright ( res ) )
182
- ) ;
183
-
184
- console . log ( "Database cleanup is done, closing connection..." ) ;
185
- connection . end ( ) ;
168
+ toggleForeignKeyCheck ( foreignKeyCheckState )
169
+ . then ( ( res ) => console . log ( chalk . bold . yellowBright ( res ) ) )
170
+ . then ( ( ) => {
171
+ console . log ( 'Database cleanup is done, closing connection...' ) ;
172
+ connection . end ( ) ;
173
+ } ) ;
186
174
} catch ( err ) {
187
175
console . log ( err ) ;
188
176
}
0 commit comments