Match lowercase tags for folds
This commit is contained in:
parent
96c1410f01
commit
7c50b55331
|
@ -7,6 +7,7 @@ export type Fold = {
|
||||||
createdTime: number
|
createdTime: number
|
||||||
|
|
||||||
tags: string[]
|
tags: string[]
|
||||||
|
lowercaseTags: string[]
|
||||||
|
|
||||||
contractIds: string[]
|
contractIds: string[]
|
||||||
excludedContractIds: string[]
|
excludedContractIds: string[]
|
||||||
|
|
|
@ -59,6 +59,7 @@ export const createFold = functions.runWith({ minInstances: 1 }).https.onCall(
|
||||||
name,
|
name,
|
||||||
about,
|
about,
|
||||||
tags,
|
tags,
|
||||||
|
lowercaseTags: tags.map((tag) => tag.toLowerCase()),
|
||||||
createdTime: Date.now(),
|
createdTime: Date.now(),
|
||||||
contractIds: [],
|
contractIds: [],
|
||||||
excludedContractIds: [],
|
excludedContractIds: [],
|
||||||
|
|
34
functions/src/scripts/lowercase-fold-tags.ts
Normal file
34
functions/src/scripts/lowercase-fold-tags.ts
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
import * as admin from 'firebase-admin'
|
||||||
|
import * as _ from 'lodash'
|
||||||
|
|
||||||
|
import { initAdmin } from './script-init'
|
||||||
|
initAdmin('james')
|
||||||
|
|
||||||
|
import { getValues } from '../utils'
|
||||||
|
import { Fold } from '../../../common/fold'
|
||||||
|
|
||||||
|
async function lowercaseFoldTags() {
|
||||||
|
const firestore = admin.firestore()
|
||||||
|
console.log('Updating fold tags')
|
||||||
|
|
||||||
|
const folds = await getValues<Fold>(firestore.collection('folds'))
|
||||||
|
|
||||||
|
console.log('Loaded', folds.length, 'folds')
|
||||||
|
|
||||||
|
for (const fold of folds) {
|
||||||
|
const foldRef = firestore.doc(`folds/${fold.id}`)
|
||||||
|
|
||||||
|
const { tags } = fold
|
||||||
|
const lowercaseTags = _.uniq(tags.map((tag) => tag.toLowerCase()))
|
||||||
|
|
||||||
|
console.log('Adding lowercase tags', fold.slug, lowercaseTags)
|
||||||
|
|
||||||
|
await foldRef.update({
|
||||||
|
lowercaseTags,
|
||||||
|
} as Partial<Fold>)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (require.main === module) {
|
||||||
|
lowercaseFoldTags().then(() => process.exit())
|
||||||
|
}
|
|
@ -135,9 +135,12 @@ export function listenForFollow(
|
||||||
export function getFoldsByTags(tags: string[]) {
|
export function getFoldsByTags(tags: string[]) {
|
||||||
if (tags.length === 0) return []
|
if (tags.length === 0) return []
|
||||||
|
|
||||||
const lowercaseTags = tags.map((tag) => tag)
|
const lowercaseTags = tags.map((tag) => tag.toLowerCase())
|
||||||
return getValues<Fold>(
|
return getValues<Fold>(
|
||||||
// TODO: split into multiple queries if tags.length > 10.
|
// TODO: split into multiple queries if tags.length > 10.
|
||||||
query(foldCollection, where('tags', 'array-contains-any', lowercaseTags))
|
query(
|
||||||
|
foldCollection,
|
||||||
|
where('lowercaseTags', 'array-contains-any', lowercaseTags)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user