1+ /* eslint-disable no-param-reassign */
12/* eslint-disable consistent-return */
23/* eslint-disable import/no-dynamic-require */
34/* eslint-disable global-require */
@@ -7,6 +8,8 @@ const fs = require('fs');
78
89const configPath = '../src/state/api/index.js' ;
910
11+ const importPath = '../src/firebase.js' ;
12+
1013const questions = [
1114 {
1215 type : 'input' ,
@@ -35,6 +38,13 @@ const questions = [
3538 message : 'Select the database of your choice:' ,
3639 choices : [ 'Realtime Database' , 'Firestore' ] ,
3740 } ,
41+
42+ {
43+ type : 'confirm' ,
44+ name : 'deletedb' ,
45+ message : 'Do you want to delete unused cloud functions?' ,
46+ default : true ,
47+ } ,
3848] ;
3949
4050const replaceDatabase = ( oldDatabase , newDatabase ) => {
@@ -48,31 +58,57 @@ const replaceDatabase = (oldDatabase, newDatabase) => {
4858 if ( err ) return console . log ( err ) ;
4959 } ) ;
5060 } ) ;
61+
62+ fs . readFile ( importPath , 'utf8' , ( error , data ) => {
63+ if ( error ) {
64+ return console . log ( error ) ;
65+ }
66+
67+ let oldInit ;
68+ let newInit ;
69+ let oldImport ;
70+ let newImport ;
71+ if ( oldDatabase === 'rtdb' ) {
72+ oldInit = 'firebase.database()' ;
73+ newInit = 'firebase.firestore()' ;
74+ oldImport = 'firebase/database' ;
75+ newImport = 'firebase/firestore' ;
76+ } else {
77+ oldInit = 'firebase.firestore()' ;
78+ newInit = 'firebase.database()' ;
79+ oldImport = 'firebase/firestore' ;
80+ newImport = 'firebase/database' ;
81+ }
82+
83+ data = data . replace ( oldInit , newInit ) ;
84+
85+ data = data . replace ( oldImport , newImport ) ;
86+
87+ fs . writeFile ( importPath , data , 'utf8' , ( err ) => {
88+ if ( err ) return console . log ( err ) ;
89+ } ) ;
90+ } ) ;
5191} ;
5292
5393const deleteDatabase = async ( database ) => {
5494 const dir = database !== 'Firestore' ? 'firestore' : 'db' ;
5595
5696 try {
5797 fs . rmdirSync ( `./src/${ dir } ` , { recursive : true } ) ;
58-
59- console . log ( `${ database } cloud functions are deleted!` ) ;
6098 } catch ( error ) {
6199 console . error ( `Error while deleting ${ database } . ${ error } ` ) ;
62100 }
63101
64102 try {
65103 fs . rmdirSync ( `./test/${ dir } ` , { recursive : true } ) ;
66-
67- console . log ( `${ dir } tests are deleted!` ) ;
68104 } catch ( error ) {
69105 console . error ( `Error while deleting ${ database } tests. ${ error } ` ) ;
70106 }
71107} ;
72108
73109inquirer
74110 . prompt ( questions )
75- . then ( async ( { database, path, email, password, databaseURL } ) => {
111+ . then ( async ( { database, path, email, password, databaseURL, deletedb } ) => {
76112 const serviceAccount = require ( path ) ;
77113
78114 admin . initializeApp ( {
@@ -112,7 +148,9 @@ inquirer
112148 await admin . database ( ) . ref ( `users/${ uid } ` ) . set ( user ) ;
113149 }
114150
115- deleteDatabase ( database ) ;
151+ if ( deletedb ) {
152+ deleteDatabase ( database ) ;
153+ }
116154
117155 console . log ( `Created admin account in ${ database } ` ) ;
118156 process . exit ( 0 ) ;
0 commit comments