Update sql equalities.

This commit is contained in:
Benjamin Toby 2026-04-14 20:05:02 +01:00
parent a4aa20baa4
commit 613962a925
8 changed files with 20 additions and 3 deletions

View File

@ -614,7 +614,7 @@ export declare const ServerQueryOperators: readonly ["AND", "OR"];
/** /**
* Supported comparison operators for server-side query generation. * Supported comparison operators for server-side query generation.
*/ */
export declare const ServerQueryEqualities: readonly ["EQUAL", "LIKE", "LIKE_RAW", "LIKE_LOWER", "LIKE_LOWER_RAW", "NOT LIKE", "NOT LIKE_RAW", "NOT_LIKE_LOWER", "NOT_LIKE_LOWER_RAW", "NOT EQUAL", "REGEXP", "FULLTEXT", "IN", "NOT IN", "BETWEEN", "NOT BETWEEN", "IS NULL", "IS NOT NULL", "EXISTS", "NOT EXISTS", "GREATER THAN", "GREATER THAN OR EQUAL", "LESS THAN", "LESS THAN OR EQUAL", "MATCH", "MATCH_BOOLEAN"]; export declare const ServerQueryEqualities: readonly ["EQUAL", "LIKE", "LIKE_RAW", "LIKE_LOWER", "LIKE_LOWER_RAW", "NOT LIKE", "NOT LIKE_RAW", "NOT_LIKE_LOWER", "NOT_LIKE_LOWER_RAW", "NOT EQUAL", "REGEXP", "FULLTEXT", "IN", "NOT IN", "BETWEEN", "NOT BETWEEN", "IS NULL", "IS NOT NULL", "IS NOT", "EXISTS", "NOT EXISTS", "GREATER THAN", "GREATER THAN OR EQUAL", "LESS THAN", "LESS THAN OR EQUAL", "MATCH", "MATCH_BOOLEAN"];
/** /**
* Top-level query-builder input used to generate SELECT statements, joins, * Top-level query-builder input used to generate SELECT statements, joins,
* grouping, pagination, and full-text search clauses. * grouping, pagination, and full-text search clauses.

1
dist/types/index.js vendored
View File

@ -71,6 +71,7 @@ export const ServerQueryEqualities = [
"NOT BETWEEN", "NOT BETWEEN",
"IS NULL", "IS NULL",
"IS NOT NULL", "IS NOT NULL",
"IS NOT",
"EXISTS", "EXISTS",
"NOT EXISTS", "NOT EXISTS",
"GREATER THAN", "GREATER THAN",

View File

@ -9,6 +9,8 @@ export default function sqlEqualityParser(eq) {
return "NOT LIKE"; return "NOT LIKE";
case "NOT EQUAL": case "NOT EQUAL":
return "<>"; return "<>";
case "IS NOT":
return "IS NOT";
case "IN": case "IN":
return "IN"; return "IN";
case "NOT IN": case "NOT IN":

View File

@ -91,6 +91,12 @@ export default function sqlGenOperatorGen({ fieldName, value, equality, queryObj
param: finalParams, param: finalParams,
}; };
} }
else if (equality == "IS NOT") {
return {
str: `${fieldName} IS NOT ${finalValue}`,
param: finalParams,
};
}
else if (equality) { else if (equality) {
return { return {
str: `${fieldName} ${sqlEqualityParser(equality)} ${finalValue}`, str: `${fieldName} ${sqlEqualityParser(equality)} ${finalValue}`,

View File

@ -1,6 +1,6 @@
{ {
"name": "@moduletrace/bun-sqlite", "name": "@moduletrace/bun-sqlite",
"version": "1.0.35", "version": "1.0.36",
"description": "SQLite manager for Bun", "description": "SQLite manager for Bun",
"author": "Benjamin Toby", "author": "Benjamin Toby",
"main": "dist/index.js", "main": "dist/index.js",

View File

@ -670,6 +670,7 @@ export const ServerQueryEqualities = [
"NOT BETWEEN", "NOT BETWEEN",
"IS NULL", "IS NULL",
"IS NOT NULL", "IS NOT NULL",
"IS NOT",
"EXISTS", "EXISTS",
"NOT EXISTS", "NOT EXISTS",
"GREATER THAN", "GREATER THAN",

View File

@ -1,7 +1,7 @@
import { ServerQueryEqualities } from "../types"; import { ServerQueryEqualities } from "../types";
export default function sqlEqualityParser( export default function sqlEqualityParser(
eq: (typeof ServerQueryEqualities)[number] eq: (typeof ServerQueryEqualities)[number],
): string { ): string {
switch (eq) { switch (eq) {
case "EQUAL": case "EQUAL":
@ -12,6 +12,8 @@ export default function sqlEqualityParser(
return "NOT LIKE"; return "NOT LIKE";
case "NOT EQUAL": case "NOT EQUAL":
return "<>"; return "<>";
case "IS NOT":
return "IS NOT";
case "IN": case "IN":
return "IN"; return "IN";
case "NOT IN": case "NOT IN":

View File

@ -107,6 +107,11 @@ export default function sqlGenOperatorGen({
str: `${fieldName} != ${finalValue}`, str: `${fieldName} != ${finalValue}`,
param: finalParams, param: finalParams,
}; };
} else if (equality == "IS NOT") {
return {
str: `${fieldName} IS NOT ${finalValue}`,
param: finalParams,
};
} else if (equality) { } else if (equality) {
return { return {
str: `${fieldName} ${sqlEqualityParser( str: `${fieldName} ${sqlEqualityParser(