/** Convert SQLite-style @name / ? placeholders to node-pg $n. */ export function bindSql( sql: string, params?: unknown[] | Record, ): { text: string; values: unknown[] } { if (params == null) return { text: sql, values: [] } if (Array.isArray(params)) { let i = 0 const text = sql.replace(/\?/g, () => { i += 1 return `$${i}` }) return { text, values: params } } const values: unknown[] = [] const text = sql.replace(/@([a-zA-Z_][a-zA-Z0-9_]*)/g, (_, name: string) => { values.push(params[name]) return `$${values.length}` }) return { text, values } }