@wxn0brp/db-string-query 0.0.7 → 0.0.8
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.
- package/.github/workflows/build.yml +18 -0
- package/CHANGELOG.md +31 -0
- package/bun.lock +115 -0
- package/dist/sql/where.js +51 -17
- package/dist/test/js.test.d.ts +1 -0
- package/dist/test/js.test.js +85 -0
- package/dist/test/sql/delete.test.d.ts +1 -0
- package/dist/test/sql/delete.test.js +79 -0
- package/dist/test/sql/insert.test.d.ts +1 -0
- package/dist/test/sql/insert.test.js +79 -0
- package/dist/test/sql/select.test.d.ts +1 -0
- package/dist/test/sql/select.test.js +59 -0
- package/dist/test/sql/update.test.d.ts +1 -0
- package/dist/test/sql/update.test.js +71 -0
- package/package.json +37 -40
- package/src/sql/where.ts +50 -17
- package/src/test/js.test.ts +103 -0
- package/src/test/sql/delete.test.ts +95 -0
- package/src/test/sql/insert.test.ts +95 -0
- package/src/test/sql/select.test.ts +71 -0
- package/src/test/sql/update.test.ts +85 -0
- package/suglite.json +2 -2
- package/typedocs-generated/.nojekyll +1 -0
- package/typedocs-generated/assets/hierarchy.js +1 -0
- package/typedocs-generated/assets/highlight.css +78 -0
- package/typedocs-generated/assets/icons.js +18 -0
- package/typedocs-generated/assets/icons.svg +1 -0
- package/typedocs-generated/assets/main.js +60 -0
- package/typedocs-generated/assets/navigation.js +1 -0
- package/typedocs-generated/assets/search.js +1 -0
- package/typedocs-generated/assets/style.css +1633 -0
- package/typedocs-generated/classes/js.default.html +3 -0
- package/typedocs-generated/classes/sql_index.default.html +3 -0
- package/typedocs-generated/functions/sql_handle.handleCreate.html +1 -0
- package/typedocs-generated/functions/sql_handle.handleDelete.html +1 -0
- package/typedocs-generated/functions/sql_handle.handleDrop.html +1 -0
- package/typedocs-generated/functions/sql_handle.handleExists.html +1 -0
- package/typedocs-generated/functions/sql_handle.handleGet.html +1 -0
- package/typedocs-generated/functions/sql_handle.handleInsert.html +1 -0
- package/typedocs-generated/functions/sql_handle.handleSelect.html +1 -0
- package/typedocs-generated/functions/sql_handle.handleUpdate.html +1 -0
- package/typedocs-generated/functions/sql_handle.parseSelectClause.html +1 -0
- package/typedocs-generated/functions/sql_utils.parseReturn.html +1 -0
- package/typedocs-generated/functions/sql_utils.parseSet.html +1 -0
- package/typedocs-generated/functions/sql_where.parseWhere.html +1 -0
- package/typedocs-generated/hierarchy.html +1 -0
- package/typedocs-generated/index.html +35 -0
- package/typedocs-generated/interfaces/types.ValtheraParser.html +2 -0
- package/typedocs-generated/interfaces/types.ValtheraQuery.html +3 -0
- package/typedocs-generated/media/LICENSE +21 -0
- package/typedocs-generated/modules/.html +1 -0
- package/typedocs-generated/modules/index.html +1 -0
- package/typedocs-generated/modules/js.html +1 -0
- package/typedocs-generated/modules/sql_handle.html +1 -0
- package/typedocs-generated/modules/sql_index.html +1 -0
- package/typedocs-generated/modules/sql_utils.html +1 -0
- package/typedocs-generated/modules/sql_where.html +1 -0
- package/typedocs-generated/modules/test_js.test.html +1 -0
- package/typedocs-generated/modules/test_sql_delete.test.html +1 -0
- package/typedocs-generated/modules/test_sql_insert.test.html +1 -0
- package/typedocs-generated/modules/test_sql_select.test.html +1 -0
- package/typedocs-generated/modules/test_sql_update.test.html +1 -0
- package/typedocs-generated/modules/types.html +1 -0
- package/typedocs-generated/modules.html +1 -0
- package/typedocs-generated/variables/.ValtheraDbParsers.html +1 -0
- package/typedocs-generated/variables/.ValtheraDbRelations.html +1 -0
|
@@ -14,8 +14,26 @@ concurrency:
|
|
|
14
14
|
cancel-in-progress: true
|
|
15
15
|
|
|
16
16
|
jobs:
|
|
17
|
+
test:
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
|
|
20
|
+
steps:
|
|
21
|
+
- name: Checkout code
|
|
22
|
+
uses: actions/checkout@v5
|
|
23
|
+
|
|
24
|
+
- uses: oven-sh/setup-bun@v2
|
|
25
|
+
with:
|
|
26
|
+
bun-version: latest
|
|
27
|
+
|
|
28
|
+
- name: Install dependencies
|
|
29
|
+
run: bun install
|
|
30
|
+
|
|
31
|
+
- name: Run unit tests
|
|
32
|
+
run: bun test
|
|
33
|
+
|
|
17
34
|
deploy:
|
|
18
35
|
runs-on: ubuntu-latest
|
|
36
|
+
needs: test
|
|
19
37
|
permissions:
|
|
20
38
|
contents: write
|
|
21
39
|
id-token: write
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
|
+
|
|
5
|
+
### 0.0.8 (2025-11-16)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* build workflow ([83e8e5e](https://github.com/wxn0brP/ValtheraDB-string-query/commit/83e8e5eed7ae027513248c2cb0e831fb2165312b))
|
|
11
|
+
* enhance sql engine and reorganize exports ([4afda95](https://github.com/wxn0brP/ValtheraDB-string-query/commit/4afda953b38eeb02644220a2eda548fdc824b249))
|
|
12
|
+
* exports ([c7354ec](https://github.com/wxn0brP/ValtheraDB-string-query/commit/c7354ec62bd443596d3edcefc9b8729a47f286be))
|
|
13
|
+
* imports ([0155739](https://github.com/wxn0brP/ValtheraDB-string-query/commit/01557398c8c77b9a66419ef40d7991d192e4636a))
|
|
14
|
+
* improve DROP command syntax handling ([ef9d942](https://github.com/wxn0brP/ValtheraDB-string-query/commit/ef9d9428918c8df7f42d1947b74ae523bed28a94))
|
|
15
|
+
* readme & small changes ([0df2679](https://github.com/wxn0brP/ValtheraDB-string-query/commit/0df2679c120daadd293a338e0c59ea8fa7cd88bf))
|
|
16
|
+
* simplify build and deploy workflow by using external template ([f8acd94](https://github.com/wxn0brP/ValtheraDB-string-query/commit/f8acd9429b25453262b1cd711b37524d139a56f1))
|
|
17
|
+
* **sql:** add collection handling methods for GET, CREATE, DROP, and EXISTS ([ea8b601](https://github.com/wxn0brP/ValtheraDB-string-query/commit/ea8b601a0c134f4309f5374be07819bbaf25c552))
|
|
18
|
+
* **sql:** check if where is null or "1" ([92008aa](https://github.com/wxn0brP/ValtheraDB-string-query/commit/92008aa0ecd42317f39fc8807b978dcb721f248a))
|
|
19
|
+
* **sql:** enhance query handling for CREATE, DROP, and EXISTS commands ([ad20f37](https://github.com/wxn0brP/ValtheraDB-string-query/commit/ad20f37676483bf4ffea65e49797aa5c08fd3d5a))
|
|
20
|
+
* types ([ed925aa](https://github.com/wxn0brP/ValtheraDB-string-query/commit/ed925aa5c195e323560fa25c47ee5f6e81a03fc3))
|
|
21
|
+
* types ([de6a23a](https://github.com/wxn0brP/ValtheraDB-string-query/commit/de6a23a2fe2037689ccaeab97ccad2c0c1d9e654))
|
|
22
|
+
* unit tests ([a88da49](https://github.com/wxn0brP/ValtheraDB-string-query/commit/a88da49b1f5277169cf198a824a9d9dc2038a96a))
|
|
23
|
+
* update parser to new db ([d61300a](https://github.com/wxn0brP/ValtheraDB-string-query/commit/d61300a0acdead9e8887e96cedd082ca68f87c5c))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Bug Fixes
|
|
27
|
+
|
|
28
|
+
* **sql:** ensure collection ([af3df0d](https://github.com/wxn0brP/ValtheraDB-string-query/commit/af3df0df7ae484b7bc9e7586887f002fc4677c3e))
|
|
29
|
+
* **sql:** improve regex for CREATE TABLE/COLLECTION command validation ([446ba29](https://github.com/wxn0brP/ValtheraDB-string-query/commit/446ba29e802fdd195d13e8b1fe91b0890aa67dc3))
|
|
30
|
+
* **sql:** insert ([97d393a](https://github.com/wxn0brP/ValtheraDB-string-query/commit/97d393a75b2bfa67aabe3aea60ef2e2e3378b5e5))
|
|
31
|
+
* where ([6e77c15](https://github.com/wxn0brP/ValtheraDB-string-query/commit/6e77c15c486fd9477d5579ba00ca5000785d868a))
|
package/bun.lock
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lockfileVersion": 1,
|
|
3
|
+
"configVersion": 1,
|
|
4
|
+
"workspaces": {
|
|
5
|
+
"": {
|
|
6
|
+
"name": "@wxn0brp/db-string-query",
|
|
7
|
+
"devDependencies": {
|
|
8
|
+
"@types/bun": "^1.3.2",
|
|
9
|
+
"@types/node": "*",
|
|
10
|
+
"json5": "^2.2.3",
|
|
11
|
+
"tsc-alias": "*",
|
|
12
|
+
"typescript": "*",
|
|
13
|
+
},
|
|
14
|
+
"peerDependencies": {
|
|
15
|
+
"json5": "^2.2.3",
|
|
16
|
+
},
|
|
17
|
+
"optionalPeers": [
|
|
18
|
+
"json5",
|
|
19
|
+
],
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
"packages": {
|
|
23
|
+
"@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="],
|
|
24
|
+
|
|
25
|
+
"@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="],
|
|
26
|
+
|
|
27
|
+
"@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="],
|
|
28
|
+
|
|
29
|
+
"@types/bun": ["@types/bun@1.3.2", "", { "dependencies": { "bun-types": "1.3.2" } }, "sha512-t15P7k5UIgHKkxwnMNkJbWlh/617rkDGEdSsDbu+qNHTaz9SKf7aC8fiIlUdD5RPpH6GEkP0cK7WlvmrEBRtWg=="],
|
|
30
|
+
|
|
31
|
+
"@types/node": ["@types/node@24.10.1", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ=="],
|
|
32
|
+
|
|
33
|
+
"@types/react": ["@types/react@19.2.5", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-keKxkZMqnDicuvFoJbzrhbtdLSPhj/rZThDlKWCDbgXmUg0rEUFtRssDXKYmtXluZlIqiC5VqkCgRwzuyLHKHw=="],
|
|
34
|
+
|
|
35
|
+
"anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="],
|
|
36
|
+
|
|
37
|
+
"array-union": ["array-union@2.1.0", "", {}, "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="],
|
|
38
|
+
|
|
39
|
+
"binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="],
|
|
40
|
+
|
|
41
|
+
"braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],
|
|
42
|
+
|
|
43
|
+
"bun-types": ["bun-types@1.3.2", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-i/Gln4tbzKNuxP70OWhJRZz1MRfvqExowP7U6JKoI8cntFrtxg7RJK3jvz7wQW54UuvNC8tbKHHri5fy74FVqg=="],
|
|
44
|
+
|
|
45
|
+
"chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="],
|
|
46
|
+
|
|
47
|
+
"commander": ["commander@9.5.0", "", {}, "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ=="],
|
|
48
|
+
|
|
49
|
+
"csstype": ["csstype@3.2.1", "", {}, "sha512-98XGutrXoh75MlgLihlNxAGbUuFQc7l1cqcnEZlLNKc0UrVdPndgmaDmYTDDh929VS/eqTZV0rozmhu2qqT1/g=="],
|
|
50
|
+
|
|
51
|
+
"dir-glob": ["dir-glob@3.0.1", "", { "dependencies": { "path-type": "^4.0.0" } }, "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="],
|
|
52
|
+
|
|
53
|
+
"fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="],
|
|
54
|
+
|
|
55
|
+
"fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="],
|
|
56
|
+
|
|
57
|
+
"fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],
|
|
58
|
+
|
|
59
|
+
"fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
|
|
60
|
+
|
|
61
|
+
"get-tsconfig": ["get-tsconfig@4.13.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ=="],
|
|
62
|
+
|
|
63
|
+
"glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
|
|
64
|
+
|
|
65
|
+
"globby": ["globby@11.1.0", "", { "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" } }, "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g=="],
|
|
66
|
+
|
|
67
|
+
"ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="],
|
|
68
|
+
|
|
69
|
+
"is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="],
|
|
70
|
+
|
|
71
|
+
"is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
|
|
72
|
+
|
|
73
|
+
"is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
|
|
74
|
+
|
|
75
|
+
"is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],
|
|
76
|
+
|
|
77
|
+
"json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="],
|
|
78
|
+
|
|
79
|
+
"merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="],
|
|
80
|
+
|
|
81
|
+
"micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="],
|
|
82
|
+
|
|
83
|
+
"mylas": ["mylas@2.1.14", "", {}, "sha512-BzQguy9W9NJgoVn2mRWzbFrFWWztGCcng2QI9+41frfk+Athwgx3qhqhvStz7ExeUUu7Kzw427sNzHpEZNINog=="],
|
|
84
|
+
|
|
85
|
+
"normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="],
|
|
86
|
+
|
|
87
|
+
"path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="],
|
|
88
|
+
|
|
89
|
+
"picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
|
|
90
|
+
|
|
91
|
+
"plimit-lit": ["plimit-lit@1.6.1", "", { "dependencies": { "queue-lit": "^1.5.1" } }, "sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA=="],
|
|
92
|
+
|
|
93
|
+
"queue-lit": ["queue-lit@1.5.2", "", {}, "sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw=="],
|
|
94
|
+
|
|
95
|
+
"queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="],
|
|
96
|
+
|
|
97
|
+
"readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="],
|
|
98
|
+
|
|
99
|
+
"resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="],
|
|
100
|
+
|
|
101
|
+
"reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="],
|
|
102
|
+
|
|
103
|
+
"run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="],
|
|
104
|
+
|
|
105
|
+
"slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="],
|
|
106
|
+
|
|
107
|
+
"to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],
|
|
108
|
+
|
|
109
|
+
"tsc-alias": ["tsc-alias@1.8.16", "", { "dependencies": { "chokidar": "^3.5.3", "commander": "^9.0.0", "get-tsconfig": "^4.10.0", "globby": "^11.0.4", "mylas": "^2.1.9", "normalize-path": "^3.0.0", "plimit-lit": "^1.2.6" }, "bin": { "tsc-alias": "dist/bin/index.js" } }, "sha512-QjCyu55NFyRSBAl6+MTFwplpFcnm2Pq01rR/uxfqJoLMm6X3O14KEGtaSDZpJYaE1bJBGDjD0eSuiIWPe2T58g=="],
|
|
110
|
+
|
|
111
|
+
"typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
|
|
112
|
+
|
|
113
|
+
"undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
|
|
114
|
+
}
|
|
115
|
+
}
|
package/dist/sql/where.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const operators = {
|
|
2
|
-
"=":
|
|
2
|
+
"=": null,
|
|
3
3
|
"<": "$lt",
|
|
4
4
|
">": "$gt",
|
|
5
5
|
"<=": "$lte",
|
|
@@ -8,6 +8,29 @@ const operators = {
|
|
|
8
8
|
"IN": "$in",
|
|
9
9
|
"NOT IN": "$nin"
|
|
10
10
|
};
|
|
11
|
+
function mergeQueries(target, source) {
|
|
12
|
+
for (const key in source) {
|
|
13
|
+
if (key.startsWith('$')) {
|
|
14
|
+
// If the key is an operator, simply add it
|
|
15
|
+
target[key] = source[key];
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
// If the key is a field, check if there is not already an operator in the target
|
|
19
|
+
if (target[key] !== undefined) {
|
|
20
|
+
// If target[key] is an object with an operator, merge the objects
|
|
21
|
+
if (typeof target[key] === 'object' && !Array.isArray(target[key])) {
|
|
22
|
+
Object.assign(target[key], source[key]);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
target[key] = source[key];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
target[key] = source[key];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
11
34
|
export function parseWhere(where) {
|
|
12
35
|
if (!where)
|
|
13
36
|
return {};
|
|
@@ -55,15 +78,21 @@ export function parseWhere(where) {
|
|
|
55
78
|
current = groupedQuery;
|
|
56
79
|
}
|
|
57
80
|
else if (op === "AND") {
|
|
58
|
-
|
|
81
|
+
const newCurrent = {};
|
|
82
|
+
mergeQueries(newCurrent, parentCurrent);
|
|
83
|
+
mergeQueries(newCurrent, groupedQuery);
|
|
84
|
+
current = newCurrent;
|
|
59
85
|
}
|
|
60
86
|
}
|
|
61
87
|
else {
|
|
62
|
-
|
|
88
|
+
const newCurrent = {};
|
|
89
|
+
mergeQueries(newCurrent, parentCurrent);
|
|
90
|
+
mergeQueries(newCurrent, groupedQuery);
|
|
91
|
+
current = newCurrent;
|
|
63
92
|
}
|
|
64
93
|
// Restore parent's stack and operator stack
|
|
65
94
|
operatorStack = parentFrame.operatorStack;
|
|
66
|
-
stack =
|
|
95
|
+
stack = parentFrame.stack;
|
|
67
96
|
}
|
|
68
97
|
else if (token.toUpperCase() === "AND" || token.toUpperCase() === "OR") {
|
|
69
98
|
operatorStack.push(token.toUpperCase());
|
|
@@ -79,10 +108,10 @@ export function parseWhere(where) {
|
|
|
79
108
|
}
|
|
80
109
|
}
|
|
81
110
|
let key = token;
|
|
82
|
-
let
|
|
111
|
+
let opToken = tokens[++i]?.trim();
|
|
83
112
|
let value = tokens[++i]?.trim();
|
|
84
|
-
if (!key || !
|
|
85
|
-
throw new Error(`Invalid condition near '${key} ${
|
|
113
|
+
if (!key || !opToken || value === undefined) {
|
|
114
|
+
throw new Error(`Invalid condition near '${key} ${opToken} ${value}'`);
|
|
86
115
|
}
|
|
87
116
|
// Handle quoted values
|
|
88
117
|
if ((value.startsWith("'") && value.endsWith("'")) || (value.startsWith('"') && value.endsWith('"'))) {
|
|
@@ -93,9 +122,9 @@ export function parseWhere(where) {
|
|
|
93
122
|
value = Number(value);
|
|
94
123
|
}
|
|
95
124
|
// Handle IN and NOT IN operations
|
|
96
|
-
if (
|
|
125
|
+
if (opToken.toUpperCase() === "IN" || opToken.toUpperCase() === "NOT IN") {
|
|
97
126
|
if (!value.startsWith("(") || !value.endsWith(")")) {
|
|
98
|
-
throw new Error(`Invalid syntax for '${
|
|
127
|
+
throw new Error(`Invalid syntax for '${opToken}' near '${value}'`);
|
|
99
128
|
}
|
|
100
129
|
value = value.slice(1, -1).split(",").map((v) => {
|
|
101
130
|
v = v.trim();
|
|
@@ -105,18 +134,23 @@ export function parseWhere(where) {
|
|
|
105
134
|
return isNaN(Number(v)) ? v : Number(v);
|
|
106
135
|
});
|
|
107
136
|
}
|
|
108
|
-
// Map the operator to
|
|
109
|
-
const mappedOp = operators[
|
|
110
|
-
if (mappedOp) {
|
|
111
|
-
if (mappedOp ===
|
|
112
|
-
|
|
137
|
+
// Map the operator to the query operators
|
|
138
|
+
const mappedOp = operators[opToken.toUpperCase()];
|
|
139
|
+
if (mappedOp !== undefined) {
|
|
140
|
+
if (mappedOp === null) {
|
|
141
|
+
// "=" operator - direct assignment
|
|
142
|
+
current[key] = value;
|
|
113
143
|
}
|
|
114
144
|
else {
|
|
115
|
-
|
|
116
|
-
current[
|
|
145
|
+
// Other operators - they go to the root level
|
|
146
|
+
if (!current[mappedOp]) {
|
|
147
|
+
current[mappedOp] = {};
|
|
148
|
+
}
|
|
149
|
+
current[mappedOp][key] = value;
|
|
117
150
|
}
|
|
118
151
|
}
|
|
119
152
|
else {
|
|
153
|
+
// If operator not found, default to direct assignment
|
|
120
154
|
current[key] = value;
|
|
121
155
|
}
|
|
122
156
|
}
|
|
@@ -128,4 +162,4 @@ export function parseWhere(where) {
|
|
|
128
162
|
}
|
|
129
163
|
return current;
|
|
130
164
|
}
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hlcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3FsL3doZXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sU0FBUyxHQUEyQjtJQUN0QyxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxLQUFLO0lBQ1YsR0FBRyxFQUFFLEtBQUs7SUFDVixJQUFJLEVBQUUsTUFBTTtJQUNaLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsS0FBSztJQUNYLFFBQVEsRUFBRSxNQUFNO0NBQ25CLENBQUM7QUFFRixTQUFTLFlBQVksQ0FBQyxNQUFtQixFQUFFLE1BQW1CO0lBQzFELEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7UUFDdkIsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEIsMkNBQTJDO1lBQzNDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsQ0FBQzthQUFNLENBQUM7WUFDSixpRkFBaUY7WUFDakYsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzVCLGtFQUFrRTtnQkFDbEUsSUFBSSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ2pFLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO3FCQUFNLENBQUM7b0JBQ0osTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDOUIsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
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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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,79 @@
|
|
|
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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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,79 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC9zcWwvaW5zZXJ0LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUUxQyxNQUFNLFNBQVMsR0FBRyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDO0FBRTlDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7SUFDcEMsSUFBSSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtRQUMvQyxNQUFNLEtBQUssR0FBRyxxRUFBcUUsQ0FBQztRQUNwRixNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDhCQUE4QjtRQUN0RSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGtCQUFrQjtRQUM3RCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU87SUFDMUYsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMs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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|