Script to cache viewCounts and lastViewTime
This commit is contained in:
parent
50e77d5899
commit
16ae447823
54
functions/src/scripts/cache-views.ts
Normal file
54
functions/src/scripts/cache-views.ts
Normal file
|
@ -0,0 +1,54 @@
|
|||
import * as admin from 'firebase-admin'
|
||||
import * as _ from 'lodash'
|
||||
|
||||
import { initAdmin } from './script-init'
|
||||
initAdmin()
|
||||
|
||||
import { getUserByUsername, getValues } from '../utils'
|
||||
import { View } from '../../../common/tracking'
|
||||
|
||||
const firestore = admin.firestore()
|
||||
|
||||
async function cacheViews() {
|
||||
console.log('Caching views')
|
||||
|
||||
const user = await getUserByUsername('JamesGrugett')
|
||||
|
||||
if (user) {
|
||||
console.log('Caching views for', user.username)
|
||||
await cacheUserViews(user.id)
|
||||
}
|
||||
}
|
||||
|
||||
async function cacheUserViews(userId: string) {
|
||||
const views = await getValues<View>(
|
||||
firestore.collection('private-users').doc(userId).collection('views')
|
||||
)
|
||||
|
||||
const viewCounts: { [contractId: string]: number } = {}
|
||||
for (const view of views) {
|
||||
viewCounts[view.contractId] = (viewCounts[view.contractId] ?? 0) + 1
|
||||
}
|
||||
|
||||
const lastViewTime: { [contractId: string]: number } = {}
|
||||
for (const view of views) {
|
||||
lastViewTime[view.contractId] = Math.max(
|
||||
lastViewTime[view.contractId] ?? 0,
|
||||
view.timestamp
|
||||
)
|
||||
}
|
||||
|
||||
await firestore
|
||||
.doc(`private-users/${userId}/cached/viewCounts`)
|
||||
.set(viewCounts, { merge: true })
|
||||
|
||||
await firestore
|
||||
.doc(`private-users/${userId}/cached/lastViewTime`)
|
||||
.set(lastViewTime, { merge: true })
|
||||
|
||||
console.log(viewCounts, lastViewTime)
|
||||
}
|
||||
|
||||
if (require.main === module) {
|
||||
cacheViews().then(() => process.exit())
|
||||
}
|
Loading…
Reference in New Issue
Block a user