@wxn0brp/db-string-query 0.0.8 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/.github/workflows/build.yml +1 -1
  2. package/CHANGELOG.md +22 -0
  3. package/bun.lock +9 -6
  4. package/dist/sql/handle/collection.d.ts +4 -0
  5. package/dist/sql/handle/collection.js +26 -0
  6. package/dist/sql/handle/delete.d.ts +1 -0
  7. package/dist/sql/handle/delete.js +11 -0
  8. package/dist/sql/handle/insert.d.ts +1 -0
  9. package/dist/sql/handle/insert.js +52 -0
  10. package/dist/sql/handle/select.d.ts +7 -0
  11. package/dist/sql/handle/select.js +55 -0
  12. package/dist/sql/handle/update.d.ts +1 -0
  13. package/dist/sql/handle/update.js +12 -0
  14. package/dist/sql/index.d.ts +2 -2
  15. package/dist/sql/index.js +10 -4
  16. package/dist/sql/utils/join.util.d.ts +10 -0
  17. package/dist/sql/utils/join.util.js +52 -0
  18. package/dist/sql/where.js +4 -1
  19. package/dist/types.d.ts +5 -1
  20. package/package.json +7 -2
  21. package/src/sql/handle/collection.ts +28 -0
  22. package/src/sql/handle/delete.ts +12 -0
  23. package/src/sql/handle/insert.ts +50 -0
  24. package/src/sql/handle/select.ts +68 -0
  25. package/src/sql/handle/update.ts +13 -0
  26. package/src/sql/index.ts +12 -13
  27. package/src/sql/utils/join.util.ts +69 -0
  28. package/src/sql/where.ts +3 -0
  29. package/src/types.ts +9 -1
  30. package/{src/test → test}/js.test.ts +1 -1
  31. package/{src/test → test}/sql/delete.test.ts +2 -2
  32. package/test/sql/index.test.ts +17 -0
  33. package/{src/test → test}/sql/insert.test.ts +2 -2
  34. package/{src/test → test}/sql/select.test.ts +29 -8
  35. package/{src/test → test}/sql/update.test.ts +2 -2
  36. package/test/sql/utils/join.test.ts +42 -0
  37. package/test/tsconfig.json +19 -0
  38. package/tsconfig.json +7 -3
  39. package/typedocs-generated/404.html +76 -0
  40. package/typedocs-generated/assets/hierarchy.js +1 -1
  41. package/typedocs-generated/assets/highlight.css +1 -1
  42. package/typedocs-generated/assets/navigation.js +1 -1
  43. package/typedocs-generated/assets/search.js +1 -1
  44. package/typedocs-generated/assets/style.css +3 -3
  45. package/typedocs-generated/classes/sql_index.default.html +2 -2
  46. package/typedocs-generated/classes/sql_utils_join.util.JoinToRelationsEngine.html +3 -0
  47. package/typedocs-generated/functions/sql_handle_collection.handleCreate.html +1 -0
  48. package/typedocs-generated/functions/sql_handle_collection.handleDrop.html +1 -0
  49. package/typedocs-generated/functions/sql_handle_collection.handleExists.html +1 -0
  50. package/typedocs-generated/functions/sql_handle_collection.handleGet.html +1 -0
  51. package/typedocs-generated/functions/sql_handle_delete.handleDelete.html +1 -0
  52. package/typedocs-generated/functions/sql_handle_insert.handleInsert.html +1 -0
  53. package/typedocs-generated/functions/sql_handle_select.handleSelect.html +1 -0
  54. package/typedocs-generated/functions/sql_handle_select.parseJoinClauses.html +1 -0
  55. package/typedocs-generated/functions/sql_handle_select.parseSelectClause.html +1 -0
  56. package/typedocs-generated/functions/sql_handle_update.handleUpdate.html +1 -0
  57. package/typedocs-generated/hierarchy.html +1 -1
  58. package/typedocs-generated/interfaces/types.Opts.html +3 -0
  59. package/typedocs-generated/interfaces/types.ValtheraParser.html +2 -2
  60. package/typedocs-generated/modules/index.html +1 -1
  61. package/typedocs-generated/modules/sql_handle_collection.html +1 -0
  62. package/typedocs-generated/modules/sql_handle_delete.html +1 -0
  63. package/typedocs-generated/modules/sql_handle_insert.html +1 -0
  64. package/typedocs-generated/modules/sql_handle_select.html +1 -0
  65. package/typedocs-generated/modules/sql_handle_update.html +1 -0
  66. package/typedocs-generated/modules/sql_utils_join.util.html +1 -0
  67. package/typedocs-generated/modules/types.html +1 -1
  68. package/typedocs-generated/modules.html +1 -1
  69. package/typedocs-generated/types/sql_utils_join.util.JoinClause.html +1 -0
  70. package/dist/sql/handle.d.ts +0 -12
  71. package/dist/sql/handle.js +0 -119
  72. package/dist/test/js.test.d.ts +0 -1
  73. package/dist/test/js.test.js +0 -85
  74. package/dist/test/sql/delete.test.d.ts +0 -1
  75. package/dist/test/sql/delete.test.js +0 -79
  76. package/dist/test/sql/insert.test.d.ts +0 -1
  77. package/dist/test/sql/insert.test.js +0 -79
  78. package/dist/test/sql/select.test.d.ts +0 -1
  79. package/dist/test/sql/select.test.js +0 -59
  80. package/dist/test/sql/update.test.d.ts +0 -1
  81. package/dist/test/sql/update.test.js +0 -71
  82. package/src/sql/handle.ts +0 -129
  83. package/typedocs-generated/functions/sql_handle.handleCreate.html +0 -1
  84. package/typedocs-generated/functions/sql_handle.handleDelete.html +0 -1
  85. package/typedocs-generated/functions/sql_handle.handleDrop.html +0 -1
  86. package/typedocs-generated/functions/sql_handle.handleExists.html +0 -1
  87. package/typedocs-generated/functions/sql_handle.handleGet.html +0 -1
  88. package/typedocs-generated/functions/sql_handle.handleInsert.html +0 -1
  89. package/typedocs-generated/functions/sql_handle.handleSelect.html +0 -1
  90. package/typedocs-generated/functions/sql_handle.handleUpdate.html +0 -1
  91. package/typedocs-generated/functions/sql_handle.parseSelectClause.html +0 -1
  92. package/typedocs-generated/modules/sql_handle.html +0 -1
  93. package/typedocs-generated/modules/test_js.test.html +0 -1
  94. package/typedocs-generated/modules/test_sql_delete.test.html +0 -1
  95. package/typedocs-generated/modules/test_sql_insert.test.html +0 -1
  96. package/typedocs-generated/modules/test_sql_select.test.html +0 -1
  97. package/typedocs-generated/modules/test_sql_update.test.html +0 -1
