action-policies.js
887 Bytes
export const BillingAction = Object.freeze({
DAILY_CLAIM: 'daily_claim',
TURN_PLAY: 'turn_play',
FULL_RUN_VIDEO: 'full_run_video',
SIGNUP_REWARD: 'signup_reward',
})
export function createActionPolicies(repo) {
async function find(action) {
assertActionName(action)
return repo.findActionPolicy(action)
}
async function get(action) {
const policy = await find(action)
if (policy === null) throw new Error(`Missing billing_action_policy, action=${action}`)
return policy
}
async function list() {
return repo.listActionPolicies()
}
async function update(policy) {
assertActionName(policy.action)
return repo.updateActionPolicy(policy)
}
return { find, get, list, update }
}
function assertActionName(action) {
if (typeof action !== 'string' || action === '') throw new Error(`Invalid billing action: ${String(action)}`)
}