import { orm } from '../orm/orm'; import { UnwrappedRequest } from '../utilities/guard'; import { CreatedResponse, ErrorResponse, OkResponse, PagedResponse } from '../utilities/responseHelper'; import { GameToCollectionRequest, CreateCollectionRequest, UpdateCollectionRequest } from '../utilities/requestModels'; import { CollectionId, GameId } from '../utilities/secureIds'; async function create(request: UnwrappedRequest): Promise { try { return new CreatedResponse(await orm.collections.create(request.body, request.claims)); } catch (error: any) { return new ErrorResponse(error as Error); } } async function get(request: UnwrappedRequest): Promise { try { return new OkResponse(await orm.collections.get(CollectionId.fromHash(request.params.id), request.claims)); } catch (error: any) { return new ErrorResponse(error as Error); } } async function list(request: UnwrappedRequest): Promise { try { return new PagedResponse(request, await orm.collections.list(request.claims)); } catch (error: any) { return new ErrorResponse(error as Error); } } async function update(request: UnwrappedRequest): Promise { try { return new OkResponse( await orm.collections.update(CollectionId.fromHash(request.params.id), request.body, request.claims), ); } catch (error: any) { return new ErrorResponse(error as Error); } } async function drop(request: UnwrappedRequest): Promise { try { return new OkResponse(await orm.collections.drop(CollectionId.fromHash(request.params.id), request.claims)); } catch (error: any) { return new ErrorResponse(error as Error); } } async function addGame(request: UnwrappedRequest): Promise { try { return new OkResponse( await orm.collections.addGame( CollectionId.fromHash(request.params.id), GameId.fromHash(request.body.gameId), request.claims, ), ); } catch (error: any) { return new ErrorResponse(error as Error); } } async function removeGame(request: UnwrappedRequest): Promise { try { return new OkResponse( await orm.collections.removeGame( CollectionId.fromHash(request.params.id), GameId.fromHash(request.body.gameId), request.claims, ), ); } catch (error: any) { return new ErrorResponse(error as Error); } } export default { create, get, list, update, drop, addGame, removeGame, };