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