mirror of
https://github.com/stfrigerio/sqliteDB.git
synced 2026-07-22 12:00:23 +00:00
60 lines
No EOL
1.9 KiB
TypeScript
60 lines
No EOL
1.9 KiB
TypeScript
import { SqlParams, ValidationError } from "../types";
|
|
|
|
export async function validateTable(db: any, params: SqlParams) {
|
|
// Get table info
|
|
const tableInfo = db.exec(`PRAGMA table_info("${params.table}")`);
|
|
if (!tableInfo || tableInfo.length === 0) {
|
|
return {
|
|
message: `Table "${params.table}" does not exist.`
|
|
};
|
|
}
|
|
|
|
const availableColumns = tableInfo[0].values.map((row: any) => row[1] as string);
|
|
|
|
// Validate columns if specified
|
|
if (params.columns) {
|
|
const requestedColumns = params.columns.split(',').map(c => c.trim());
|
|
for (const col of requestedColumns) {
|
|
if (!availableColumns.includes(col)) {
|
|
return {
|
|
message: `Column "${col}" does not exist in table "${params.table}".`,
|
|
availableColumns
|
|
};
|
|
}
|
|
}
|
|
}
|
|
|
|
// Validate dateColumn if specified
|
|
if (params.dateColumn && !availableColumns.includes(params.dateColumn)) {
|
|
return {
|
|
message: `Date column "${params.dateColumn}" does not exist in table "${params.table}".`,
|
|
availableColumns
|
|
};
|
|
}
|
|
|
|
// Validate filterColumn if specified
|
|
if (params.filterColumn) {
|
|
const filterColumns = Array.isArray(params.filterColumn)
|
|
? params.filterColumn
|
|
: [params.filterColumn];
|
|
|
|
for (const col of filterColumns) {
|
|
if (!availableColumns.includes(col)) {
|
|
return {
|
|
message: `Filter column "${col}" does not exist in table "${params.table}".`,
|
|
availableColumns
|
|
};
|
|
}
|
|
}
|
|
}
|
|
|
|
// Validate orderBy if specified
|
|
if (params.orderBy && !availableColumns.includes(params.orderBy)) {
|
|
return {
|
|
message: `Order by column "${params.orderBy}" does not exist in table "${params.table}".`,
|
|
availableColumns
|
|
};
|
|
}
|
|
|
|
return null;
|
|
} |