|
@@ -6,12 +6,6 @@ export function characterHandlers(_io, socket) {
|
|
|
socket.on("character:update", updateCharacter)
|
|
socket.on("character:update", updateCharacter)
|
|
|
socket.on("character:options", fetchCharacterOptions)
|
|
socket.on("character:options", fetchCharacterOptions)
|
|
|
|
|
|
|
|
- const characterHandlerOptions = {
|
|
|
|
|
- user: socket.data?.user,
|
|
|
|
|
- resource: "character",
|
|
|
|
|
- idValidator: characterSchema.shape.id.parse
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
async function readCharacter(id, callback) {
|
|
async function readCharacter(id, callback) {
|
|
|
await characterHandler({
|
|
await characterHandler({
|
|
|
callback,
|
|
callback,
|
|
@@ -44,7 +38,7 @@ export function characterHandlers(_io, socket) {
|
|
|
const character = await characterHandler({
|
|
const character = await characterHandler({
|
|
|
callback,
|
|
callback,
|
|
|
permissions: ["create"],
|
|
permissions: ["create"],
|
|
|
- data: withPlainTextFields(payload),
|
|
|
|
|
|
|
+ data: addPlainTextFields(payload),
|
|
|
validator: createCharacterSchema.parse,
|
|
validator: createCharacterSchema.parse,
|
|
|
query: ({ data }) => prisma.character.create({ data })
|
|
query: ({ data }) => prisma.character.create({ data })
|
|
|
})
|
|
})
|
|
@@ -57,7 +51,7 @@ export function characterHandlers(_io, socket) {
|
|
|
callback,
|
|
callback,
|
|
|
permissions: ["update"],
|
|
permissions: ["update"],
|
|
|
id,
|
|
id,
|
|
|
- data: withPlainTextFields(payload),
|
|
|
|
|
|
|
+ data: addPlainTextFields(payload),
|
|
|
validator: updateCharacterSchema.parse,
|
|
validator: updateCharacterSchema.parse,
|
|
|
query: ({ id, data }) => prisma.character.update({ where: { id }, data })
|
|
query: ({ id, data }) => prisma.character.update({ where: { id }, data })
|
|
|
})
|
|
})
|
|
@@ -79,7 +73,8 @@ export function characterHandlers(_io, socket) {
|
|
|
await characterHandler({
|
|
await characterHandler({
|
|
|
callback,
|
|
callback,
|
|
|
|
|
|
|
|
- query: () => Promise.all(_map(columns, (column) => fetchColumnOptions(column))),
|
|
|
|
|
|
|
+ query: () =>
|
|
|
|
|
+ Promise.all(_map(columns, (column) => fetchColumnOptions(column))),
|
|
|
|
|
|
|
|
mutator: (rawResult) =>
|
|
mutator: (rawResult) =>
|
|
|
_zipObject(
|
|
_zipObject(
|
|
@@ -90,6 +85,33 @@ export function characterHandlers(_io, socket) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async function characterHandler(options) {
|
|
async function characterHandler(options) {
|
|
|
- return await executeQuery({ ...characterHandlerOptions, ...options })
|
|
|
|
|
|
|
+ const defaultOptions = {
|
|
|
|
|
+ user: socket.data?.user,
|
|
|
|
|
+ resource: "character",
|
|
|
|
|
+ idValidator: characterSchema.shape.id.parse
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function typenameMutator(rawResult) {
|
|
|
|
|
+ if (_isPlainObject(rawResult) && _has(rawResult, "id")) {
|
|
|
|
|
+ _set(rawResult, "__typename", "character")
|
|
|
|
|
+ } else if (_isArray(rawResult)) {
|
|
|
|
|
+ _forEach(rawResult, (entry) =>
|
|
|
|
|
+ _set(entry, "__typename", "character")
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return rawResult
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ let mutator
|
|
|
|
|
+
|
|
|
|
|
+ if (_has(options, "mutator")) {
|
|
|
|
|
+ mutator = _flow([options.mutator, typenameMutator])
|
|
|
|
|
+ _unset(options, "mutator")
|
|
|
|
|
+ } else {
|
|
|
|
|
+ mutator = typenameMutator
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return await executeQuery({ ...defaultOptions, ...options, mutator })
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|