diff --git a/deno.json b/deno.json index 349a16a..0c27868 100644 --- a/deno.json +++ b/deno.json @@ -4,10 +4,10 @@ "include": ["src/", "test/"] }, "imports": { - "mysql/": "https://deno.land/x/mysql@v2.12.0/", + "mysql/": "https://deno.land/x/mysql@v2.12.1/", "postgres/": "https://deno.land/x/postgres@v0.17.0/", "sqlite/": "https://deno.land/x/sqlite@v3.8/", - "std/": "https://deno.land/std@0.201.0/" + "std/": "https://deno.land/std@0.203.0/" }, "tasks": { "check": "deno check **/*.ts && deno fmt --check", diff --git a/src/db.ts b/src/db.ts index d063b35..5f7e6d9 100644 --- a/src/db.ts +++ b/src/db.ts @@ -141,14 +141,15 @@ export class DB { } // Transforms parameters (and SQL) into array-like and references via `?` - static _transformParameters(sql: string, objectParameters: { [key: string]: unknown }, arrayParameters: unknown[]): string { + static _transformParameters(sql: string, objectParameters: { [key: string]: unknown }, arrayParameters: unknown[], safe?: boolean): string { arrayParameters.splice(0, arrayParameters.length); return sql.replace(/[:][$A-Z_][0-9A-Z_$]*/ig, function (name) { const value = objectParameters[name.substring(1)]; + if (value === undefined && !safe) throw new Error("Undefined parameter '" + name + "'"); const isArray = Array.isArray(value); // If it is an array we need to repeat N times the '?' and append all the values if (isArray) arrayParameters.push(...value); - else arrayParameters.push(value ?? undefined); + else arrayParameters.push(value); return isArray ? value.map((_) => "?").join(",") : "?"; }); }