market data cloud function
This commit is contained in:
parent
0fef0eeccb
commit
f10f7bbaea
|
@ -3,6 +3,7 @@ import * as admin from 'firebase-admin'
|
|||
admin.initializeApp()
|
||||
|
||||
// export * from './keep-awake'
|
||||
export * from './markets'
|
||||
export * from './place-bet'
|
||||
export * from './resolve-market'
|
||||
export * from './stripe'
|
||||
|
|
59
functions/src/markets.ts
Normal file
59
functions/src/markets.ts
Normal file
|
@ -0,0 +1,59 @@
|
|||
import * as functions from 'firebase-functions'
|
||||
import * as admin from 'firebase-admin'
|
||||
import * as _ from 'lodash'
|
||||
|
||||
import { getValues } from './utils'
|
||||
import { Contract } from '../../common/contract'
|
||||
import { getProbability } from '../../common/calculate'
|
||||
|
||||
const cache = { lastUpdated: 0, data: '' }
|
||||
|
||||
export const markets = functions
|
||||
.runWith({ minInstances: 1 })
|
||||
.https.onRequest(async (req, res) => {
|
||||
const contracts: Contract[] = await getValues(
|
||||
firestore.collection('contracts').orderBy('volume24Hours', 'desc')
|
||||
)
|
||||
|
||||
if (!cache.data || Date.now() - cache.lastUpdated > 120 * 1000) {
|
||||
const contractsInfo = contracts.map(getContractInfo)
|
||||
cache.data = JSON.stringify(contractsInfo)
|
||||
cache.lastUpdated = Date.now()
|
||||
}
|
||||
|
||||
res.status(200).send(cache.data)
|
||||
})
|
||||
|
||||
const getContractInfo = ({
|
||||
creatorUsername,
|
||||
creatorName,
|
||||
createdTime,
|
||||
closeTime,
|
||||
question,
|
||||
description,
|
||||
slug,
|
||||
pool,
|
||||
startPool,
|
||||
volume7Days,
|
||||
volume24Hours,
|
||||
isResolved,
|
||||
resolution,
|
||||
}: Contract) => {
|
||||
return {
|
||||
creatorUsername,
|
||||
creatorName,
|
||||
createdTime,
|
||||
closeTime,
|
||||
question,
|
||||
description,
|
||||
url: `https://manifold.markets/${creatorUsername}/${slug}`,
|
||||
pool: pool.YES + pool.NO - startPool.YES - startPool.NO,
|
||||
probability: getProbability(pool),
|
||||
volume7Days,
|
||||
volume24Hours,
|
||||
isResolved,
|
||||
resolution,
|
||||
}
|
||||
}
|
||||
|
||||
const firestore = admin.firestore()
|
Loading…
Reference in New Issue
Block a user