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