This commit is contained in:
2026-02-11 06:56:43 +01:00
parent 80df059135
commit a90706de5d
7 changed files with 90 additions and 39 deletions
@@ -2,12 +2,20 @@ interface SQLInsertGenReturn {
query: string;
values: string[];
}
type DataFn = () => {
placeholder: string;
value: string | number | Float32Array<ArrayBuffer>;
};
type DataType = {
[k: string]: string | number | DataFn | undefined | null;
};
type Params = {
data: DataType[];
tableName: string;
dbFullName?: string;
};
/**
* # SQL Insert Generator
*/
export default function sqlInsertGenerator({ tableName, data, dbFullName, }: {
data: any[];
tableName: string;
dbFullName?: string;
}): SQLInsertGenReturn | undefined;
export default function sqlInsertGenerator({ tableName, data, dbFullName, }: Params): SQLInsertGenReturn | undefined;
export {};
@@ -1,5 +1,4 @@
"use strict";
// @ts-check
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = sqlInsertGenerator;
/**
@@ -18,19 +17,28 @@ function sqlInsertGenerator({ tableName, data, dbFullName, }) {
}
});
});
/** @type {string[]} */
let queryBatches = [];
/** @type {string[]} */
let queryValues = [];
data.forEach((item) => {
queryBatches.push(`(${insertKeys
.map((ky) => {
var _a, _b;
queryValues.push(((_b = (_a = item[ky]) === null || _a === void 0 ? void 0 : _a.toString()) === null || _b === void 0 ? void 0 : _b.match(/./))
? item[ky]
: null);
return "?";
const value = item[ky];
const finalValue = typeof value == "string" ||
typeof value == "number"
? String(value)
: value
? String(value().value)
: null;
if (!finalValue) {
return undefined;
}
queryValues.push(finalValue);
const placeholder = typeof value == "function"
? value().placeholder
: "?";
return placeholder;
})
.filter((k) => Boolean(k))
.join(",")})`);
});
let query = `INSERT INTO ${finalDbName}${tableName} (${insertKeys.join(",")}) VALUES ${queryBatches.join(",")}`;
+7 -1
View File
@@ -959,7 +959,13 @@ export type ServerQueryObject<T extends object = {
__query?: {
[key in keyof T]: Omit<ServerQueryObject<T>, "__query">;
};
vector?: Float32Array<ArrayBuffer>;
vector?: boolean;
/**
* ### The Function to be used to generate the vector.
* Eg. `vec_f32`. This will come out as `vec_f32(?)`
* instead of just `?`
*/
vectorFunction?: string;
};
export type ServerQueryQueryObject<T extends object = {
[key: string]: any;