@@ -1,85 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { ValtheraDbParsers } from "../index.js";
3
- const jsParser = new ValtheraDbParsers.js();
4
- describe("JS-like Parser", () => {
5
- test("should parse a simple method call with arguments", () => {
6
- const query = "myMethod(1, 'hello')";
7
- const parsedQuery = jsParser.parse(query);
8
- expect(parsedQuery).toBeDefined();
9
- expect(parsedQuery.method).toBe("myMethod");
10
- expect(parsedQuery.args).toHaveLength(2);
11
- expect(parsedQuery.args[0]).toBe(1);
12
- expect(parsedQuery.args[1]).toBe("hello");
13
- });
14
- test("should parse method call with object argument", () => {
15
- const query = `find({ id: 1, name: "John" })`;
16
- const parsedQuery = jsParser.parse(query);
17
- expect(parsedQuery).toBeDefined();
18
- expect(parsedQuery.method).toBe("find");
19
- expect(parsedQuery.args).toHaveLength(1);
20
- expect(parsedQuery.args[0]).toEqual({ id: 1, name: "John" });
21
- });
22
- test("should parse method call with array argument", () => {
23
- const query = `myMethod([1, 2, 3])`;
24
- const parsedQuery = jsParser.parse(query);
25
- expect(parsedQuery).toBeDefined();
26
- expect(parsedQuery.method).toBe("myMethod");
27
- expect(parsedQuery.args).toHaveLength(1);
28
- expect(parsedQuery.args[0]).toEqual([1, 2, 3]);
29
- });
30
- test("should parse method call with nested objects and arrays", () => {
31
- const query = `complexMethod({ users: [{ id: 1, active: true }], settings: { theme: "dark" } })`;
32
- const parsedQuery = jsParser.parse(query);
33
- expect(parsedQuery).toBeDefined();
34
- expect(parsedQuery.method).toBe("complexMethod");
35
- expect(parsedQuery.args).toHaveLength(1);
36
- expect(parsedQuery.args[0]).toEqual({
37
- users: [{ id: 1, active: true }],
38
- settings: { theme: "dark" }
39
- });
40
- });
41
- test("should parse method call with mixed argument types", () => {
42
- const query = `mixedArgs(42, "text", true, null, [1, "two", false])`;
43
- const parsedQuery = jsParser.parse(query);
44
- expect(parsedQuery).toBeDefined();
45
- expect(parsedQuery.method).toBe("mixedArgs");
46
- expect(parsedQuery.args).toHaveLength(5);
47
- expect(parsedQuery.args[0]).toBe(42);
48
- expect(parsedQuery.args[1]).toBe("text");
49
- expect(parsedQuery.args[2]).toBe(true);
50
- expect(parsedQuery.args[3]).toBeNull();
51
- expect(parsedQuery.args[4]).toEqual([1, "two", false]);
52
- });
53
- test("should handle string arguments with quotes", () => {
54
- const query = `stringMethod("double quotes", 'single quotes')`;
55
- const parsedQuery = jsParser.parse(query);
56
- expect(parsedQuery).toBeDefined();
57
- expect(parsedQuery.method).toBe("stringMethod");
58
- expect(parsedQuery.args).toHaveLength(2);
59
- expect(parsedQuery.args[0]).toBe("double quotes");
60
- expect(parsedQuery.args[1]).toBe("single quotes");
61
- });
62
- test("should throw error for invalid query syntax", () => {
63
- const query = "invalidQuery";
64
- expect(() => {
65
- jsParser.parse(query);
66
- }).toThrow("Invalid query");
67
- });
68
- test("should throw error for malformed arguments", () => {
69
- const query = "method({unclosed: object";
70
- expect(() => {
71
- jsParser.parse(query);
72
- }).toThrow();
73
- });
74
- test("should parse floating point numbers correctly", () => {
75
- const query = `numberMethod(3.14, -2.5, 0.001)`;
76
- const parsedQuery = jsParser.parse(query);
77
- expect(parsedQuery).toBeDefined();
78
- expect(parsedQuery.method).toBe("numberMethod");
79
- expect(parsedQuery.args).toHaveLength(3);
80
- expect(parsedQuery.args[0]).toBe(3.14);
81
- expect(parsedQuery.args[1]).toBe(-2.5);
82
- expect(parsedQuery.args[2]).toBe(0.001);
83
- });
84
- });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L2pzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLElBQUksQ0FBQztBQUV2QyxNQUFNLFFBQVEsR0FBRyxJQUFJLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxDQUFDO0FBRTVDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7SUFDNUIsSUFBSSxDQUFDLGtEQUFrRCxFQUFFLEdBQUcsRUFBRTtRQUMxRCxNQUFNLEtBQUssR0FBRyxzQkFBc0IsQ0FBQztRQUNyQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQywrQ0FBK0MsRUFBRSxHQUFHLEVBQUU7UUFDdkQsTUFBTSxLQUFLLEdBQUcsK0JBQStCLENBQUM7UUFDOUMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEtBQUss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
@@ -1 +0,0 @@
1
- export {};
@@ -1,79 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { ValtheraDbParsers } from "../../index.js";
3
- const sqlParser = new ValtheraDbParsers.sql();
4
- describe("SQL Parser - DELETE", () => {
5
- test("should parse a simple DELETE query", () => {
6
- const query = "DELETE FROM users WHERE id = 1";
7
- const parsedQuery = sqlParser.parse(query);
8
- expect(parsedQuery).toBeDefined();
9
- expect(parsedQuery.method).toBe("remove"); // DELETE maps to "remove" method
10
- expect(parsedQuery.args).toHaveLength(2);
11
- expect(parsedQuery.args[0]).toBe("users"); // collection name
12
- expect(parsedQuery.args[1]).toEqual({ id: 1 }); // where clause
13
- });
14
- test("should parse DELETE query without WHERE clause", () => {
15
- const query = "DELETE FROM users";
16
- const parsedQuery = sqlParser.parse(query);
17
- expect(parsedQuery).toBeDefined();
18
- expect(parsedQuery.method).toBe("remove");
19
- expect(parsedQuery.args).toHaveLength(2);
20
- expect(parsedQuery.args[0]).toBe("users"); // collection name
21
- expect(parsedQuery.args[1]).toEqual({}); // empty where clause
22
- });
23
- test("should parse DELETE with complex WHERE conditions", () => {
24
- const query = "DELETE FROM users WHERE age > 65 AND status = 'inactive'";
25
- const parsedQuery = sqlParser.parse(query);
26
- expect(parsedQuery).toBeDefined();
27
- expect(parsedQuery.method).toBe("remove");
28
- expect(parsedQuery.args).toHaveLength(2);
29
- expect(parsedQuery.args[0]).toBe("users"); // collection name
30
- expect(parsedQuery.args[1]).toEqual({ $gt: { age: 65 }, status: "inactive" }); // where clause
31
- });
32
- test("should parse DELETE with string values", () => {
33
- const query = "DELETE FROM posts WHERE title = 'Unwanted Post'";
34
- const parsedQuery = sqlParser.parse(query);
35
- expect(parsedQuery).toBeDefined();
36
- expect(parsedQuery.method).toBe("remove");
37
- expect(parsedQuery.args).toHaveLength(2);
38
- expect(parsedQuery.args[0]).toBe("posts"); // collection name
39
- expect(parsedQuery.args[1]).toEqual({ title: "Unwanted Post" }); // where clause
40
- });
41
- test("should parse DELETE with numeric values", () => {
42
- const query = "DELETE FROM products WHERE price = 0";
43
- const parsedQuery = sqlParser.parse(query);
44
- expect(parsedQuery).toBeDefined();
45
- expect(parsedQuery.method).toBe("remove");
46
- expect(parsedQuery.args).toHaveLength(2);
47
- expect(parsedQuery.args[0]).toBe("products"); // collection name
48
- expect(parsedQuery.args[1]).toEqual({ price: 0 }); // where clause
49
- });
50
- test("should throw error for invalid DELETE syntax", () => {
51
- const query = "DELETE users WHERE id = 1"; // missing FROM keyword
52
- expect(() => {
53
- sqlParser.parse(query);
54
- }).toThrow("Invalid DELETE syntax");
55
- });
56
- test("should parse DELETE with quoted string values", () => {
57
- const query = "DELETE FROM users WHERE name = 'John Doe'";
58
- const parsedQuery = sqlParser.parse(query);
59
- expect(parsedQuery).toBeDefined();
60
- expect(parsedQuery.method).toBe("remove");
61
- expect(parsedQuery.args).toHaveLength(2);
62
- expect(parsedQuery.args[0]).toBe("users"); // collection name
63
- expect(parsedQuery.args[1]).toEqual({ name: "John Doe" }); // where clause
64
- });
65
- test("should handle DELETE with multiple condition types", () => {
66
- const query = "DELETE FROM orders WHERE total > 1000 AND status = 'cancelled' AND user_id != 5";
67
- const parsedQuery = sqlParser.parse(query);
68
- expect(parsedQuery).toBeDefined();
69
- expect(parsedQuery.method).toBe("remove");
70
- expect(parsedQuery.args).toHaveLength(2);
71
- expect(parsedQuery.args[0]).toBe("orders"); // collection name
72
- expect(parsedQuery.args[1]).toEqual({
73
- $gt: { total: 1000 },
74
- status: "cancelled",
75
- $not: { user_id: 5 }
76
- }); // where clause with multiple operators
77
- });
78
- });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC9zcWwvZGVsZXRlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUUxQyxNQUFNLFNBQVMsR0FBRyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDO0FBRTlDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7SUFDcEMsSUFBSSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtRQUMvQyxNQUFNLEtBQUssR0FBRyxnQ0FBZ0MsQ0FBQztRQUMvQyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlDQUFpQztRQUM1RSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGtCQUFrQjtRQUM3RCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZTtJQUNoRSxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxnREFBZ0QsRUFBRSxHQUFHLEVBQUU7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
@@ -1 +0,0 @@
1
- export {};
@@ -1,79 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { ValtheraDbParsers } from "../../index.js";
3
- const sqlParser = new ValtheraDbParsers.sql();
4
- describe("SQL Parser - INSERT", () => {
5
- test("should parse a simple INSERT query", () => {
6
- const query = "INSERT INTO users (name, email) VALUES ('John', 'john@example.com')";
7
- const parsedQuery = sqlParser.parse(query);
8
- expect(parsedQuery).toBeDefined();
9
- expect(parsedQuery.method).toBe("add"); // INSERT maps to "add" method
10
- expect(parsedQuery.args).toHaveLength(2);
11
- expect(parsedQuery.args[0]).toBe("users"); // collection name
12
- expect(parsedQuery.args[1]).toEqual({ name: "John", email: "john@example.com" }); // data
13
- });
14
- test("should parse INSERT with numeric values", () => {
15
- const query = "INSERT INTO products (id, name, price) VALUES (1, 'Laptop', 999.99)";
16
- const parsedQuery = sqlParser.parse(query);
17
- expect(parsedQuery).toBeDefined();
18
- expect(parsedQuery.method).toBe("add");
19
- expect(parsedQuery.args).toHaveLength(2);
20
- expect(parsedQuery.args[0]).toBe("products"); // collection name
21
- expect(parsedQuery.args[1]).toEqual({ id: 1, name: "Laptop", price: 999.99 }); // data with numeric values
22
- });
23
- test("should parse INSERT with mixed data types", () => {
24
- const query = "INSERT INTO users (id, name, active, score) VALUES (1, 'Jane', true, 95.5)";
25
- const parsedQuery = sqlParser.parse(query);
26
- expect(parsedQuery).toBeDefined();
27
- expect(parsedQuery.method).toBe("add");
28
- expect(parsedQuery.args).toHaveLength(2);
29
- expect(parsedQuery.args[0]).toBe("users"); // collection name
30
- expect(parsedQuery.args[1]).toEqual({ id: 1, name: "Jane", active: "true", score: 95.5 });
31
- });
32
- test("should handle INSERT with quoted values containing commas", () => {
33
- const query = `INSERT INTO posts (title, content) VALUES ('Hello, World!', 'This is a post, with commas.')`;
34
- const parsedQuery = sqlParser.parse(query);
35
- expect(parsedQuery).toBeDefined();
36
- expect(parsedQuery.method).toBe("add");
37
- expect(parsedQuery.args).toHaveLength(2);
38
- expect(parsedQuery.args[0]).toBe("posts"); // collection name
39
- expect(parsedQuery.args[1]).toEqual({
40
- title: "Hello, World!",
41
- content: "This is a post, with commas."
42
- });
43
- });
44
- test("should throw error for mismatched columns and values", () => {
45
- const query = "INSERT INTO users (name, email) VALUES ('John')"; // missing value
46
- expect(() => {
47
- sqlParser.parse(query);
48
- }).toThrow("Number of columns and values does not match");
49
- });
50
- test("should throw error for invalid INSERT syntax", () => {
51
- const query = "INSERT users (name) VALUES ('John')"; // missing INTO
52
- expect(() => {
53
- sqlParser.parse(query);
54
- }).toThrow("Invalid INSERT syntax");
55
- });
56
- test("should handle INSERT with double quotes", () => {
57
- const query = 'INSERT INTO users (name, email) VALUES ("Jane", "jane@example.com")';
58
- const parsedQuery = sqlParser.parse(query);
59
- expect(parsedQuery).toBeDefined();
60
- expect(parsedQuery.method).toBe("add");
61
- expect(parsedQuery.args).toHaveLength(2);
62
- expect(parsedQuery.args[0]).toBe("users"); // collection name
63
- expect(parsedQuery.args[1]).toEqual({ name: "Jane", email: "jane@example.com" });
64
- });
65
- test("should handle INSERT with mixed quote types", () => {
66
- const query = `INSERT INTO users (name, email, description) VALUES ("Jane", 'jane@example.com', "User, with 'special' chars")`;
67
- const parsedQuery = sqlParser.parse(query);
68
- expect(parsedQuery).toBeDefined();
69
- expect(parsedQuery.method).toBe("add");
70
- expect(parsedQuery.args).toHaveLength(2);
71
- expect(parsedQuery.args[0]).toBe("users"); // collection name
72
- expect(parsedQuery.args[1]).toEqual({
73
- name: "Jane",
74
- email: "jane@example.com",
75
- description: "User, with 'special' chars"
76
- });
77
- });
78
- });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC9zcWwvaW5zZXJ0LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUUxQyxNQUFNLFNBQVMsR0FBRyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDO0FBRTlDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7SUFDcEMsSUFBSSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtRQUMvQyxNQUFNLEtBQUssR0FBRyxxRUFBcUUsQ0FBQztRQUNwRixNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDhCQUE4QjtRQUN0RSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGtCQUFrQjtRQUM3RCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU87SUFDMUYsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMseUNBQXlDLEVBQUUsR0FBRyxFQUFFO1FBQ3BELE1BQU0sS0FBSyxHQUFHLHFFQUFxRSxDQUFDO1FBQ3BGLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0MsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCO1FBQ2hFLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsMkJBQTJCO0lBQzNHLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLDJDQUEyQyxFQUFFLEdBQUcsRUFBRTtRQUN0RCxNQUFNLEtBQUssR0FBRyw0RUFBNEUsQ0FBQztRQUMzRixNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGtCQUFrQjtRQUM3RCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzNGLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLDJEQUEyRCxFQUFFLEdBQUcsRUFBRTtRQUN0RSxNQUFNLEtBQUssR0FBRyw2RkFBNkYsQ0FBQztRQUM1RyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGtCQUFrQjtRQUM3RCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNuQyxLQUFLLEVBQUUsZUFBZTtZQUN0QixPQUFPLEVBQUUsOEJBQThCO1NBQ3ZDLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLHNEQUFzRCxFQUFFLEdBQUcsRUFBRTtRQUNqRSxNQUFNLEtBQUssR0FBRyxpREFBaUQsQ0FBQyxDQUFDLGdCQUFnQjtRQUVqRixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsNkNBQTZDLENBQUMsQ0FBQztJQUMzRCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7UUFDekQsTUFBTSxLQUFLLEdBQUcscUNBQXFDLENBQUMsQ0FBQyxlQUFlO1FBRXBFLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDWCxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLHlDQUF5QyxFQUFFLEdBQUcsRUFBRTtRQUNwRCxNQUFNLEtBQUssR0FBRyxxRUFBcUUsQ0FBQztRQUNwRixNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGtCQUFrQjtRQUM3RCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyw2Q0FBNkMsRUFBRSxHQUFHLEVBQUU7UUFDeEQsTUFBTSxLQUFLLEdBQUcsZ0hBQWdILENBQUM7UUFDL0gsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxrQkFBa0I7UUFDN0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDbkMsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsa0JBQWtCO1lBQ3pCLFdBQVcsRUFBRSw0QkFBNEI7U0FDekMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyJ9
@@ -1 +0,0 @@
1
- export {};
@@ -1,59 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { ValtheraDbParsers } from "../../index.js";
3
- const sqlParser = new ValtheraDbParsers.sql();
4
- describe("SQL Parser - SELECT", () => {
5
- test("should parse a simple SELECT query", () => {
6
- const query = "SELECT * FROM users WHERE id = 1";
7
- const parsedQuery = sqlParser.parse(query);
8
- expect(parsedQuery).toBeDefined();
9
- expect(parsedQuery.method).toBe("find");
10
- expect(parsedQuery.args).toHaveLength(4);
11
- expect(parsedQuery.args[0]).toBe("users"); // collection name
12
- expect(parsedQuery.args[1]).toEqual({ id: 1 }); // where clause
13
- });
14
- test("should parse a SELECT query with specific columns", () => {
15
- const query = "SELECT name, email FROM users WHERE active = 1";
16
- const parsedQuery = sqlParser.parse(query);
17
- expect(parsedQuery).toBeDefined();
18
- expect(parsedQuery.method).toBe("find");
19
- expect(parsedQuery.args).toHaveLength(4);
20
- expect(parsedQuery.args[0]).toBe("users"); // collection name
21
- expect(parsedQuery.args[1]).toEqual({ active: 1 }); // where clause
22
- expect(parsedQuery.args[3]).toEqual({ select: ["name", "email"] }); // select options
23
- });
24
- test("should parse a SELECT query without WHERE clause", () => {
25
- const query = "SELECT * FROM users";
26
- const parsedQuery = sqlParser.parse(query);
27
- expect(parsedQuery).toBeDefined();
28
- expect(parsedQuery.method).toBe("find");
29
- expect(parsedQuery.args).toHaveLength(4);
30
- expect(parsedQuery.args[0]).toBe("users"); // collection name
31
- expect(parsedQuery.args[1]).toEqual({}); // empty where clause
32
- });
33
- test("should parse a SELECT query with EXCLUDE clause", () => {
34
- const query = "SELECT * EXCLUDE password, createdAt FROM users WHERE active = 1";
35
- const parsedQuery = sqlParser.parse(query);
36
- expect(parsedQuery).toBeDefined();
37
- expect(parsedQuery.method).toBe("find");
38
- expect(parsedQuery.args).toHaveLength(4);
39
- expect(parsedQuery.args[0]).toBe("users"); // collection name
40
- expect(parsedQuery.args[1]).toEqual({ active: 1 }); // where clause
41
- expect(parsedQuery.args[3]).toEqual({ exclude: ["password", "createdAt"] }); // exclude options
42
- });
43
- test("should parse a SELECT query with complex WHERE conditions", () => {
44
- const query = "SELECT * FROM users WHERE age > 18 AND status = 'active'";
45
- const parsedQuery = sqlParser.parse(query);
46
- expect(parsedQuery).toBeDefined();
47
- expect(parsedQuery.method).toBe("find");
48
- expect(parsedQuery.args).toHaveLength(4);
49
- expect(parsedQuery.args[0]).toBe("users"); // collection name
50
- expect(parsedQuery.args[1]).toEqual({ $gt: { age: 18 }, status: "active" }); // where clause
51
- });
52
- test("should throw error for invalid SELECT syntax", () => {
53
- const query = "SELECT FROM users";
54
- expect(() => {
55
- sqlParser.parse(query);
56
- }).toThrow();
57
- });
58
- });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC9zcWwvc2VsZWN0LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUUxQyxNQUFNLFNBQVMsR0FBRyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDO0FBRTlDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7SUFDakMsSUFBSSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtRQUM1QyxNQUFNLEtBQUssR0FBRyxrQ0FBa0MsQ0FBQztRQUNqRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGtCQUFrQjtRQUM3RCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZTtJQUNuRSxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxtREFBbUQsRUFBRSxHQUFHLEVBQUU7UUFDM0QsTUFBTSxL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
@@ -1 +0,0 @@
1
- export {};
@@ -1,71 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { ValtheraDbParsers } from "../../index.js";
3
- const sqlParser = new ValtheraDbParsers.sql();
4
- describe("SQL Parser - UPDATE", () => {
5
- test("should parse a simple UPDATE query", () => {
6
- const query = "UPDATE users SET name = 'John' WHERE id = 1";
7
- const parsedQuery = sqlParser.parse(query);
8
- expect(parsedQuery).toBeDefined();
9
- expect(parsedQuery.method).toBe("update"); // UPDATE maps to "update" method
10
- expect(parsedQuery.args).toHaveLength(3);
11
- expect(parsedQuery.args[0]).toBe("users"); // collection name
12
- expect(parsedQuery.args[1]).toEqual({ id: 1 }); // where clause
13
- expect(parsedQuery.args[2]).toEqual({ name: "John" }); // set clause
14
- });
15
- test("should parse UPDATE with multiple SET fields", () => {
16
- const query = "UPDATE users SET name = 'Jane', email = 'jane@example.com' WHERE id = 2";
17
- const parsedQuery = sqlParser.parse(query);
18
- expect(parsedQuery).toBeDefined();
19
- expect(parsedQuery.method).toBe("update");
20
- expect(parsedQuery.args).toHaveLength(3);
21
- expect(parsedQuery.args[0]).toBe("users"); // collection name
22
- expect(parsedQuery.args[1]).toEqual({ id: 2 }); // where clause
23
- expect(parsedQuery.args[2]).toEqual({ name: "Jane", email: "jane@example.com" }); // set clause
24
- });
25
- test("should parse UPDATE with numeric values", () => {
26
- const query = "UPDATE products SET price = 29.99, stock = 100 WHERE id = 1";
27
- const parsedQuery = sqlParser.parse(query);
28
- expect(parsedQuery).toBeDefined();
29
- expect(parsedQuery.method).toBe("update");
30
- expect(parsedQuery.args).toHaveLength(3);
31
- expect(parsedQuery.args[0]).toBe("products"); // collection name
32
- expect(parsedQuery.args[1]).toEqual({ id: 1 }); // where clause
33
- expect(parsedQuery.args[2]).toEqual({ price: 29.99, stock: 100 }); // set clause
34
- });
35
- test("should parse UPDATE with string values containing spaces", () => {
36
- const query = "UPDATE posts SET title = 'Hello World Post', content = 'This is the content' WHERE id = 1";
37
- const parsedQuery = sqlParser.parse(query);
38
- expect(parsedQuery).toBeDefined();
39
- expect(parsedQuery.method).toBe("update");
40
- expect(parsedQuery.args).toHaveLength(3);
41
- expect(parsedQuery.args[0]).toBe("posts"); // collection name
42
- expect(parsedQuery.args[1]).toEqual({ id: 1 }); // where clause
43
- expect(parsedQuery.args[2]).toEqual({
44
- title: "Hello World Post",
45
- content: "This is the content"
46
- }); // set clause
47
- });
48
- test("should throw error for invalid UPDATE syntax", () => {
49
- const query = "UPDATE users name = 'John' WHERE id = 1"; // missing SET keyword
50
- expect(() => {
51
- sqlParser.parse(query);
52
- }).toThrow("Invalid UPDATE syntax");
53
- });
54
- test("should handle UPDATE with complex WHERE conditions", () => {
55
- const query = "UPDATE users SET status = 'inactive' WHERE age > 65 AND active = 1";
56
- const parsedQuery = sqlParser.parse(query);
57
- expect(parsedQuery).toBeDefined();
58
- expect(parsedQuery.method).toBe("update");
59
- expect(parsedQuery.args).toHaveLength(3);
60
- expect(parsedQuery.args[0]).toBe("users"); // collection name
61
- expect(parsedQuery.args[1]).toEqual({ $gt: { age: 65 }, active: 1 }); // where clause
62
- expect(parsedQuery.args[2]).toEqual({ status: "inactive" }); // set clause
63
- });
64
- test("should throw error when there is no WHERE clause", () => {
65
- const query = "UPDATE users SET name = 'John'"; // missing WHERE
66
- expect(() => {
67
- sqlParser.parse(query);
68
- }).toThrow("Invalid UPDATE syntax");
69
- });
70
- });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC9zcWwvdXBkYXRlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUUxQyxNQUFNLFNBQVMsR0FBRyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDO0FBRTlDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7SUFDakMsSUFBSSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtRQUM1QyxNQUFNLEtBQUssR0FBRyw2Q0FBNkMsQ0FBQztRQUM1RCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlDQUFpQztRQUM1RSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGtCQUFrQjtRQUM3RCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZTtRQUMvRCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9B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
package/src/sql/handle.ts DELETED
@@ -1,129 +0,0 @@
1
- import { parseReturn, parseSet } from "./utils";
2
- import { parseWhere } from "./where";
3
-
4
- export function handleSelect(query: string) {
5
- const match = query.match(/SELECT\s+(.+?)\s+FROM\s+([\w\/]+)(?:\s+WHERE\s+(.+))?/i);
6
- if (!match) throw new Error("Invalid SELECT syntax");
7
-
8
- const columnsPart = match[1].trim();
9
- const collection = match[2];
10
- const whereClause = match[3] ? parseWhere(match[3]) : {};
11
-
12
- const findOpts = parseSelectClause(columnsPart);
13
- return parseReturn("find", [collection, whereClause, {}, findOpts]);
14
- }
15
-
16
- export function parseSelectClause(selectClause: string): { select?: string[]; exclude?: string[] } {
17
- selectClause = selectClause.trim();
18
-
19
- if (selectClause === "*") return {};
20
-
21
- const excludeMatch = selectClause.match(/\*\s+EXCLUDE\s+(.+)/i);
22
- if (excludeMatch) {
23
- return {
24
- exclude: excludeMatch[1].split(/\s*,\s*/),
25
- };
26
- }
27
-
28
- return {
29
- select: selectClause.split(/\s*,\s*/),
30
- };
31
- }
32
-
33
- export function handleInsert(query: string) {
34
- const match = query.match(/INSERT INTO ([\w\/]+)\s*\(([^)]+)\)\s*VALUES\s*\(([^)]+)\)/i);
35
- if (!match) throw new Error("Invalid INSERT syntax");
36
- const collection = match[1];
37
- const keys = match[2].split(/\s*,\s*/);
38
-
39
- function splitByCommasOutsideQuotes(str: string): string[] {
40
- const tokens: string[] = [];
41
- let current = '';
42
- let inSingleQuote = false;
43
- let inDoubleQuote = false;
44
-
45
- for (let i = 0; i < str.length; i++) {
46
- const char = str[i];
47
- if ((char === "'") && !inDoubleQuote) {
48
- inSingleQuote = !inSingleQuote;
49
- current += char;
50
- } else if (char === '"' && !inSingleQuote) {
51
- inDoubleQuote = !inDoubleQuote;
52
- current += char;
53
- } else if (char === ',' && !inSingleQuote && !inDoubleQuote) {
54
- tokens.push(current);
55
- current = '';
56
- } else {
57
- current += char;
58
- }
59
- }
60
- tokens.push(current);
61
- return tokens;
62
- }
63
-
64
- const rawValues = splitByCommasOutsideQuotes(match[3]);
65
- const values = rawValues.map(v => {
66
- v = v.trim();
67
- if (v.length >= 2) {
68
- if (v[0] === "'" && v[v.length - 1] === "'") {
69
- v = v.substring(1, v.length - 1);
70
- } else if (v[0] === '"' && v[v.length - 1] === '"') {
71
- v = v.substring(1, v.length - 1);
72
- }
73
- }
74
- return v;
75
- });
76
-
77
- if (keys.length !== values.length) throw new Error("Number of columns and values does not match");
78
- const data = Object.fromEntries(keys.map((k, i) => [k, isNaN(values[i] as any) ? values[i] : Number(values[i])]));
79
- return parseReturn("add", [collection, data]);
80
- }
81
-
82
- export function handleUpdate(query: string) {
83
- const match = query.match(/UPDATE\s+([\w\/]+)\s+SET\s+(.+)\s+WHERE\s+(.+)/i);
84
- if (!match) throw new Error("Invalid UPDATE syntax");
85
-
86
- const collection = match[1];
87
- const setClause = parseSet(match[2]);
88
- const whereClause = parseWhere(match[3]);
89
-
90
- return parseReturn("update", [collection, whereClause, setClause]);
91
- }
92
-
93
- export function handleDelete(query: string) {
94
- const match = query.match(/DELETE FROM ([\w\/]+)(?: WHERE (.+))?/i);
95
- if (!match) throw new Error("Invalid DELETE syntax");
96
-
97
- const collection = match[1];
98
- const whereClause = match[2] ? parseWhere(match[2]) : {};
99
-
100
- return parseReturn("remove", [collection, whereClause]);
101
- }
102
-
103
- // collection
104
- export function handleGet(query: string) {
105
- if (!/^GET\s+COLLECTIONS$/i.test(query)) {
106
- throw new Error("Invalid GET COLLECTIONS syntax.");
107
- }
108
- return parseReturn("getCollections", []);
109
- }
110
-
111
- export function handleCreate(query: string) {
112
- const match = query.match(
113
- /^CREATE\s+(?:TABLE|COLLECTION)\s+(IF\s+NOT\s+EXISTS\s+)?(\w+).*/i
114
- );
115
- if (!match) throw new Error("Invalid CREATE TABLE/COLLECTION syntax.");
116
- return parseReturn("ensureCollection", [match[2]]);
117
- }
118
-
119
- export function handleDrop(query: string) {
120
- const match = query.match(/^DROP\s+(?:TABLE|COLLECTION)\s+(?:IF\s+EXISTS\s+)?(\w+)$/i);
121
- if (!match) throw new Error("Invalid DROP TABLE/COLLECTION syntax.");
122
- return parseReturn("removeCollection", [match[1]]);
123
- }
124
-
125
- export function handleExists(query: string) {
126
- const match = query.match(/^EXISTS\s+(?:TABLE|COLLECTION)\s+(\w+)$/i);
127
- if (!match) throw new Error("Invalid EXISTS TABLE/COLLECTION syntax.");
128
- return parseReturn("issetCollection", [match[1]]);
129
- }
@@ -1 +0,0 @@
1
- <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>handleCreate | @wxn0brp/db-string-query</title><meta name="description" content="Documentation for @wxn0brp/db-string-query"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@wxn0brp/db-string-query</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="../modules/sql_handle.html">sql/handle</a></li><li><a href="" aria-current="page">handleCreate</a></li></ul><h1>Function handleCreate</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="handlecreate"><span class="tsd-kind-call-signature">handleCreate</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">query</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="../interfaces/types.ValtheraQuery.html" class="tsd-signature-type tsd-kind-interface">ValtheraQuery</a><a href="#handlecreate" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">query</span>: <span class="tsd-signature-type">string</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <a href="../interfaces/types.ValtheraQuery.html" class="tsd-signature-type tsd-kind-interface">ValtheraQuery</a></h4><aside class="tsd-sources"><ul><li>Defined in sql/handle.ts:111</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">@wxn0brp/db-string-query</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -1 +0,0 @@
1
- <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>handleDelete | @wxn0brp/db-string-query</title><meta name="description" content="Documentation for @wxn0brp/db-string-query"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@wxn0brp/db-string-query</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="../modules/sql_handle.html">sql/handle</a></li><li><a href="" aria-current="page">handleDelete</a></li></ul><h1>Function handleDelete</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="handledelete"><span class="tsd-kind-call-signature">handleDelete</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">query</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="../interfaces/types.ValtheraQuery.html" class="tsd-signature-type tsd-kind-interface">ValtheraQuery</a><a href="#handledelete" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">query</span>: <span class="tsd-signature-type">string</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <a href="../interfaces/types.ValtheraQuery.html" class="tsd-signature-type tsd-kind-interface">ValtheraQuery</a></h4><aside class="tsd-sources"><ul><li>Defined in sql/handle.ts:93</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">@wxn0brp/db-string-query</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>