Skip to content

Commit

Permalink
Improve naming
Browse files Browse the repository at this point in the history
  • Loading branch information
jliuhtonen committed Sep 4, 2024
1 parent d137f4a commit c7e8cf4
Showing 1 changed file with 11 additions and 15 deletions.
26 changes: 11 additions & 15 deletions src/sql.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export type SqlQuery = { text: string; values: unknown[] }

interface AccumulatedQuery {
text: string
currentVariableIndex: number
currentVariableNumber: number
values: unknown[]
}

Expand All @@ -18,7 +18,7 @@ const appendPartToQueryFn =
const isLastQueryPart = currentQueryPartIndex === numberOfQueryParts - 1
if (isLastQueryPart) {
return {
currentVariableIndex: acc.currentVariableIndex,
currentVariableNumber: acc.currentVariableNumber,
text: `${acc.text}${currentQueryPart}`,
values: acc.values,
}
Expand All @@ -28,49 +28,45 @@ const appendPartToQueryFn =
if (isSqlFragment(currentValue)) {
const {
text: fragmentQueryText,
currentVariableIndex,
currentVariableNumber,
values: fragmentValues,
} = currentValue.strings.reduce(
appendPartToQueryFn(currentValue.strings.length, currentValue.values),
{
text: "",
currentVariableIndex: acc.currentVariableIndex,
currentVariableNumber: acc.currentVariableNumber,
values: [],
},
)

return {
currentVariableIndex,
currentVariableNumber,
text: `${acc.text}${currentQueryPart}${fragmentQueryText}`,
values: [...acc.values, ...fragmentValues],
}
} else if (Array.isArray(currentValue)) {
const arrayVars = currentValue
.map((_, i) => `$${acc.currentVariableIndex + i}`)
.map((_, i) => `$${acc.currentVariableNumber + i}`)
.join(", ")

return {
currentVariableIndex: acc.currentVariableIndex + currentValue.length,
currentVariableNumber: acc.currentVariableNumber + currentValue.length,
text: `${acc.text}${currentQueryPart}${arrayVars}`,
values: [...acc.values, ...currentValue],
}
} else {
return {
currentVariableIndex: acc.currentVariableIndex + 1,
text: `${acc.text}${currentQueryPart}$${acc.currentVariableIndex}`,
currentVariableNumber: acc.currentVariableNumber + 1,
text: `${acc.text}${currentQueryPart}$${acc.currentVariableNumber}`,
values: [...acc.values, currentValue],
}
}
}

export const sql = (strings: TemplateStringsArray, ...values: unknown[]) => {
const initialValue: {
text: string
currentVariableIndex: number
values: unknown[]
} = {
const initialValue: AccumulatedQuery = {
text: "",
currentVariableIndex: 1,
currentVariableNumber: 1,
values: [],
}

Expand Down

0 comments on commit c7e8cf4

Please sign in to comment.