Minor tidy up and refactor to improve consistency.
This commit is contained in:
@@ -51,20 +51,20 @@ export class CircleOrm {
|
||||
${model.name},
|
||||
${model.isPublic},
|
||||
${model.colour})`;
|
||||
const newCircleId: string = (first(await sql`SELECT lastval();`) as any)?.lastval as string;
|
||||
const newRecordId: string = (first(await sql`SELECT lastval();`) as any)?.lastval as string;
|
||||
|
||||
return await this.get(CircleId.fromID(newCircleId));
|
||||
return await this.get(CircleId.fromID(newRecordId));
|
||||
}
|
||||
|
||||
async get(id: CircleId, claims?: Claims): Promise<Circle> {
|
||||
const circleResult: any = first(
|
||||
const record: any = first(
|
||||
await sql`SELECT *
|
||||
FROM circles
|
||||
WHERE id = ${id.raw}
|
||||
LIMIT 1`,
|
||||
);
|
||||
|
||||
if (!circleResult) {
|
||||
if (!record) {
|
||||
throw new NotFoundError('No matching game exists');
|
||||
}
|
||||
|
||||
@@ -72,8 +72,8 @@ export class CircleOrm {
|
||||
if (
|
||||
claims &&
|
||||
!claims.test(Claims.ADMIN) &&
|
||||
!(claims.test(Claims.CIRCLES.PUBLIC.READ) && circleResult.is_public) &&
|
||||
!(claims.test(Claims.CIRCLES.OWNED.READ) && circleResult.owning_user_id === claims.userId.raw) &&
|
||||
!(claims.test(Claims.CIRCLES.PUBLIC.READ) && record.is_public) &&
|
||||
!(claims.test(Claims.CIRCLES.OWNED.READ) && record.owning_user_id === claims.userId.raw) &&
|
||||
!(
|
||||
claims.test(Claims.CIRCLES.PRIVATE.READ_IF_MEMBER) &&
|
||||
(user = await orm.users.get(claims.userId)) &&
|
||||
@@ -86,25 +86,25 @@ export class CircleOrm {
|
||||
}
|
||||
|
||||
return new Circle({
|
||||
id: CircleId.fromID(circleResult.id),
|
||||
owningUserId: UserId.fromID(circleResult.owning_user_id),
|
||||
name: circleResult.name,
|
||||
isPublic: circleResult.is_public,
|
||||
imagePath: circleResult.image_path,
|
||||
colour: circleResult.colour,
|
||||
id: CircleId.fromID(record.id),
|
||||
owningUserId: UserId.fromID(record.owning_user_id),
|
||||
name: record.name,
|
||||
isPublic: record.is_public,
|
||||
imagePath: record.image_path,
|
||||
colour: record.colour,
|
||||
});
|
||||
}
|
||||
|
||||
async update(id: CircleId, patch: UpdateCircleRequest): Promise<Circle> {
|
||||
const recordToUpdate = await this.get(id);
|
||||
recordToUpdate.name = patch.name ?? recordToUpdate.name;
|
||||
recordToUpdate.colour = patch.colour ?? recordToUpdate.colour;
|
||||
recordToUpdate.imagePath = patch.imagePath ?? recordToUpdate.imagePath;
|
||||
const circle = await this.get(id);
|
||||
circle.name = patch.name ?? circle.name;
|
||||
circle.colour = patch.colour ?? circle.colour;
|
||||
circle.imagePath = patch.imagePath ?? circle.imagePath;
|
||||
|
||||
await sql`UPDATE circles
|
||||
SET name=${recordToUpdate.name},
|
||||
colour=${recordToUpdate.colour},
|
||||
image_path=${recordToUpdate.imagePath}
|
||||
SET name=${circle.name},
|
||||
colour=${circle.colour},
|
||||
image_path=${circle.imagePath}
|
||||
WHERE id = ${id.raw}`;
|
||||
|
||||
return await this.get(id);
|
||||
@@ -131,8 +131,12 @@ export class CircleOrm {
|
||||
return;
|
||||
}
|
||||
|
||||
async invite(circleId: CircleId, relatedRecord: PlayerId | UserId | string | undefined, claims: Claims): Promise<void> {
|
||||
if(relatedRecord === undefined) {
|
||||
async invite(
|
||||
circleId: CircleId,
|
||||
relatedRecord: PlayerId | UserId | string | undefined,
|
||||
claims: Claims,
|
||||
): Promise<void> {
|
||||
if (relatedRecord === undefined) {
|
||||
throw new BadRequestError();
|
||||
}
|
||||
|
||||
@@ -164,18 +168,18 @@ export class CircleOrm {
|
||||
|
||||
query: (query: string) => Promise<Circle[]> = memo<(query: string) => Promise<Circle[]>, Circle[]>(this.#query);
|
||||
async #query(query: string): Promise<Circle[]> {
|
||||
const dbResult: any = await sql` SELECT
|
||||
const queryResult: any = await sql` SELECT
|
||||
id, name, owning_user_id, is_public
|
||||
FROM (SELECT *, SIMILARITY(${query}, name) as similarity FROM circles WHERE is_public=true)
|
||||
WHERE similarity > 0
|
||||
ORDER BY similarity
|
||||
LIMIT 5;`;
|
||||
|
||||
if (!dbResult) {
|
||||
if (!queryResult) {
|
||||
throw new NotFoundError('No matching circles exists');
|
||||
}
|
||||
|
||||
return dbResult.map(
|
||||
return queryResult.map(
|
||||
(x: { id: string; name: string; owning_user_id: string; is_public: boolean }) =>
|
||||
new Circle({
|
||||
id: CircleId.fromID(x.id),
|
||||
|
||||
Reference in New Issue
Block a user