import { isEmpty, merge, pick } from 'ramda' import { makeError, replies, logs } from '@oyst/utils' import * as Joi from 'joi' import UserApi from '../../../apis/user' import authorizeHandler from '../../../handlers/authorize' import sessionHandler from '../../../handlers/session' import { authorize as headers } from '../../../validators/headers' import log from '../../../lib/log' import { toSnake } from 'convert-keys' const { error, success } = replies export default { config: { pre: [sessionHandler, authorizeHandler], validate: { headers, params: { cardId: Joi.string().guid().required() } } }, handler: async (req, reply) => { const userId = req.pre.session.user_id as string const { cardId } = req.params try { await UserApi.setPrimaryCard(toSnake({ cardId, userId })) const user = await UserApi.findById(userId) success({ user }, reply) } catch (err) { logs.error(err) error(makeError(err), reply) } }, method: 'POST', path: '/v1/users/cards/{cardId}/set_primary' }