@@ -110,6 +110,62 @@ export default function plugins(
110110 codecov ( on , config ) ;
111111 on ( 'task' , {
112112 percyHealthCheck,
113+ async createIndices ( ) : Promise < null > {
114+ await Promise . all ( [
115+ usersIdx . setSettings ( {
116+ searchableAttributes : [
117+ 'name' ,
118+ 'unordered(email)' ,
119+ 'unordered(phone)' ,
120+ 'unordered(bio)' ,
121+ 'unordered(reference)' ,
122+ 'unordered(verifications.notes)' ,
123+ 'unordered(tutoring.subjects)' ,
124+ 'unordered(mentoring.subjects)' ,
125+ 'unordered(socials.url)' ,
126+ ] ,
127+ attributesForFaceting : [
128+ 'filterOnly(availability)' ,
129+ 'filterOnly(email)' ,
130+ 'filterOnly(featured)' ,
131+ 'filterOnly(langs)' ,
132+ 'filterOnly(mentoring.searches)' ,
133+ 'filterOnly(mentoring.subjects)' ,
134+ 'filterOnly(tutoring.searches)' ,
135+ 'filterOnly(tutoring.subjects)' ,
136+ 'filterOnly(orgs)' ,
137+ 'filterOnly(parents)' ,
138+ 'filterOnly(phone)' ,
139+ 'filterOnly(verifications.checks)' ,
140+ ] ,
141+ } ) ,
142+ matchesIdx . setSettings ( {
143+ attributesForFaceting : [
144+ 'filterOnly(org)' ,
145+ 'filterOnly(people.id)' ,
146+ 'filterOnly(subjects)' ,
147+ ] ,
148+ } ) ,
149+ meetingsIdx . setSettings ( {
150+ attributesForFaceting : [
151+ 'filterOnly(match.org)' ,
152+ 'filterOnly(match.people.id)' ,
153+ 'filterOnly(match.subjects)' ,
154+ 'filterOnly(time.from)' ,
155+ 'filterOnly(time.last)' ,
156+ ] ,
157+ } ) ,
158+ ] ) ;
159+ return null ;
160+ } ,
161+ async deleteIndices ( ) : Promise < null > {
162+ await Promise . all ( [
163+ usersIdx . delete ( ) ,
164+ matchesIdx . delete ( ) ,
165+ meetingsIdx . delete ( ) ,
166+ ] ) ;
167+ return null ;
168+ } ,
113169 async clear ( ) : Promise < null > {
114170 const clearFirestoreEndpoint =
115171 `http://${ process . env . FIRESTORE_EMULATOR_HOST as string } /emulator/v1/` +
0 commit comments