fix updateOperation

This commit is contained in:
DrakeTDL 2023-10-09 23:30:57 -07:00
parent 28c740b341
commit 99a06ce0b7
No known key found for this signature in database
1 changed files with 15 additions and 8 deletions

View File

@ -64,6 +64,14 @@ const rewriteVarValues = (
}
const tab = (n: number) => new Array(n + 1).fill("").join("\t")
const t = tab
const replaceLast = (str: string, pattern: string | RegExp, replacement: string) => {
const match = typeof pattern === "string"
? pattern
: (str.match(new RegExp(pattern.source, "g")) || []).slice(-1)[0]
if (!match) return str
const last = str.lastIndexOf(match)
return last !== -1 ? `${str.slice(0, last)}${replacement}${str.slice(last + match.length)}` : str
}
const updateOperation = (
{ query, variables, field, level, hasSubField }: UpdateQuery,
@ -78,14 +86,13 @@ const updateOperation = (
)
}
}
query = query
.replace(
`%${field[level - 1]}`,
`${field[level]}${variables ? ` (${convertedType[0].join(", ")})` : ""}${
hasSubField ? `${` {\n${t(level + 1)}%${field.at(-1)}\n${t(level)}}`}` : ""
}\n${t(level)}%${field[level - 1]}`,
)
query = replaceLast(
query,
`%${field[level - 1]}`,
`${field[level]}${variables ? ` (${convertedType[0].join(", ")})` : ""}${
hasSubField ? `${` {\n${t(level + 1)}%${field.at(-1)}\n${t(level)}}`}` : ""
}\n${t(level)}%${field[level - 1]}`,
)
return {
get() {
// return query