50 lines
1.6 KiB
TypeScript
50 lines
1.6 KiB
TypeScript
import { orm } from '../orm/orm';
|
|
import { UnwrappedRequest } from '../utilities/guard';
|
|
import { CreatedResponse, ErrorResponse, OkResponse } from '../utilities/responseHelper';
|
|
import { CreateUserRequest, UpdateUserRequest } from '../utilities/requestModels';
|
|
import { PlayerId, UserId } from '../utilities/secureIds';
|
|
|
|
async function create(request: UnwrappedRequest<CreateUserRequest>): Promise<Response> {
|
|
try {
|
|
return new CreatedResponse(
|
|
await orm.users.create({
|
|
...request.body,
|
|
playerId: PlayerId.fromHash(request.body.playerId),
|
|
}),
|
|
);
|
|
} catch (error: any) {
|
|
return new ErrorResponse(error as Error);
|
|
}
|
|
}
|
|
|
|
async function get(request: UnwrappedRequest): Promise<Response> {
|
|
try {
|
|
return new OkResponse(await orm.users.get(UserId.fromHash(request.params.id), request.claims));
|
|
} catch (error: any) {
|
|
return new ErrorResponse(error as Error);
|
|
}
|
|
}
|
|
|
|
async function update(request: UnwrappedRequest<UpdateUserRequest>): Promise<Response> {
|
|
try {
|
|
return new OkResponse(await orm.users.update(UserId.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.users.drop(UserId.fromHash(request.params.id), request.claims));
|
|
} catch (error: any) {
|
|
return new ErrorResponse(error as Error);
|
|
}
|
|
}
|
|
|
|
export default {
|
|
create,
|
|
get,
|
|
update,
|
|
drop,
|
|
};
|