|
|
@@ -1,22 +1,14 @@
|
|
|
export function userHandlers(_io, socket) {
|
|
|
socket.on("user:read", readUser)
|
|
|
socket.on("user:list", listUsers)
|
|
|
- socket.on("user:paginate", paginateUsers)
|
|
|
- socket.on("user:count", countUsers)
|
|
|
socket.on("user:delete", deleteUser)
|
|
|
socket.on("user:create", createUser)
|
|
|
socket.on("user:update", updateUser)
|
|
|
|
|
|
- const userHandlerOptions = {
|
|
|
- user: socket.data?.user,
|
|
|
- resource: "user",
|
|
|
- idValidator: userSchema.shape.id.parse
|
|
|
- }
|
|
|
-
|
|
|
async function readUser(id, callback) {
|
|
|
await userHandler({
|
|
|
- id,
|
|
|
callback,
|
|
|
+ id,
|
|
|
|
|
|
query: ({ id }) =>
|
|
|
prisma.user.findUnique({
|
|
|
@@ -38,24 +30,6 @@ export function userHandlers(_io, socket) {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
- async function paginateUsers(skip, take, callback) {
|
|
|
- await userHandler({
|
|
|
- callback,
|
|
|
-
|
|
|
- query: () =>
|
|
|
- prisma.user.findMany({
|
|
|
- omit: { banned: true, banReason: true, banExpires: true },
|
|
|
- orderBy: [{ createdAt: "asc" }],
|
|
|
- skip,
|
|
|
- take
|
|
|
- })
|
|
|
- })
|
|
|
- }
|
|
|
-
|
|
|
- async function countUsers(callback) {
|
|
|
- await userHandler({ callback, query: () => prisma.user.count() })
|
|
|
- }
|
|
|
-
|
|
|
async function deleteUser(id, callback) {
|
|
|
await userHandler({
|
|
|
callback,
|
|
|
@@ -95,6 +69,22 @@ export function userHandlers(_io, socket) {
|
|
|
}
|
|
|
|
|
|
async function userHandler(options) {
|
|
|
- return await executeQuery({ ...userHandlerOptions, ...options })
|
|
|
+ const defaultOptions = {
|
|
|
+ user: socket.data?.user,
|
|
|
+ resource: "user",
|
|
|
+ idValidator: userSchema.shape.id.parse
|
|
|
+ }
|
|
|
+
|
|
|
+ const typenameMutator = injectTypename("user")
|
|
|
+ let mutator
|
|
|
+
|
|
|
+ if (_has(options, "mutator")) {
|
|
|
+ mutator = _flow([options.mutator, typenameMutator])
|
|
|
+ _unset(options, "mutator")
|
|
|
+ } else {
|
|
|
+ mutator = typenameMutator
|
|
|
+ }
|
|
|
+
|
|
|
+ return await executeQuery({ ...defaultOptions, ...options, mutator })
|
|
|
}
|
|
|
}
|