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' ;
44
55config ( ) ;
66
@@ -18,12 +18,12 @@ const connection = mysql.createConnection({
1818connection . connect ( ( err ) => {
1919 if ( err ) throw err ;
2020
21- console . log ( " Connected to database!" ) ;
21+ console . log ( ' Connected to database!' ) ;
2222
2323 const getTables = ( db ) => {
2424 return new Promise ( ( resolve , reject ) => {
2525 connection . query (
26- " SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ?" ,
26+ ' SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ?' ,
2727 [ db ] ,
2828 ( err , tables ) => {
2929 if ( err ) reject ( err ) ;
@@ -33,23 +33,21 @@ connection.connect((err) => {
3333 } ) ;
3434 } ;
3535
36- const dropTable = ( table ) => {
36+ const dropTable = ( db , table ) => {
3737 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+ } ) ;
4644 } ) ;
4745 } ;
4846
4947 const getColumns = ( db , table ) => {
5048 return new Promise ( ( resolve , reject ) => {
5149 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 = ?' ,
5351 [ db , table ] ,
5452 ( err , columns ) => {
5553 if ( err ) reject ( err ) ;
@@ -59,53 +57,46 @@ connection.connect((err) => {
5957 } ) ;
6058 } ;
6159
62- const dropColumn = ( table , column ) => {
63- console . log ( "droping column: " + column + " from table" + table ) ;
60+ const dropColumn = ( db , table , column ) => {
6461 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+ } ) ;
7370 } ) ;
7471 } ;
7572
76- const getData = ( targetTableName ) => {
73+ const dropRow = ( db , table , column , value ) => {
7774 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+ } ) ;
8683 } ) ;
8784 } ;
8885
89- const setData = ( columns , targetTableName ) => {
86+ const toggleForeignKeyCheck = ( state ) => {
9087 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 + '!' ) ;
10091 } ) ;
10192 } ) ;
10293 } ;
10394
104- const toggleForeignKeyCheck = ( state ) => {
95+ const getCoreStore = ( db ) => {
10596 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 ) => {
10798 if ( err ) reject ( err ) ;
108- return resolve ( "Foreign Key Check is set to " + state + "!" ) ;
99+ return resolve ( coreStore ) ;
109100 } ) ;
110101 } ) ;
111102 } ;
@@ -123,66 +114,63 @@ connection.connect((err) => {
123114 tableNames_db2 . forEach ( async ( table_db2 , tableIndex ) => {
124115 let tableExistanceFlag = false ;
125116 let targetTableName = table_db2 . TABLE_NAME ;
126-
127117 tableNames_db1 . forEach ( ( table_db1 ) => {
128118 if ( targetTableName === table_db1 . TABLE_NAME ) {
129119 tableExistanceFlag = true ;
130120 }
131121 } ) ;
132- if ( tableExistanceFlag ) {
122+ if ( tableExistanceFlag && targetTableName !== 'core_store' ) {
123+ console . log (
124+ `The table ${ chalk . bold . greenBright ( targetTableName ) } exists in both databases.`
125+ ) ;
133126 const columns_db1 = await getColumns ( db1 , targetTableName ) ;
134127 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 ;
142131
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 ;
150135 }
151136 } ) ;
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+ } ) ;
166158 } 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 ) ;
173161 }
174162 if ( tableIndex === tableNames_db2 . length - 1 ) {
175163 resolve ( ) ;
176164 }
177165 } ) ;
178166 } ) ;
179167 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+ } ) ;
186174 } catch ( err ) {
187175 console . log ( err ) ;
188176 }
0 commit comments