fixed mongo
This commit is contained in:
parent
c172ecc6d3
commit
2437628591
5 changed files with 133 additions and 130 deletions
58
bun.lock
58
bun.lock
|
|
@ -10,7 +10,7 @@
|
||||||
"@testcontainers/mongodb": "^10.7.2",
|
"@testcontainers/mongodb": "^10.7.2",
|
||||||
"@testcontainers/postgresql": "^10.7.2",
|
"@testcontainers/postgresql": "^10.7.2",
|
||||||
"@types/bun": "latest",
|
"@types/bun": "latest",
|
||||||
"@types/node": "^20.12.12",
|
"@types/node": "^22.15.30",
|
||||||
"@types/supertest": "^6.0.2",
|
"@types/supertest": "^6.0.2",
|
||||||
"@types/yup": "^0.32.0",
|
"@types/yup": "^0.32.0",
|
||||||
"bun-types": "^1.2.15",
|
"bun-types": "^1.2.15",
|
||||||
|
|
@ -875,7 +875,7 @@
|
||||||
|
|
||||||
"@types/methods": ["@types/methods@1.1.4", "", {}, "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ=="],
|
"@types/methods": ["@types/methods@1.1.4", "", {}, "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ=="],
|
||||||
|
|
||||||
"@types/node": ["@types/node@20.19.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q=="],
|
"@types/node": ["@types/node@22.15.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA=="],
|
||||||
|
|
||||||
"@types/pg": ["@types/pg@8.15.4", "", { "dependencies": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" } }, "sha512-I6UNVBAoYbvuWkkU3oosC8yxqH21f4/Jc4DK71JLG3dT2mdlGe1z+ep/LQGXaKaOgcvUrsQoPRqfgtMcvZiJhg=="],
|
"@types/pg": ["@types/pg@8.15.4", "", { "dependencies": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" } }, "sha512-I6UNVBAoYbvuWkkU3oosC8yxqH21f4/Jc4DK71JLG3dT2mdlGe1z+ep/LQGXaKaOgcvUrsQoPRqfgtMcvZiJhg=="],
|
||||||
|
|
||||||
|
|
@ -2151,12 +2151,38 @@
|
||||||
|
|
||||||
"@parcel/watcher/node-addon-api": ["node-addon-api@7.1.1", "", {}, "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="],
|
"@parcel/watcher/node-addon-api": ["node-addon-api@7.1.1", "", {}, "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="],
|
||||||
|
|
||||||
"@stock-bot/execution-service/@types/node": ["@types/node@22.15.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA=="],
|
"@stock-bot/cache/@types/node": ["@types/node@20.19.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q=="],
|
||||||
|
|
||||||
"@stock-bot/portfolio-service/@types/node": ["@types/node@22.15.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA=="],
|
"@stock-bot/config/@types/node": ["@types/node@20.19.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q=="],
|
||||||
|
|
||||||
|
"@stock-bot/data-frame/@types/node": ["@types/node@20.19.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q=="],
|
||||||
|
|
||||||
|
"@stock-bot/event-bus/@types/node": ["@types/node@20.19.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q=="],
|
||||||
|
|
||||||
|
"@stock-bot/http/@types/node": ["@types/node@20.19.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q=="],
|
||||||
|
|
||||||
|
"@stock-bot/logger/@types/node": ["@types/node@20.19.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q=="],
|
||||||
|
|
||||||
|
"@stock-bot/mongodb-client/@types/node": ["@types/node@20.19.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q=="],
|
||||||
|
|
||||||
|
"@stock-bot/postgres-client/@types/node": ["@types/node@20.19.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q=="],
|
||||||
|
|
||||||
|
"@stock-bot/questdb-client/@types/node": ["@types/node@20.19.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q=="],
|
||||||
|
|
||||||
|
"@stock-bot/shutdown/@types/node": ["@types/node@20.19.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q=="],
|
||||||
|
|
||||||
|
"@stock-bot/strategy-engine/@types/node": ["@types/node@20.19.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q=="],
|
||||||
|
|
||||||
|
"@stock-bot/strategy-service/@types/node": ["@types/node@20.19.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q=="],
|
||||||
|
|
||||||
"@stock-bot/strategy-service/commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="],
|
"@stock-bot/strategy-service/commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="],
|
||||||
|
|
||||||
|
"@stock-bot/types/@types/node": ["@types/node@20.19.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q=="],
|
||||||
|
|
||||||
|
"@stock-bot/utils/@types/node": ["@types/node@20.19.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q=="],
|
||||||
|
|
||||||
|
"@stock-bot/vector-engine/@types/node": ["@types/node@20.19.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q=="],
|
||||||
|
|
||||||
"@tailwindcss/oxide/tar": ["tar@7.4.3", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.0.1", "mkdirp": "^3.0.1", "yallist": "^5.0.0" } }, "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw=="],
|
"@tailwindcss/oxide/tar": ["tar@7.4.3", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.0.1", "mkdirp": "^3.0.1", "yallist": "^5.0.0" } }, "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw=="],
|
||||||
|
|
||||||
"@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.4.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.0.2", "tslib": "^2.4.0" }, "bundled": true }, "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g=="],
|
"@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.4.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.0.2", "tslib": "^2.4.0" }, "bundled": true }, "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g=="],
|
||||||
|
|
@ -2173,22 +2199,6 @@
|
||||||
|
|
||||||
"@tufjs/models/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
|
"@tufjs/models/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
|
||||||
|
|
||||||
"@types/cors/@types/node": ["@types/node@22.15.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA=="],
|
|
||||||
|
|
||||||
"@types/docker-modem/@types/node": ["@types/node@22.15.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA=="],
|
|
||||||
|
|
||||||
"@types/dockerode/@types/node": ["@types/node@22.15.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA=="],
|
|
||||||
|
|
||||||
"@types/pg/@types/node": ["@types/node@22.15.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA=="],
|
|
||||||
|
|
||||||
"@types/ssh2/@types/node": ["@types/node@22.15.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA=="],
|
|
||||||
|
|
||||||
"@types/ssh2-streams/@types/node": ["@types/node@22.15.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA=="],
|
|
||||||
|
|
||||||
"@types/superagent/@types/node": ["@types/node@22.15.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA=="],
|
|
||||||
|
|
||||||
"@types/ws/@types/node": ["@types/node@22.15.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA=="],
|
|
||||||
|
|
||||||
"@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.3", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="],
|
"@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.3", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="],
|
||||||
|
|
||||||
"ajv-formats/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="],
|
"ajv-formats/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="],
|
||||||
|
|
@ -2207,8 +2217,6 @@
|
||||||
|
|
||||||
"body-parser/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="],
|
"body-parser/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="],
|
||||||
|
|
||||||
"bun-types/@types/node": ["@types/node@22.15.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA=="],
|
|
||||||
|
|
||||||
"cacache/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="],
|
"cacache/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="],
|
||||||
|
|
||||||
"cacache/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
|
"cacache/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
|
||||||
|
|
@ -2237,8 +2245,6 @@
|
||||||
|
|
||||||
"encoding/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
|
"encoding/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
|
||||||
|
|
||||||
"engine.io/@types/node": ["@types/node@22.15.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA=="],
|
|
||||||
|
|
||||||
"engine.io/debug": ["debug@4.3.7", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="],
|
"engine.io/debug": ["debug@4.3.7", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="],
|
||||||
|
|
||||||
"engine.io/ws": ["ws@8.17.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ=="],
|
"engine.io/ws": ["ws@8.17.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ=="],
|
||||||
|
|
@ -2323,8 +2329,6 @@
|
||||||
|
|
||||||
"properties-reader/mkdirp": ["mkdirp@1.0.4", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="],
|
"properties-reader/mkdirp": ["mkdirp@1.0.4", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="],
|
||||||
|
|
||||||
"protobufjs/@types/node": ["@types/node@22.15.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA=="],
|
|
||||||
|
|
||||||
"readdir-glob/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="],
|
"readdir-glob/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="],
|
||||||
|
|
||||||
"restore-cursor/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="],
|
"restore-cursor/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="],
|
||||||
|
|
@ -2519,8 +2523,6 @@
|
||||||
|
|
||||||
"@angular/compiler-cli/yargs/string-width/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="],
|
"@angular/compiler-cli/yargs/string-width/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="],
|
||||||
|
|
||||||
"mongodb-memory-server-core/mongodb/mongodb-connection-string-url/@types/whatwg-url/@types/node": ["@types/node@22.15.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA=="],
|
|
||||||
|
|
||||||
"mongodb-memory-server-core/mongodb/mongodb-connection-string-url/whatwg-url/tr46": ["tr46@3.0.0", "", { "dependencies": { "punycode": "^2.1.1" } }, "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA=="],
|
"mongodb-memory-server-core/mongodb/mongodb-connection-string-url/whatwg-url/tr46": ["tr46@3.0.0", "", { "dependencies": { "punycode": "^2.1.1" } }, "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA=="],
|
||||||
|
|
||||||
"pkg-dir/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="],
|
"pkg-dir/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="],
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,8 @@
|
||||||
"type-check": "tsc --noEmit",
|
"type-check": "tsc --noEmit",
|
||||||
"clean": "rimraf dist"
|
"clean": "rimraf dist"
|
||||||
},
|
},
|
||||||
"dependencies": { "@stock-bot/config": "*",
|
"dependencies": {
|
||||||
|
"@stock-bot/config": "*",
|
||||||
"@stock-bot/logger": "*",
|
"@stock-bot/logger": "*",
|
||||||
"@stock-bot/types": "*",
|
"@stock-bot/types": "*",
|
||||||
"mongodb": "^6.3.0",
|
"mongodb": "^6.3.0",
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ import type {
|
||||||
} from './types';
|
} from './types';
|
||||||
import { MongoDBHealthMonitor } from './health';
|
import { MongoDBHealthMonitor } from './health';
|
||||||
import { schemaMap } from './schemas';
|
import { schemaMap } from './schemas';
|
||||||
import { z } from 'zod';
|
import * as yup from 'yup';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MongoDB Client for Stock Bot
|
* MongoDB Client for Stock Bot
|
||||||
|
|
@ -147,15 +147,15 @@ export class MongoDBClient {
|
||||||
} as T; // Validate document if schema exists
|
} as T; // Validate document if schema exists
|
||||||
if (collectionName in schemaMap) {
|
if (collectionName in schemaMap) {
|
||||||
try {
|
try {
|
||||||
(schemaMap as any)[collectionName].parse(docWithTimestamps);
|
(schemaMap as any)[collectionName].validateSync(docWithTimestamps);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error instanceof z.ZodError) {
|
if (error instanceof yup.ValidationError) {
|
||||||
this.logger.error(`Document validation failed for ${collectionName}:`, error.errors);
|
this.logger.error(`Document validation failed for ${collectionName}:`, error.errors);
|
||||||
throw new Error(`Document validation failed: ${error.errors.map(e => e.message).join(', ')}`);
|
throw new Error(`Document validation failed: ${error.errors?.map(e => e).join(', ')}`);
|
||||||
}
|
}
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
} const result = await collection.insertOne(docWithTimestamps as OptionalUnlessRequiredId<T>);
|
}const result = await collection.insertOne(docWithTimestamps as OptionalUnlessRequiredId<T>);
|
||||||
return { ...docWithTimestamps, _id: result.insertedId } as T;
|
return { ...docWithTimestamps, _id: result.insertedId } as T;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,124 +1,124 @@
|
||||||
import * as yup from 'yup';
|
import * as yup from 'yup';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Zod Schemas for MongoDB Document Validation
|
* Yup Schemas for MongoDB Document Validation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Base schema for all documents
|
// Base schema for all documents
|
||||||
export const documentBaseSchema = z.object({
|
export const documentBaseSchema = yup.object({
|
||||||
_id: z.any().optional(),
|
_id: yup.mixed().optional(),
|
||||||
created_at: z.date(),
|
created_at: yup.date().required(),
|
||||||
updated_at: z.date(),
|
updated_at: yup.date().required(),
|
||||||
source: z.string(),
|
source: yup.string().required(),
|
||||||
metadata: z.record(z.any()).optional(),
|
metadata: yup.object().optional(),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Sentiment Data Schema
|
// Sentiment Data Schema
|
||||||
export const sentimentDataSchema = documentBaseSchema.extend({
|
export const sentimentDataSchema = documentBaseSchema.shape({
|
||||||
symbol: z.string().min(1).max(10),
|
symbol: yup.string().min(1).max(10).required(),
|
||||||
sentiment_score: z.number().min(-1).max(1),
|
sentiment_score: yup.number().min(-1).max(1).required(),
|
||||||
sentiment_label: z.enum(['positive', 'negative', 'neutral']),
|
sentiment_label: yup.string().oneOf(['positive', 'negative', 'neutral']).required(),
|
||||||
confidence: z.number().min(0).max(1),
|
confidence: yup.number().min(0).max(1).required(),
|
||||||
text: z.string().min(1),
|
text: yup.string().min(1).required(),
|
||||||
source_type: z.enum(['reddit', 'twitter', 'news', 'forums']),
|
source_type: yup.string().oneOf(['reddit', 'twitter', 'news', 'forums']).required(),
|
||||||
source_id: z.string(),
|
source_id: yup.string().required(),
|
||||||
timestamp: z.date(),
|
timestamp: yup.date().required(),
|
||||||
processed_at: z.date(),
|
processed_at: yup.date().required(),
|
||||||
language: z.string().default('en'),
|
language: yup.string().default('en'),
|
||||||
keywords: z.array(z.string()),
|
keywords: yup.array(yup.string()).required(),
|
||||||
entities: z.array(z.object({
|
entities: yup.array(yup.object({
|
||||||
name: z.string(),
|
name: yup.string().required(),
|
||||||
type: z.string(),
|
type: yup.string().required(),
|
||||||
confidence: z.number().min(0).max(1),
|
confidence: yup.number().min(0).max(1).required(),
|
||||||
})),
|
})).required(),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Raw Document Schema
|
// Raw Document Schema
|
||||||
export const rawDocumentSchema = documentBaseSchema.extend({
|
export const rawDocumentSchema = documentBaseSchema.shape({
|
||||||
document_type: z.enum(['html', 'pdf', 'text', 'json', 'xml']),
|
document_type: yup.string().oneOf(['html', 'pdf', 'text', 'json', 'xml']).required(),
|
||||||
content: z.string(),
|
content: yup.string().required(),
|
||||||
content_hash: z.string(),
|
content_hash: yup.string().required(),
|
||||||
url: z.string().url().optional(),
|
url: yup.string().url().optional(),
|
||||||
title: z.string().optional(),
|
title: yup.string().optional(),
|
||||||
author: z.string().optional(),
|
author: yup.string().optional(),
|
||||||
published_date: z.date().optional(),
|
published_date: yup.date().optional(),
|
||||||
extracted_text: z.string().optional(),
|
extracted_text: yup.string().optional(),
|
||||||
processing_status: z.enum(['pending', 'processed', 'failed']),
|
processing_status: yup.string().oneOf(['pending', 'processed', 'failed']).required(),
|
||||||
size_bytes: z.number().positive(),
|
size_bytes: yup.number().positive().required(),
|
||||||
language: z.string().optional(),
|
language: yup.string().optional(),
|
||||||
});
|
});
|
||||||
|
|
||||||
// News Article Schema
|
// News Article Schema
|
||||||
export const newsArticleSchema = documentBaseSchema.extend({
|
export const newsArticleSchema = documentBaseSchema.shape({
|
||||||
headline: z.string().min(1),
|
headline: yup.string().min(1).required(),
|
||||||
content: z.string().min(1),
|
content: yup.string().min(1).required(),
|
||||||
summary: z.string().optional(),
|
summary: yup.string().optional(),
|
||||||
author: z.string(),
|
author: yup.string().required(),
|
||||||
publication: z.string(),
|
publication: yup.string().required(),
|
||||||
published_date: z.date(),
|
published_date: yup.date().required(),
|
||||||
url: z.string().url(),
|
url: yup.string().url().required(),
|
||||||
symbols: z.array(z.string()),
|
symbols: yup.array(yup.string()).required(),
|
||||||
categories: z.array(z.string()),
|
categories: yup.array(yup.string()).required(),
|
||||||
sentiment_score: z.number().min(-1).max(1).optional(),
|
sentiment_score: yup.number().min(-1).max(1).optional(),
|
||||||
relevance_score: z.number().min(0).max(1).optional(),
|
relevance_score: yup.number().min(0).max(1).optional(),
|
||||||
image_url: z.string().url().optional(),
|
image_url: yup.string().url().optional(),
|
||||||
tags: z.array(z.string()),
|
tags: yup.array(yup.string()).required(),
|
||||||
});
|
});
|
||||||
|
|
||||||
// SEC Filing Schema
|
// SEC Filing Schema
|
||||||
export const secFilingSchema = documentBaseSchema.extend({
|
export const secFilingSchema = documentBaseSchema.shape({
|
||||||
cik: z.string(),
|
cik: yup.string().required(),
|
||||||
accession_number: z.string(),
|
accession_number: yup.string().required(),
|
||||||
filing_type: z.string(),
|
filing_type: yup.string().required(),
|
||||||
company_name: z.string(),
|
company_name: yup.string().required(),
|
||||||
symbols: z.array(z.string()),
|
symbols: yup.array(yup.string()).required(),
|
||||||
filing_date: z.date(),
|
filing_date: yup.date().required(),
|
||||||
period_end_date: z.date(),
|
period_end_date: yup.date().required(),
|
||||||
url: z.string().url(),
|
url: yup.string().url().required(),
|
||||||
content: z.string(),
|
content: yup.string().required(),
|
||||||
extracted_data: z.record(z.any()).optional(),
|
extracted_data: yup.object().optional(),
|
||||||
financial_statements: z.array(z.object({
|
financial_statements: yup.array(yup.object({
|
||||||
statement_type: z.string(),
|
statement_type: yup.string().required(),
|
||||||
data: z.record(z.number()),
|
data: yup.object().required(),
|
||||||
})).optional(),
|
})).optional(),
|
||||||
processing_status: z.enum(['pending', 'processed', 'failed']),
|
processing_status: yup.string().oneOf(['pending', 'processed', 'failed']).required(),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Earnings Transcript Schema
|
// Earnings Transcript Schema
|
||||||
export const earningsTranscriptSchema = documentBaseSchema.extend({
|
export const earningsTranscriptSchema = documentBaseSchema.shape({
|
||||||
symbol: z.string().min(1).max(10),
|
symbol: yup.string().min(1).max(10).required(),
|
||||||
company_name: z.string(),
|
company_name: yup.string().required(),
|
||||||
quarter: z.string(),
|
quarter: yup.string().required(),
|
||||||
year: z.number().min(2000).max(3000),
|
year: yup.number().min(2000).max(3000).required(),
|
||||||
call_date: z.date(),
|
call_date: yup.date().required(),
|
||||||
transcript: z.string(),
|
transcript: yup.string().required(),
|
||||||
participants: z.array(z.object({
|
participants: yup.array(yup.object({
|
||||||
name: z.string(),
|
name: yup.string().required(),
|
||||||
title: z.string(),
|
title: yup.string().required(),
|
||||||
type: z.enum(['executive', 'analyst']),
|
type: yup.string().oneOf(['executive', 'analyst']).required(),
|
||||||
})),
|
})).required(),
|
||||||
key_topics: z.array(z.string()),
|
key_topics: yup.array(yup.string()).required(),
|
||||||
sentiment_analysis: z.object({
|
sentiment_analysis: yup.object({
|
||||||
overall_sentiment: z.number().min(-1).max(1),
|
overall_sentiment: yup.number().min(-1).max(1).required(),
|
||||||
topic_sentiments: z.record(z.number()),
|
topic_sentiments: yup.object().required(),
|
||||||
}).optional(),
|
}).optional(),
|
||||||
financial_highlights: z.record(z.number()).optional(),
|
financial_highlights: yup.object().optional(),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Analyst Report Schema
|
// Analyst Report Schema
|
||||||
export const analystReportSchema = documentBaseSchema.extend({
|
export const analystReportSchema = documentBaseSchema.shape({
|
||||||
symbol: z.string().min(1).max(10),
|
symbol: yup.string().min(1).max(10).required(),
|
||||||
analyst_firm: z.string(),
|
analyst_firm: yup.string().required(),
|
||||||
analyst_name: z.string(),
|
analyst_name: yup.string().required(),
|
||||||
report_title: z.string(),
|
report_title: yup.string().required(),
|
||||||
report_date: z.date(),
|
report_date: yup.date().required(),
|
||||||
rating: z.enum(['buy', 'hold', 'sell', 'strong_buy', 'strong_sell']),
|
rating: yup.string().oneOf(['buy', 'hold', 'sell', 'strong_buy', 'strong_sell']).required(),
|
||||||
price_target: z.number().positive().optional(),
|
price_target: yup.number().positive().optional(),
|
||||||
previous_rating: z.string().optional(),
|
previous_rating: yup.string().optional(),
|
||||||
content: z.string(),
|
content: yup.string().required(),
|
||||||
summary: z.string(),
|
summary: yup.string().required(),
|
||||||
key_points: z.array(z.string()),
|
key_points: yup.array(yup.string()).required(),
|
||||||
financial_projections: z.record(z.number()).optional(),
|
financial_projections: yup.object().optional(),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Schema mapping for collections
|
// Schema mapping for collections
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@
|
||||||
"@testcontainers/mongodb": "^10.7.2",
|
"@testcontainers/mongodb": "^10.7.2",
|
||||||
"@testcontainers/postgresql": "^10.7.2",
|
"@testcontainers/postgresql": "^10.7.2",
|
||||||
"@types/bun": "latest",
|
"@types/bun": "latest",
|
||||||
"@types/node": "^20.12.12",
|
"@types/node": "^22.15.30",
|
||||||
"@types/supertest": "^6.0.2",
|
"@types/supertest": "^6.0.2",
|
||||||
"@types/yup": "^0.32.0",
|
"@types/yup": "^0.32.0",
|
||||||
"bun-types": "^1.2.15",
|
"bun-types": "^1.2.15",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue