change import to type, import actually entity later, speedup database test with bun

This commit is contained in:
einhornimmond 2025-11-22 12:40:05 +01:00
parent 5ca09f804a
commit 54c7f70976
16 changed files with 158 additions and 141 deletions

View File

@ -1,5 +1,6 @@
{
"lockfileVersion": 1,
"configVersion": 0,
"workspaces": {
"": {
"name": "gradido",
@ -213,7 +214,7 @@
},
"database": {
"name": "database",
"version": "2.7.1",
"version": "2.7.0",
"dependencies": {
"@types/uuid": "^8.3.4",
"cross-env": "^7.0.3",
@ -221,9 +222,10 @@
"dotenv": "^10.0.0",
"esbuild": "^0.25.2",
"geojson": "^0.5.0",
"ioredis": "^5.8.2",
"log4js": "^6.9.1",
"mysql": "^2.18.1",
"mysql2": "^2.3.0",
"mysql2": "^3.15.3",
"reflect-metadata": "^0.1.13",
"shared": "*",
"source-map-support": "^0.5.21",
@ -250,7 +252,6 @@
"ts-jest": "27.0.5",
"ts-node": "^10.9.2",
"typescript": "^4.9.5",
"vitest": "^2.0.5",
},
},
"dht-node": {
@ -774,6 +775,8 @@
"@intlify/vue-i18n-extensions": ["@intlify/vue-i18n-extensions@8.0.0", "", { "dependencies": { "@babel/parser": "^7.24.6", "@intlify/shared": "^10.0.0", "@vue/compiler-dom": "^3.2.45", "vue-i18n": "^10.0.0" }, "peerDependencies": { "vue": "^3.0.0" }, "optionalPeers": ["vue"] }, "sha512-w0+70CvTmuqbskWfzeYhn0IXxllr6mU+IeM2MU0M+j9OW64jkrvqY+pYFWrUnIIC9bEdij3NICruicwd5EgUuQ=="],
"@ioredis/commands": ["@ioredis/commands@1.4.0", "", {}, "sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ=="],
"@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="],
"@isaacs/brace-expansion": ["@isaacs/brace-expansion@5.0.0", "", { "dependencies": { "@isaacs/balanced-match": "^4.0.1" } }, "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA=="],
@ -1594,6 +1597,8 @@
"await-semaphore": ["await-semaphore@0.1.3", "", {}, "sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q=="],
"aws-ssl-profiles": ["aws-ssl-profiles@1.1.2", "", {}, "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g=="],
"axios": ["axios@0.21.4", "", { "dependencies": { "follow-redirects": "^1.14.0" } }, "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg=="],
"b4a": ["b4a@1.7.3", "", { "peerDependencies": { "react-native-b4a": "*" }, "optionalPeers": ["react-native-b4a"] }, "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q=="],
@ -1744,6 +1749,8 @@
"cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],
"cluster-key-slot": ["cluster-key-slot@1.1.2", "", {}, "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA=="],
"co": ["co@4.6.0", "", {}, "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ=="],
"collect-v8-coverage": ["collect-v8-coverage@1.0.3", "", {}, "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw=="],
@ -2322,7 +2329,7 @@
"i18n-locales": ["i18n-locales@0.0.5", "", { "dependencies": { "@ladjs/country-language": "^0.2.1" } }, "sha512-Kve1AHy6rqyfJHPy8MIvaKBKhHhHPXV+a/TgMkjp3UBhO3gfWR40ZQn8Xy7LI6g3FhmbvkFtv+GCZy6yvuyeHQ=="],
"iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
"iconv-lite": ["iconv-lite@0.7.0", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ=="],
"identity-obj-proxy": ["identity-obj-proxy@3.0.0", "", { "dependencies": { "harmony-reflect": "^1.4.6" } }, "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA=="],
@ -2354,6 +2361,8 @@
"internal-slot": ["internal-slot@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw=="],
"ioredis": ["ioredis@5.8.2", "", { "dependencies": { "@ioredis/commands": "1.4.0", "cluster-key-slot": "^1.1.0", "debug": "^4.3.4", "denque": "^2.1.0", "lodash.defaults": "^4.2.0", "lodash.isarguments": "^3.1.0", "redis-errors": "^1.2.0", "redis-parser": "^3.0.0", "standard-as-callback": "^2.1.0" } }, "sha512-C6uC+kleiIMmjViJINWk80sOQw5lEzse1ZmvD+S/s8p8CWapftSaC+kocGTx6xrbrJ4WmYQGC08ffHLr6ToR6Q=="],
"ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="],
"is-array-buffer": ["is-array-buffer@3.0.5", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A=="],
@ -2638,8 +2647,12 @@
"lodash.clonedeep": ["lodash.clonedeep@4.5.0", "", {}, "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="],
"lodash.defaults": ["lodash.defaults@4.2.0", "", {}, "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ=="],
"lodash.get": ["lodash.get@4.4.2", "", {}, "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="],
"lodash.isarguments": ["lodash.isarguments@3.1.0", "", {}, "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg=="],
"lodash.memoize": ["lodash.memoize@4.1.2", "", {}, "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag=="],
"lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="],
@ -2652,7 +2665,7 @@
"loglevel": ["loglevel@1.9.2", "", {}, "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg=="],
"long": ["long@4.0.0", "", {}, "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="],
"long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="],
"loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="],
@ -2664,6 +2677,8 @@
"lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="],
"lru.min": ["lru.min@1.1.3", "", {}, "sha512-Lkk/vx6ak3rYkRR0Nhu4lFUT2VDnQSxBe8Hbl7f36358p6ow8Bnvr8lrLt98H8J1aGxfhbX4Fs5tYg2+FTwr5Q=="],
"magic-string": ["magic-string@0.30.19", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw=="],
"magicast": ["magicast@0.3.5", "", { "dependencies": { "@babel/parser": "^7.25.4", "@babel/types": "^7.25.4", "source-map-js": "^1.2.0" } }, "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ=="],
@ -2740,7 +2755,7 @@
"mysql": ["mysql@2.18.1", "", { "dependencies": { "bignumber.js": "9.0.0", "readable-stream": "2.3.7", "safe-buffer": "5.1.2", "sqlstring": "2.3.1" } }, "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig=="],
"mysql2": ["mysql2@2.3.3", "", { "dependencies": { "denque": "^2.0.1", "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", "long": "^4.0.0", "lru-cache": "^6.0.0", "named-placeholders": "^1.1.2", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" } }, "sha512-wxJUev6LgMSgACDkb/InIFxDprRa6T95+VEoR+xPvtngtccNH2dGjEB/fVZ8yg1gWv1510c9CvXuJHi5zUm0ZA=="],
"mysql2": ["mysql2@3.15.3", "", { "dependencies": { "aws-ssl-profiles": "^1.1.1", "denque": "^2.1.0", "generate-function": "^2.3.1", "iconv-lite": "^0.7.0", "long": "^5.2.1", "lru.min": "^1.0.0", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" } }, "sha512-FBrGau0IXmuqg4haEZRBfHNWB5mUARw6hNwPDXXGg0XzVJ50mr/9hb267lvpVMnhZ1FON3qNd4Xfcez1rbFwSg=="],
"named-placeholders": ["named-placeholders@1.1.3", "", { "dependencies": { "lru-cache": "^7.14.1" } }, "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w=="],
@ -3036,6 +3051,10 @@
"record-cache": ["record-cache@1.2.0", "", { "dependencies": { "b4a": "^1.3.1" } }, "sha512-kyy3HWCez2WrotaL3O4fTn0rsIdfRKOdQQcEJ9KpvmKmbffKVvwsloX063EgRUlpJIXHiDQFhJcTbZequ2uTZw=="],
"redis-errors": ["redis-errors@1.2.0", "", {}, "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w=="],
"redis-parser": ["redis-parser@3.0.0", "", { "dependencies": { "redis-errors": "^1.0.0" } }, "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A=="],
"reflect-metadata": ["reflect-metadata@0.1.14", "", {}, "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A=="],
"reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="],
@ -3202,6 +3221,8 @@
"stackback": ["stackback@0.0.2", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="],
"standard-as-callback": ["standard-as-callback@2.1.0", "", {}, "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A=="],
"statuses": ["statuses@2.0.1", "", {}, "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="],
"std-env": ["std-env@3.10.0", "", {}, "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg=="],
@ -3636,6 +3657,8 @@
"@apollo/protobufjs/@types/node": ["@types/node@10.17.60", "", {}, "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw=="],
"@apollo/protobufjs/long": ["long@4.0.0", "", {}, "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="],
"@apollographql/graphql-upload-8-fork/http-errors": ["http-errors@1.8.1", "", { "dependencies": { "depd": "~1.1.2", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": ">= 1.5.0 < 2", "toidentifier": "1.0.1" } }, "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g=="],
"@asamuzakjp/css-color/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
@ -4076,14 +4099,14 @@
"juice/commander": ["commander@6.2.1", "", {}, "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA=="],
"libmime/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
"local-pkg/pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="],
"loose-envify/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="],
"mailparser/html-to-text": ["html-to-text@9.0.5", "", { "dependencies": { "@selderee/plugin-htmlparser2": "^0.11.0", "deepmerge": "^4.3.1", "dom-serializer": "^2.0.0", "htmlparser2": "^8.0.2", "selderee": "^0.11.0" } }, "sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg=="],
"mailparser/iconv-lite": ["iconv-lite@0.7.0", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ=="],
"mailparser/nodemailer": ["nodemailer@7.0.9", "", {}, "sha512-9/Qm0qXIByEP8lEV2qOqcAW7bRpL8CR9jcTwk3NBnHJNmP9fIJ86g2fgmIXqHY+nj55ZEMwWqYAT2QTDpRUYiQ=="],
"micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
@ -4282,6 +4305,8 @@
"webpack/eslint-scope": ["eslint-scope@5.1.1", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw=="],
"whatwg-encoding/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
"which-builtin-type/isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="],
"wkx/@types/node": ["@types/node@18.19.130", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg=="],

2
database/bunfig.toml Normal file
View File

@ -0,0 +1,2 @@
[test]
preload = ["../config-schema/test/testSetup.bun.ts"]

View File

@ -1,6 +1,6 @@
{
"name": "database",
"version": "2.7.1",
"version": "2.7.0",
"description": "Gradido Database Tool to execute database migrations",
"main": "./build/index.js",
"types": "./src/index.ts",
@ -15,13 +15,13 @@
"license": "Apache-2.0",
"private": true,
"scripts": {
"build": "tsx ./esbuild.config.ts",
"build": "bun ./esbuild.config.ts",
"typecheck": "tsc --noEmit",
"lint": "biome check --error-on-warnings .",
"lint:fix": "biome check --error-on-warnings . --write",
"clearDB": "cross-env TZ=UTC tsx migration/index.ts clear",
"test": "cross-env TZ=UTC NODE_ENV=development DB_DATABASE=gradido_test vitest --reporter verbose --no-file-parallelism run",
"test:debug": "cross-env TZ=UTC NODE_ENV=development DB_DATABASE=gradido_test node --inspect-brk node_modules/.bin/jest --bail --runInBand --forceExit --detectOpenHandles",
"test": "cross-env TZ=UTC NODE_ENV=development DB_DATABASE=gradido_test bun test",
"test:debug": "cross-env TZ=UTC NODE_ENV=development DB_DATABASE=gradido_test bun test --inspect-brk",
"up": "cross-env TZ=UTC tsx migration/index.ts up",
"down": "cross-env TZ=UTC tsx migration/index.ts down",
"reset": "cross-env TZ=UTC tsx migration/index.ts reset",
@ -39,16 +39,12 @@
"@swc/helpers": "^0.5.17",
"@types/faker": "^5.5.9",
"@types/geojson": "^7946.0.13",
"@types/jest": "27.0.2",
"@types/mysql": "^2.15.27",
"@types/node": "^18.7.14",
"await-semaphore": "^0.1.3",
"crypto-random-bigint": "^2.1.1",
"jest": "27.2.4",
"ts-jest": "27.0.5",
"ts-node": "^10.9.2",
"typescript": "^4.9.5",
"vitest": "^2.0.5"
"typescript": "^4.9.5"
},
"dependencies": {
"@types/uuid": "^8.3.4",
@ -59,7 +55,7 @@
"geojson": "^0.5.0",
"log4js": "^6.9.1",
"mysql": "^2.18.1",
"mysql2": "^2.3.0",
"mysql2": "^3.15.3",
"reflect-metadata": "^0.1.13",
"shared": "*",
"source-map-support": "^0.5.21",

View File

@ -3,14 +3,14 @@ import {
Column,
CreateDateColumn,
Entity,
Geometry,
type Geometry,
JoinColumn,
OneToMany,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from 'typeorm'
import { FederatedCommunity } from './FederatedCommunity'
import { User } from './User'
import { type FederatedCommunity as FederatedCommunityType } from './FederatedCommunity'
import { type User as UserType } from './User'
import { GeometryTransformer } from './transformer/GeometryTransformer'
@Entity('communities')
@ -95,16 +95,16 @@ export class Community extends BaseEntity {
updatedAt: Date | null
@OneToMany(
() => User,
(user) => user.community,
() => require('./User').User,
(user: UserType) => user.community,
)
@JoinColumn({ name: 'community_uuid', referencedColumnName: 'communityUuid' })
users: User[]
users: UserType[]
@OneToMany(
() => FederatedCommunity,
(federatedCommunity) => federatedCommunity.community,
() => require('./FederatedCommunity').FederatedCommunity,
(federatedCommunity: FederatedCommunityType) => federatedCommunity.community,
)
@JoinColumn({ name: 'public_key', referencedColumnName: 'publicKey' })
federatedCommunities?: FederatedCommunity[]
federatedCommunities?: FederatedCommunityType[]
}

View File

@ -10,9 +10,9 @@ import {
OneToOne,
PrimaryGeneratedColumn,
} from 'typeorm'
import { ContributionMessage } from './ContributionMessage'
import { Transaction } from './Transaction'
import { User } from './User'
import { type ContributionMessage as ContributionMessageType } from './ContributionMessage'
import { type Transaction as TransactionType } from './Transaction'
import { type User as UserType } from './User'
import { DecimalTransformer } from './transformer/DecimalTransformer'
@Entity('contributions')
@ -24,11 +24,11 @@ export class Contribution extends BaseEntity {
userId: number
@ManyToOne(
() => User,
(user) => user.contributions,
() => require('./User').User,
(user: UserType) => user.contributions,
)
@JoinColumn({ name: 'user_id' })
user: User
user: UserType
@Column({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP', name: 'created_at' })
createdAt: Date
@ -103,16 +103,16 @@ export class Contribution extends BaseEntity {
deletedBy: number
@OneToMany(
() => ContributionMessage,
(message) => message.contribution,
() => require('./ContributionMessage').ContributionMessage,
(message: ContributionMessageType) => message.contribution,
)
@JoinColumn({ name: 'contribution_id' })
messages?: ContributionMessage[]
messages?: ContributionMessageType[]
@OneToOne(
() => Transaction,
(transaction) => transaction.contribution,
() => require('./Transaction').Transaction,
(transaction: TransactionType) => transaction.contribution,
)
@JoinColumn({ name: 'transaction_id' })
transaction?: Transaction | null
transaction?: TransactionType | null
}

View File

@ -10,8 +10,8 @@ import {
PrimaryGeneratedColumn,
UpdateDateColumn,
} from 'typeorm'
import { Contribution } from './Contribution'
import { User } from './User'
import { type Contribution as ContributionType } from './Contribution'
import { type User as UserType } from './User'
@Entity('contribution_messages', {
engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci',
@ -25,21 +25,21 @@ export class ContributionMessage extends BaseEntity {
contributionId: number
@ManyToOne(
() => Contribution,
(contribution) => contribution.messages,
() => require('./Contribution').Contribution,
(contribution: ContributionType) => contribution.messages,
)
@JoinColumn({ name: 'contribution_id' })
contribution: Contribution
contribution: ContributionType
@Column({ name: 'user_id', type: 'bigint', unsigned: true, nullable: false })
userId: number
@ManyToOne(
() => User,
(user) => user.messages,
() => require('./User').User,
(user: UserType) => user.messages,
)
@JoinColumn({ name: 'user_id' })
user: User
user: UserType
@Column({ type: 'varchar', length: 2000, nullable: false, collation: 'utf8mb4_unicode_ci' })
message: string

View File

@ -1,7 +1,7 @@
import { BaseEntity, Column, Entity, JoinColumn, OneToOne, PrimaryGeneratedColumn } from 'typeorm'
import { Transaction } from './Transaction'
import { TransactionLink } from './TransactionLink'
import { User } from './User'
import { type Transaction as TransactionType } from './Transaction'
import { type TransactionLink as TransactionLinkType } from './TransactionLink'
import { type User as UserType } from './User'
@Entity('dlt_transactions', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' })
export class DltTransaction extends BaseEntity {
@ -49,23 +49,23 @@ export class DltTransaction extends BaseEntity {
error: string | null
@OneToOne(
() => Transaction,
(transaction) => transaction.dltTransaction,
() => require('./Transaction').Transaction,
(transaction: TransactionType) => transaction.dltTransaction,
)
@JoinColumn({ name: 'transaction_id' })
transaction?: Transaction | null
transaction?: TransactionType | null
@OneToOne(
() => User,
(user) => user.dltTransaction,
() => require('./User').User,
(user: UserType) => user.dltTransaction,
)
@JoinColumn({ name: 'user_id' })
user?: User | null
user?: UserType | null
@OneToOne(
() => TransactionLink,
(transactionLink) => transactionLink.dltTransaction,
() => require('./TransactionLink').TransactionLink,
(transactionLink: TransactionLinkType) => transactionLink.dltTransaction,
)
@JoinColumn({ name: 'transaction_link_id' })
transactionLink?: TransactionLink | null
transactionLink?: TransactionLinkType | null
}

View File

@ -8,12 +8,12 @@ import {
ManyToOne,
PrimaryGeneratedColumn,
} from 'typeorm'
import { Contribution } from './Contribution'
import { ContributionLink } from './ContributionLink'
import { ContributionMessage } from './ContributionMessage'
import { Transaction } from './Transaction'
import { TransactionLink } from './TransactionLink'
import { User } from './User'
import { type Contribution as ContributionType } from './Contribution'
import { type ContributionLink as ContributionLinkType } from './ContributionLink'
import { type ContributionMessage as ContributionMessageType } from './ContributionMessage'
import { type Transaction as TransactionType } from './Transaction'
import { type TransactionLink as TransactionLinkType } from './TransactionLink'
import { type User as UserType } from './User'
import { DecimalTransformer } from './transformer/DecimalTransformer'
@Entity('events')
@ -36,37 +36,37 @@ export class Event extends BaseEntity {
@Column({ name: 'affected_user_id', type: 'bigint', unsigned: true, nullable: false })
affectedUserId: number
@ManyToOne(() => User)
@ManyToOne(() => require('./User').User)
@JoinColumn({ name: 'affected_user_id', referencedColumnName: 'id' })
affectedUser: User
affectedUser: UserType
@Column({ name: 'acting_user_id', type: 'bigint', unsigned: true, nullable: false })
actingUserId: number
@ManyToOne(() => User)
@ManyToOne(() => require('./User').User)
@JoinColumn({ name: 'acting_user_id', referencedColumnName: 'id' })
actingUser: User
actingUser: UserType
@Column({ name: 'involved_user_id', type: 'bigint', unsigned: true, nullable: true })
involvedUserId: number | null
@ManyToOne(() => User)
@ManyToOne(() => require('./User').User)
@JoinColumn({ name: 'involved_user_id', referencedColumnName: 'id' })
involvedUser: User | null
involvedUser: UserType | null
@Column({ name: 'involved_transaction_id', type: 'bigint', unsigned: true, nullable: true })
involvedTransactionId: number | null
@ManyToOne(() => Transaction)
@ManyToOne(() => require('./Transaction').Transaction)
@JoinColumn({ name: 'involved_transaction_id', referencedColumnName: 'id' })
involvedTransaction: Transaction | null
involvedTransaction: TransactionType | null
@Column({ name: 'involved_contribution_id', type: 'bigint', unsigned: true, nullable: true })
involvedContributionId: number | null
@ManyToOne(() => Contribution)
@ManyToOne(() => require('./Contribution').Contribution)
@JoinColumn({ name: 'involved_contribution_id', referencedColumnName: 'id' })
involvedContribution: Contribution | null
involvedContribution: ContributionType | null
@Column({
name: 'involved_contribution_message_id',
@ -76,23 +76,23 @@ export class Event extends BaseEntity {
})
involvedContributionMessageId: number | null
@ManyToOne(() => ContributionMessage)
@ManyToOne(() => require('./ContributionMessage').ContributionMessage)
@JoinColumn({ name: 'involved_contribution_message_id', referencedColumnName: 'id' })
involvedContributionMessage: ContributionMessage | null
involvedContributionMessage: ContributionMessageType | null
@Column({ name: 'involved_transaction_link_id', type: 'bigint', unsigned: true, nullable: true })
involvedTransactionLinkId: number | null
@ManyToOne(() => TransactionLink)
@ManyToOne(() => require('./TransactionLink').TransactionLink)
@JoinColumn({ name: 'involved_transaction_link_id', referencedColumnName: 'id' })
involvedTransactionLink: TransactionLink | null
involvedTransactionLink: TransactionLinkType | null
@Column({ name: 'involved_contribution_link_id', type: 'bigint', unsigned: true, nullable: true })
involvedContributionLinkId: number | null
@ManyToOne(() => ContributionLink)
@ManyToOne(() => require('./ContributionLink').ContributionLink)
@JoinColumn({ name: 'involved_contribution_link_id', referencedColumnName: 'id' })
involvedContributionLink: ContributionLink | null
involvedContributionLink: ContributionLinkType | null
@Column({
type: 'decimal',

View File

@ -9,10 +9,10 @@ import {
OneToOne,
PrimaryGeneratedColumn,
} from 'typeorm'
import { DltTransaction } from './DltTransaction'
import { Transaction } from './Transaction'
import { type DltTransaction as DltTransactionType } from './DltTransaction'
import { type Transaction as TransactionType } from './Transaction'
import { DecimalTransformer } from './transformer/DecimalTransformer'
import { User } from './User'
import { type User as UserType } from './User'
@Entity('transaction_links')
export class TransactionLink extends BaseEntity {
@ -72,23 +72,23 @@ export class TransactionLink extends BaseEntity {
redeemedBy: number | null
@OneToOne(
() => DltTransaction,
(dlt) => dlt.transactionLinkId,
() => require('./DltTransaction').DltTransaction,
(dlt: DltTransactionType) => dlt.transactionLinkId,
)
@JoinColumn({ name: 'id', referencedColumnName: 'transactionLinkId' })
dltTransaction?: DltTransaction | null
dltTransaction?: DltTransactionType | null
@OneToOne(
() => User,
(user) => user.transactionLink,
() => require('./User').User,
(user: UserType) => user.transactionLink,
)
@JoinColumn({ name: 'userId' })
user: User
user: UserType
@OneToMany(
() => Transaction,
(transaction) => transaction.transactionLink,
() => require('./Transaction').Transaction,
(transaction: TransactionType) => transaction.transactionLink,
)
@JoinColumn({ referencedColumnName: 'transaction_link_id' })
transactions: Transaction[]
transactions: TransactionType[]
}

View File

@ -3,20 +3,20 @@ import {
Column,
DeleteDateColumn,
Entity,
Geometry,
type Geometry,
JoinColumn,
ManyToOne,
OneToMany,
OneToOne,
PrimaryGeneratedColumn,
} from 'typeorm'
import { Community } from './Community'
import { Contribution } from './Contribution'
import { ContributionMessage } from './ContributionMessage'
import { DltTransaction } from './DltTransaction'
import { TransactionLink } from './TransactionLink'
import { UserContact } from './UserContact'
import { UserRole } from './UserRole'
import { type Community as CommunityType } from './Community'
import { type Contribution as ContributionType } from './Contribution'
import { type ContributionMessage as ContributionMessageType } from './ContributionMessage'
import { type DltTransaction as DltTransactionType } from './DltTransaction'
import { type TransactionLink as TransactionLinkType } from './TransactionLink'
import { type UserContact as UserContactType } from './UserContact'
import { type UserRole as UserRoleType } from './UserRole'
import { GeometryTransformer } from './transformer/GeometryTransformer'
@Entity('users', { engine: 'InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' })
@ -46,11 +46,11 @@ export class User extends BaseEntity {
communityUuid: string
@ManyToOne(
() => Community,
(community) => community.users,
() => require('./Community').Community,
(community: CommunityType) => community.users,
)
@JoinColumn({ name: 'community_uuid', referencedColumnName: 'communityUuid' })
community: Community | null
community: CommunityType | null
@Column({
name: 'alias',
@ -63,11 +63,11 @@ export class User extends BaseEntity {
alias: string
@OneToOne(
() => UserContact,
(emailContact: UserContact) => emailContact.user,
() => require('./UserContact').UserContact,
(emailContact: UserContactType) => emailContact.user,
)
@JoinColumn({ name: 'email_id' })
emailContact: UserContact
emailContact: UserContactType
@Column({ name: 'email_id', type: 'int', unsigned: true, nullable: true, default: null })
emailId: number | null
@ -138,11 +138,11 @@ export class User extends BaseEntity {
hideAmountGDT: boolean
@OneToMany(
() => UserRole,
(userRole) => userRole.user,
() => require('./UserRole').UserRole,
(userRole: UserRoleType) => userRole.user,
)
@JoinColumn({ name: 'user_id' })
userRoles: UserRole[]
userRoles: UserRoleType[]
@Column({ name: 'referrer_id', type: 'bigint', unsigned: true, nullable: true, default: null })
referrerId?: number | null
@ -196,37 +196,37 @@ export class User extends BaseEntity {
humhubAllowed: boolean
@OneToMany(
() => Contribution,
(contribution) => contribution.user,
() => require('./Contribution').Contribution,
(contribution: ContributionType) => contribution.user,
)
@JoinColumn({ name: 'user_id' })
contributions?: Contribution[]
contributions?: ContributionType[]
@OneToMany(
() => ContributionMessage,
(message) => message.user,
() => require('./ContributionMessage').ContributionMessage,
(message: ContributionMessageType) => message.user,
)
@JoinColumn({ name: 'user_id' })
messages?: ContributionMessage[]
messages?: ContributionMessageType[]
@OneToMany(
() => UserContact,
(userContact: UserContact) => userContact.user,
() => require('./UserContact').UserContact,
(userContact: UserContactType) => userContact.user,
)
@JoinColumn({ name: 'user_id' })
userContacts?: UserContact[]
userContacts?: UserContactType[]
@OneToOne(
() => DltTransaction,
(dlt) => dlt.userId,
() => require('./DltTransaction').DltTransaction,
(dlt: DltTransactionType) => dlt.userId,
)
@JoinColumn({ name: 'id', referencedColumnName: 'userId' })
dltTransaction?: DltTransaction | null
dltTransaction?: DltTransactionType | null
@OneToOne(
() => TransactionLink,
(transactionLink) => transactionLink.userId,
() => require('./TransactionLink').TransactionLink,
(transactionLink: TransactionLinkType) => transactionLink.userId,
)
@JoinColumn({ name: 'id', referencedColumnName: 'userId' })
transactionLink?: TransactionLink | null
transactionLink?: TransactionLinkType | null
}

View File

@ -1,4 +1,4 @@
import { Geometry } from 'geojson'
import { type Geometry } from 'geojson'
import { ValueTransformer } from 'typeorm/decorator/options/ValueTransformer'
import { Geometry as wkx_Geometry } from 'wkx'

View File

@ -1,7 +1,11 @@
import { Community as DbCommunity, FederatedCommunity as DbFederatedCommunity } from '..'
import { AppDatabase } from '../AppDatabase'
import { getCommunityByPublicKeyOrFail, getHomeCommunity, getHomeCommunityWithFederatedCommunityOrFail, getReachableCommunities } from './communities'
import { describe, expect, it, beforeEach, beforeAll, afterAll } from 'vitest'
import {
getCommunityByPublicKeyOrFail,
getHomeCommunity,
getHomeCommunityWithFederatedCommunityOrFail,
getReachableCommunities
} from './communities'
import { createCommunity, createVerifiedFederatedCommunity } from '../seeds/community'
import { Ed25519PublicKey } from 'shared'
@ -50,12 +54,12 @@ describe('community.queries', () => {
})
it('should throw if no home community exists', async () => {
expect(() => getHomeCommunityWithFederatedCommunityOrFail('1_0')).rejects.toThrow()
expect(getHomeCommunityWithFederatedCommunityOrFail('1_0')).rejects.toThrow()
})
it('should throw if no federated community exists', async () => {
await createCommunity(false)
expect(() => getHomeCommunityWithFederatedCommunityOrFail('1_0')).rejects.toThrow()
expect(getHomeCommunityWithFederatedCommunityOrFail('1_0')).rejects.toThrow()
})
it('load community by public key returned from getHomeCommunityWithFederatedCommunityOrFail', async () => {

View File

@ -6,7 +6,6 @@ import {
findPendingCommunityHandshake,
CommunityHandshakeStateType
} from '..'
import { describe, expect, it, beforeEach, beforeAll, afterAll } from 'vitest'
import { createCommunity, createVerifiedFederatedCommunity } from '../seeds/community'
import { Ed25519PublicKey } from 'shared'
import { randomBytes } from 'node:crypto'

View File

@ -13,7 +13,6 @@ import { bibiBloxberg } from '../seeds/users/bibi-bloxberg'
import { peterLustig } from '../seeds/users/peter-lustig'
import { bobBaumeister } from '../seeds/users/bob-baumeister'
import { garrickOllivander } from '../seeds/users/garrick-ollivander'
import { describe, expect, it, beforeAll, afterAll } from 'vitest'
import { createCommunity } from '../seeds/community'
import { v4 as uuidv4 } from 'uuid'
import Decimal from 'decimal.js-light'

View File

@ -3,11 +3,10 @@ import { AppDatabase } from '../AppDatabase'
import { aliasExists, findUserByIdentifier } from './user'
import { userFactory } from '../seeds/factory/user'
import { bibiBloxberg } from '../seeds/users/bibi-bloxberg'
import { describe, expect, it, beforeAll, afterAll, beforeEach, } from 'vitest'
import { createCommunity } from '../seeds/community'
import { peterLustig } from '../seeds/users/peter-lustig'
import { bobBaumeister } from '../seeds/users/bob-baumeister'
import { getLogger, printLogs, clearLogs } from '../../../config-schema/test/testSetup.vitest'
import { getLogger, printLogs, clearLogs } from '../../../config-schema/test/testSetup.bun'
import { LOG4JS_QUERIES_CATEGORY_NAME } from '.'
const db = AppDatabase.getInstance()

View File

@ -1,7 +0,0 @@
import { defineConfig } from 'vitest/config'
export default defineConfig({
test: {
setupFiles: '../config-schema/test/testSetup.vitest.ts',
},
})