86 lines
2.7 KiB
TypeScript
86 lines
2.7 KiB
TypeScript
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<CreateCollectionRequest>): Promise<Response> {
|
|
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<Response> {
|
|
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<Response> {
|
|
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<UpdateCollectionRequest>): Promise<Response> {
|
|
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<Response> {
|
|
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<GameToCollectionRequest>): Promise<Response> {
|
|
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<GameToCollectionRequest>): Promise<Response> {
|
|
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,
|
|
};
|