@@ -3,16 +3,16 @@ const path = require('path')
33const CroppingCalendar = require ( './cropping_calendar' )
44const { uploadToFirestore } = require ( '../lib/uploadtofirestore' )
55
6- // Path: /n_cropping_calendar_merged /{province}.data[]
6+ // Path: /n_cropping_calendar_lite /{province}.data[]
77const main = async ( ) => {
88 const handler = new CroppingCalendar ( path . resolve ( __dirname , process . env . CSV_FILENAME ) )
99 const upload = false
1010 const write = true
1111
1212 // Cropping Calendar-specific tables and firestore collection names
1313 const newTables = {
14- provinces : 'n_provinces' ,
15- municipalities : 'n_municipalities' ,
14+ // provinces: 'n_provinces',
15+ // municipalities: 'n_municipalities',
1616 crops : 'n_crops' ,
1717 crop_stages : 'n_crop_stages'
1818 }
@@ -30,7 +30,8 @@ const main = async () => {
3030 group [ province ] = [ ]
3131 }
3232
33- const obj = { }
33+ const obj = { province }
34+
3435 for ( const key in row ) {
3536 if ( ! [ 'id' , 'province' ] . includes ( key ) ) {
3637 obj [ key ] = row [ key ] . trim ( )
@@ -41,7 +42,7 @@ const main = async () => {
4142 return { ...group }
4243 } , { } )
4344
44- console . log ( '\nUploading data to firestore...' )
45+ console . log ( '\nUploading list data to firestore...' )
4546 const query = [ ]
4647
4748 // Upload full collections
@@ -63,11 +64,29 @@ const main = async () => {
6364 logs += `${ province } : ${ data [ province ] . length } items\n`
6465
6566 // Upload query
66- query . push ( uploadToFirestore ( 'n_cropping_calendar_merged ' , province , { data : data [ province ] } ) )
67+ query . push ( uploadToFirestore ( 'n_cropping_calendar_lite ' , province , { data : data [ province ] } ) )
6768 }
6869
6970 console . log ( logs )
70- console . log ( 'Uploading data to Firestore...' )
71+ console . log ( 'Uploading calendar data to Firestore...' )
72+
73+ // Upload list data as documents
74+ console . log ( 'Uploading lists in a single Firestore document...' )
75+
76+ // Upload the list of provinces and respective municipalities for use as constant, static values
77+ query . push ( uploadToFirestore ( 'constant_data' , 'provinces' , {
78+ data : handler . provinces . reduce ( ( list , province , index ) => {
79+ const temp = { id : province . id , label : province . name }
80+
81+ temp . municipalities = handler . municipalities . filter ( ( municipality ) => municipality . province === province . name )
82+ . sort ( ( a , b ) => a . name > b . name ? 1 : ( a . name < b . name ) ? - 1 : 0 )
83+ . map ( ( municipality , id ) => ( { id, label : municipality . name } ) )
84+
85+ list . push ( temp )
86+ return list
87+ } , [ ] )
88+ } ) )
89+
7190 await Promise . all ( query )
7291 console . log ( 'Upload success!' )
7392 }
0 commit comments