From 54c7f70976448fc16fd33878f17d1e642e7262b0 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Sat, 22 Nov 2025 12:40:05 +0100 Subject: [PATCH] change import to type, import actually entity later, speedup database test with bun --- bun.lock | 41 +++++++++--- database/bunfig.toml | 2 + database/package.json | 16 ++--- database/src/entity/Community.ts | 18 +++--- database/src/entity/Contribution.ts | 24 +++---- database/src/entity/ContributionMessage.ts | 16 ++--- database/src/entity/DltTransaction.ts | 24 +++---- database/src/entity/Event.ts | 44 ++++++------- database/src/entity/TransactionLink.ts | 24 +++---- database/src/entity/User.ts | 64 +++++++++---------- .../entity/transformer/GeometryTransformer.ts | 2 +- database/src/queries/communities.test.ts | 12 ++-- .../src/queries/communityHandshakes.test.ts | 1 - .../src/queries/pendingTransactions.test.ts | 1 - database/src/queries/user.test.ts | 3 +- database/vitest.config.js | 7 -- 16 files changed, 158 insertions(+), 141 deletions(-) create mode 100644 database/bunfig.toml delete mode 100644 database/vitest.config.js diff --git a/bun.lock b/bun.lock index 7537ba4fb..0ac634ee8 100644 --- a/bun.lock +++ b/bun.lock @@ -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=="], diff --git a/database/bunfig.toml b/database/bunfig.toml new file mode 100644 index 000000000..6e74bf7ca --- /dev/null +++ b/database/bunfig.toml @@ -0,0 +1,2 @@ +[test] +preload = ["../config-schema/test/testSetup.bun.ts"] diff --git a/database/package.json b/database/package.json index 73cfa260b..ed7aa56e4 100644 --- a/database/package.json +++ b/database/package.json @@ -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", diff --git a/database/src/entity/Community.ts b/database/src/entity/Community.ts index f6597306a..e21226d44 100644 --- a/database/src/entity/Community.ts +++ b/database/src/entity/Community.ts @@ -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[] } diff --git a/database/src/entity/Contribution.ts b/database/src/entity/Contribution.ts index 976385263..242eae06f 100644 --- a/database/src/entity/Contribution.ts +++ b/database/src/entity/Contribution.ts @@ -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 } diff --git a/database/src/entity/ContributionMessage.ts b/database/src/entity/ContributionMessage.ts index 1b76243e8..b6fde3815 100644 --- a/database/src/entity/ContributionMessage.ts +++ b/database/src/entity/ContributionMessage.ts @@ -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 diff --git a/database/src/entity/DltTransaction.ts b/database/src/entity/DltTransaction.ts index 2df3fb92c..46cccd0f6 100644 --- a/database/src/entity/DltTransaction.ts +++ b/database/src/entity/DltTransaction.ts @@ -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 } diff --git a/database/src/entity/Event.ts b/database/src/entity/Event.ts index 9d17ffdeb..4adbe6e51 100644 --- a/database/src/entity/Event.ts +++ b/database/src/entity/Event.ts @@ -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', diff --git a/database/src/entity/TransactionLink.ts b/database/src/entity/TransactionLink.ts index 326573c16..7fe755a7a 100644 --- a/database/src/entity/TransactionLink.ts +++ b/database/src/entity/TransactionLink.ts @@ -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[] } diff --git a/database/src/entity/User.ts b/database/src/entity/User.ts index 6a40e9858..20219e4f7 100644 --- a/database/src/entity/User.ts +++ b/database/src/entity/User.ts @@ -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 } diff --git a/database/src/entity/transformer/GeometryTransformer.ts b/database/src/entity/transformer/GeometryTransformer.ts index bc80d256b..b877f2c38 100644 --- a/database/src/entity/transformer/GeometryTransformer.ts +++ b/database/src/entity/transformer/GeometryTransformer.ts @@ -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' diff --git a/database/src/queries/communities.test.ts b/database/src/queries/communities.test.ts index b435c3649..1f5135994 100644 --- a/database/src/queries/communities.test.ts +++ b/database/src/queries/communities.test.ts @@ -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 () => { diff --git a/database/src/queries/communityHandshakes.test.ts b/database/src/queries/communityHandshakes.test.ts index 372fb1293..09937cc66 100644 --- a/database/src/queries/communityHandshakes.test.ts +++ b/database/src/queries/communityHandshakes.test.ts @@ -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' diff --git a/database/src/queries/pendingTransactions.test.ts b/database/src/queries/pendingTransactions.test.ts index c59c312e4..a4765dcee 100644 --- a/database/src/queries/pendingTransactions.test.ts +++ b/database/src/queries/pendingTransactions.test.ts @@ -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' diff --git a/database/src/queries/user.test.ts b/database/src/queries/user.test.ts index b653a5349..6348c01d8 100644 --- a/database/src/queries/user.test.ts +++ b/database/src/queries/user.test.ts @@ -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() diff --git a/database/vitest.config.js b/database/vitest.config.js deleted file mode 100644 index b0e269a1a..000000000 --- a/database/vitest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vitest/config' - -export default defineConfig({ - test: { - setupFiles: '../config-schema/test/testSetup.vitest.ts', - }, -}) \ No newline at end of file