Update contract's lastBetTime and lastCommentTime on new bets and comments.
This commit is contained in:
parent
57fb9baed6
commit
f357b6e92e
|
@ -21,6 +21,8 @@ export type FullContract<
|
||||||
|
|
||||||
createdTime: number // Milliseconds since epoch
|
createdTime: number // Milliseconds since epoch
|
||||||
lastUpdatedTime: number // If the question or description was changed
|
lastUpdatedTime: number // If the question or description was changed
|
||||||
|
lastBetTime?: number
|
||||||
|
lastCommentTime?: number
|
||||||
closeTime?: number // When no more trading is allowed
|
closeTime?: number // When no more trading is allowed
|
||||||
|
|
||||||
isResolved: boolean
|
isResolved: boolean
|
||||||
|
|
|
@ -12,6 +12,7 @@ export * from './create-contract'
|
||||||
export * from './create-user'
|
export * from './create-user'
|
||||||
export * from './create-fold'
|
export * from './create-fold'
|
||||||
export * from './create-answer'
|
export * from './create-answer'
|
||||||
|
export * from './on-create-bet'
|
||||||
export * from './on-create-comment'
|
export * from './on-create-comment'
|
||||||
export * from './on-fold-follow'
|
export * from './on-fold-follow'
|
||||||
export * from './on-fold-delete'
|
export * from './on-fold-delete'
|
||||||
|
|
27
functions/src/on-create-bet.ts
Normal file
27
functions/src/on-create-bet.ts
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
import * as functions from 'firebase-functions'
|
||||||
|
import * as admin from 'firebase-admin'
|
||||||
|
import * as _ from 'lodash'
|
||||||
|
|
||||||
|
import { getContract } from './utils'
|
||||||
|
import { Bet } from '../../common/bet'
|
||||||
|
|
||||||
|
const firestore = admin.firestore()
|
||||||
|
|
||||||
|
export const onCreateBet = functions.firestore
|
||||||
|
.document('contracts/{contractId}/bets/{betId}')
|
||||||
|
.onCreate(async (change, context) => {
|
||||||
|
const { contractId } = context.params as {
|
||||||
|
contractId: string
|
||||||
|
}
|
||||||
|
|
||||||
|
const contract = await getContract(contractId)
|
||||||
|
if (!contract)
|
||||||
|
throw new Error('Could not find contract corresponding with bet')
|
||||||
|
|
||||||
|
const bet = change.data() as Bet
|
||||||
|
|
||||||
|
await firestore
|
||||||
|
.collection('contracts')
|
||||||
|
.doc(contract.id)
|
||||||
|
.update({ lastBetTime: bet.createdTime })
|
||||||
|
})
|
|
@ -18,12 +18,18 @@ export const onCreateComment = functions.firestore
|
||||||
}
|
}
|
||||||
|
|
||||||
const contract = await getContract(contractId)
|
const contract = await getContract(contractId)
|
||||||
if (!contract) return
|
if (!contract)
|
||||||
|
throw new Error('Could not find contract corresponding with comment')
|
||||||
|
|
||||||
const comment = change.data() as Comment
|
const comment = change.data() as Comment
|
||||||
|
|
||||||
const commentCreator = await getUser(comment.userId)
|
const commentCreator = await getUser(comment.userId)
|
||||||
if (!commentCreator) return
|
if (!commentCreator) throw new Error('Could not find contract creator')
|
||||||
|
|
||||||
|
await firestore
|
||||||
|
.collection('contracts')
|
||||||
|
.doc(contract.id)
|
||||||
|
.update({ lastCommentTime: comment.createdTime })
|
||||||
|
|
||||||
let bet: Bet | undefined
|
let bet: Bet | undefined
|
||||||
let answer: Answer | undefined
|
let answer: Answer | undefined
|
||||||
|
|
Loading…
Reference in New Issue
Block a user