Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 6x 2x 2x 2x 2x 4x | import { adminProcedure } from "~web/handlers/trpc";
export const procedure = adminProcedure
.meta({
title: "Get all users",
description:
"Returns all users other than the caller's, with the caller's matching peer for each (admin only).",
})
.query(async ({ ctx }) => {
const { database } = ctx;
const result = await database
.selectFrom("users")
.leftJoin("peers", (qb) =>
qb
.onRef("users.id", "=", "peers.connectedUserId")
.on("peers.ownerUserId", "=", ctx.auth.userId),
)
.where("users.id", "!=", ctx.auth.userId)
.orderBy("peers.name")
.orderBy("users.email")
.select([
"peers.id as peerId",
"peers.name",
"users.id as userId",
"users.avatarUrl",
"users.email",
])
.execute();
return {
items: result.map((element) => ({
user: {
email: element.email,
id: element.userId,
avatarUrl: element.avatarUrl ?? undefined,
},
peer:
element.peerId && element.name
? {
id: element.peerId,
name: element.name,
}
: undefined,
})),
};
});
|