Commit 9e28dd4b authored by nanahira's avatar nanahira

migrate

parent de3f5c8f
Pipeline #11817 failed with stages
in 1 minute and 15 seconds
......@@ -13,7 +13,7 @@
"typed-reflector": "^1.0.10"
},
"devDependencies": {
"@koishijs/plugin-database-memory": "^1.1.0",
"@koishijs/plugin-database-memory": "^1.2.0",
"@types/jest": "^27.4.1",
"@types/lodash": "^4.14.180",
"@types/node": "^17.0.23",
......@@ -29,7 +29,7 @@
"typescript": "^4.6.3"
},
"peerDependencies": {
"koishi": "^4.5.1"
"koishi": "^4.6.0"
}
},
"node_modules/@ampproject/remapping": {
......@@ -655,6 +655,18 @@
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
"dev": true
},
"node_modules/@cosmotype/driver-memory": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@cosmotype/driver-memory/-/driver-memory-1.0.2.tgz",
"integrity": "sha512-JtqwH36Ft0xN5jcN4YDb8BSA4uP9QmbyzUAU2LhMernE2NPI8JFYmhgP6WPke795ikWhE2FpbFRm0TljubD44Q==",
"dev": true,
"dependencies": {
"cosmokit": "^1.1.1"
},
"peerDependencies": {
"cosmotype": "^1.0.3"
}
},
"node_modules/@eslint/eslintrc": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
......@@ -1020,54 +1032,48 @@
}
},
"node_modules/@koishijs/core": {
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.5.1.tgz",
"integrity": "sha512-GD9Uzk7hgL+NbbGksTJw/nC+Dwi2too0ra1scoWJgMDzFwX++EnZhylOG5TlDeAbJ94c3JuNJqgj5VvYGzs4qQ==",
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.6.0.tgz",
"integrity": "sha512-m+K2h/Oqmpcw39dQhJ/D9MBmwnWNUf9uFqymJ94+nP4CR7rcM1DTWNiaMGshGUqNu+s4q0ildoEDlQrE4hVuWA==",
"peer": true,
"dependencies": {
"@koishijs/orm": "^1.0.0",
"@koishijs/utils": "^5.2.1",
"fastest-levenshtein": "^1.0.12"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/@koishijs/orm": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@koishijs/orm/-/orm-1.0.0.tgz",
"integrity": "sha512-uWSOVCF2THR/S4PPS5FsvsYNhWcPIHO6pXVlSckV5GmJMDQ4zAppSi4s6MwvBHPRX5CMjicK/T2huUlEA/srOQ==",
"dependencies": {
"@koishijs/utils": "^5.2.1"
"@koishijs/utils": "^5.4.0",
"cosmotype": "^1.0.3",
"fastest-levenshtein": "^1.0.12",
"ns-require": "^1.1.0"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/@koishijs/plugin-database-memory": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@koishijs/plugin-database-memory/-/plugin-database-memory-1.1.0.tgz",
"integrity": "sha512-l6dB+HD5V7prbabdsrgZruOdkbWuv2viobcU2LCJaeTjhhqvchKFYv7SDGu4Ohz4csD/v4Y+qOELbXUar56N+Q==",
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@koishijs/plugin-database-memory/-/plugin-database-memory-1.2.0.tgz",
"integrity": "sha512-kj5KjVl92BvYH65Fp0boAOZ6y83jych1Mc8HhikyvCB/PdPuu9vLdXuEUit1eR4yL1pulcGpGbhKFjeNe2Vc0g==",
"dev": true,
"dependencies": {
"@koishijs/orm": "^1.0.0"
"@cosmotype/driver-memory": "^1.0.2"
},
"peerDependencies": {
"koishi": "^4.5.0"
"koishi": "^4.6.0"
}
},
"node_modules/@koishijs/segment": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@koishijs/segment/-/segment-1.1.1.tgz",
"integrity": "sha512-HmLRKJiIX++U+ow+RP0BVGwgAFzDRqwHusUzjoZcZdcnG8yudTsvB6MXnzBMnBL7k9LBxUlfB5P8ukkM1roZFQ=="
"integrity": "sha512-HmLRKJiIX++U+ow+RP0BVGwgAFzDRqwHusUzjoZcZdcnG8yudTsvB6MXnzBMnBL7k9LBxUlfB5P8ukkM1roZFQ==",
"peer": true
},
"node_modules/@koishijs/utils": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/@koishijs/utils/-/utils-5.2.1.tgz",
"integrity": "sha512-Yu+QzmpStHAx5ZknSZhp9Zv3rfy6M4b1tuU3Wh8D3gTgZPeo+gqh07X7GyN7SA76Nr472rN8+hDqq5rafuA9iQ==",
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/@koishijs/utils/-/utils-5.4.0.tgz",
"integrity": "sha512-w5SHArw032cXVtxp5nXkc5jzP6Fn3LrF7FQTanPnOgmjGv/AIOAKfJ6bqaOUsSg+ttcK3iO8xs65W6XsNz3g7g==",
"peer": true,
"dependencies": {
"@koishijs/segment": "^1.1.1",
"schemastery": "^3.1.1",
"cosmokit": "^1.1.1",
"reggol": "^1.0.1",
"schemastery": "^3.3.2",
"supports-color": "^8.1.1"
}
},
......@@ -1075,6 +1081,7 @@
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"peer": true,
"dependencies": {
"has-flag": "^4.0.0"
},
......@@ -2260,6 +2267,21 @@
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
"peer": true
},
"node_modules/cosmokit": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/cosmokit/-/cosmokit-1.1.1.tgz",
"integrity": "sha512-+f8x9pFGIc7I6HTObS90dq2K5YsI4U3Me4l9OminU9woVtF9Sv3CAHb5vKbFZ93XpTFctAQ6qAVSGjkGvGI9iw=="
},
"node_modules/cosmotype": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/cosmotype/-/cosmotype-1.0.3.tgz",
"integrity": "sha512-JykvyDjyjaDjycm8CcK8GD4Xt6/Glu4pJU9uJ5lsDuE5B5bdmAykiTPMHfs+Is8QUsNaDKpsHfxtxCUBDPYgdw==",
"peer": true,
"dependencies": {
"cosmokit": "^1.1.1",
"ns-require": "^1.1.0"
}
},
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
......@@ -4697,14 +4719,14 @@
}
},
"node_modules/koishi": {
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/koishi/-/koishi-4.5.1.tgz",
"integrity": "sha512-iYbziM1Ecm9VtWFe4knH9T3jeONzDK/bXmi4i7Qtt3V/jT1Ms0B4S+QVi5Mdd4XzIjlqGlUlEUT40D9y+BZP5Q==",
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/koishi/-/koishi-4.6.0.tgz",
"integrity": "sha512-QhjFWTGhrFnYfpVg4dNNxgHER38zSij3nyM/RB3YrLTM4VwImVk5unpgg0QryViwWxSYM4zJ0YUoys4A9jgG6A==",
"peer": true,
"dependencies": {
"@koa/router": "^10.1.1",
"@koishijs/core": "^4.5.1",
"@koishijs/utils": "^5.2.1",
"@koishijs/core": "^4.6.0",
"@koishijs/utils": "^5.4.0",
"@types/koa": "*",
"@types/koa__router": "*",
"@types/ws": "^8.5.3",
......@@ -5004,6 +5026,12 @@
"node": ">=8"
}
},
"node_modules/ns-require": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/ns-require/-/ns-require-1.1.0.tgz",
"integrity": "sha512-Iw349zwWNgkGZjYJtruf+BXUe8YHOiMZE0iUNffvpt/A1yTSabTnpBMQ0zNl65G1LhpzwCo1KMCqjmJF0z8O6g==",
"peer": true
},
"node_modules/nwsapi": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
......@@ -5610,6 +5638,31 @@
"url": "https://github.com/sponsors/mysticatea"
}
},
"node_modules/reggol": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/reggol/-/reggol-1.0.1.tgz",
"integrity": "sha512-ZMOp3rZG6YQFVp/DC+BgFZaXSQcxHDayCmo7cL/kGujsSEoUzee0VJq1KCe9sgNt0qsM6JzkuSlj/+5SmmoO7Q==",
"peer": true,
"dependencies": {
"cosmokit": "^1.1.0",
"supports-color": "^8.1.1"
}
},
"node_modules/reggol/node_modules/supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"peer": true,
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
......@@ -5756,9 +5809,13 @@
}
},
"node_modules/schemastery": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/schemastery/-/schemastery-3.1.1.tgz",
"integrity": "sha512-TdbphUvailcX1FqxSq3sqlxdFx/HhBD7TXliq1r4Su7BTChRQimHvrauK/Q75jLVCYaJPACDU92s0JTovmVrtA=="
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/schemastery/-/schemastery-3.3.2.tgz",
"integrity": "sha512-Z1C850OPtNEBs+D4QBPdC+Wu1t6Fn1BrOJILRHs2b+I/u61hUKP2vIPMAXFLvmmONnwqAW8ksPdCD6Zz9n8zhg==",
"peer": true,
"dependencies": {
"cosmokit": "^1.1.0"
}
},
"node_modules/semver": {
"version": "7.3.5",
......@@ -7196,6 +7253,15 @@
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
"dev": true
},
"@cosmotype/driver-memory": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@cosmotype/driver-memory/-/driver-memory-1.0.2.tgz",
"integrity": "sha512-JtqwH36Ft0xN5jcN4YDb8BSA4uP9QmbyzUAU2LhMernE2NPI8JFYmhgP6WPke795ikWhE2FpbFRm0TljubD44Q==",
"dev": true,
"requires": {
"cosmokit": "^1.1.1"
}
},
"@eslint/eslintrc": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
......@@ -7492,45 +7558,42 @@
}
},
"@koishijs/core": {
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.5.1.tgz",
"integrity": "sha512-GD9Uzk7hgL+NbbGksTJw/nC+Dwi2too0ra1scoWJgMDzFwX++EnZhylOG5TlDeAbJ94c3JuNJqgj5VvYGzs4qQ==",
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.6.0.tgz",
"integrity": "sha512-m+K2h/Oqmpcw39dQhJ/D9MBmwnWNUf9uFqymJ94+nP4CR7rcM1DTWNiaMGshGUqNu+s4q0ildoEDlQrE4hVuWA==",
"peer": true,
"requires": {
"@koishijs/orm": "^1.0.0",
"@koishijs/utils": "^5.2.1",
"fastest-levenshtein": "^1.0.12"
}
},
"@koishijs/orm": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@koishijs/orm/-/orm-1.0.0.tgz",
"integrity": "sha512-uWSOVCF2THR/S4PPS5FsvsYNhWcPIHO6pXVlSckV5GmJMDQ4zAppSi4s6MwvBHPRX5CMjicK/T2huUlEA/srOQ==",
"requires": {
"@koishijs/utils": "^5.2.1"
"@koishijs/utils": "^5.4.0",
"cosmotype": "^1.0.3",
"fastest-levenshtein": "^1.0.12",
"ns-require": "^1.1.0"
}
},
"@koishijs/plugin-database-memory": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@koishijs/plugin-database-memory/-/plugin-database-memory-1.1.0.tgz",
"integrity": "sha512-l6dB+HD5V7prbabdsrgZruOdkbWuv2viobcU2LCJaeTjhhqvchKFYv7SDGu4Ohz4csD/v4Y+qOELbXUar56N+Q==",
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@koishijs/plugin-database-memory/-/plugin-database-memory-1.2.0.tgz",
"integrity": "sha512-kj5KjVl92BvYH65Fp0boAOZ6y83jych1Mc8HhikyvCB/PdPuu9vLdXuEUit1eR4yL1pulcGpGbhKFjeNe2Vc0g==",
"dev": true,
"requires": {
"@koishijs/orm": "^1.0.0"
"@cosmotype/driver-memory": "^1.0.2"
}
},
"@koishijs/segment": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@koishijs/segment/-/segment-1.1.1.tgz",
"integrity": "sha512-HmLRKJiIX++U+ow+RP0BVGwgAFzDRqwHusUzjoZcZdcnG8yudTsvB6MXnzBMnBL7k9LBxUlfB5P8ukkM1roZFQ=="
"integrity": "sha512-HmLRKJiIX++U+ow+RP0BVGwgAFzDRqwHusUzjoZcZdcnG8yudTsvB6MXnzBMnBL7k9LBxUlfB5P8ukkM1roZFQ==",
"peer": true
},
"@koishijs/utils": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/@koishijs/utils/-/utils-5.2.1.tgz",
"integrity": "sha512-Yu+QzmpStHAx5ZknSZhp9Zv3rfy6M4b1tuU3Wh8D3gTgZPeo+gqh07X7GyN7SA76Nr472rN8+hDqq5rafuA9iQ==",
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/@koishijs/utils/-/utils-5.4.0.tgz",
"integrity": "sha512-w5SHArw032cXVtxp5nXkc5jzP6Fn3LrF7FQTanPnOgmjGv/AIOAKfJ6bqaOUsSg+ttcK3iO8xs65W6XsNz3g7g==",
"peer": true,
"requires": {
"@koishijs/segment": "^1.1.1",
"schemastery": "^3.1.1",
"cosmokit": "^1.1.1",
"reggol": "^1.0.1",
"schemastery": "^3.3.2",
"supports-color": "^8.1.1"
},
"dependencies": {
......@@ -7538,6 +7601,7 @@
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"peer": true,
"requires": {
"has-flag": "^4.0.0"
}
......@@ -8471,6 +8535,21 @@
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
"peer": true
},
"cosmokit": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/cosmokit/-/cosmokit-1.1.1.tgz",
"integrity": "sha512-+f8x9pFGIc7I6HTObS90dq2K5YsI4U3Me4l9OminU9woVtF9Sv3CAHb5vKbFZ93XpTFctAQ6qAVSGjkGvGI9iw=="
},
"cosmotype": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/cosmotype/-/cosmotype-1.0.3.tgz",
"integrity": "sha512-JykvyDjyjaDjycm8CcK8GD4Xt6/Glu4pJU9uJ5lsDuE5B5bdmAykiTPMHfs+Is8QUsNaDKpsHfxtxCUBDPYgdw==",
"peer": true,
"requires": {
"cosmokit": "^1.1.1",
"ns-require": "^1.1.0"
}
},
"cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
......@@ -10307,14 +10386,14 @@
}
},
"koishi": {
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/koishi/-/koishi-4.5.1.tgz",
"integrity": "sha512-iYbziM1Ecm9VtWFe4knH9T3jeONzDK/bXmi4i7Qtt3V/jT1Ms0B4S+QVi5Mdd4XzIjlqGlUlEUT40D9y+BZP5Q==",
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/koishi/-/koishi-4.6.0.tgz",
"integrity": "sha512-QhjFWTGhrFnYfpVg4dNNxgHER38zSij3nyM/RB3YrLTM4VwImVk5unpgg0QryViwWxSYM4zJ0YUoys4A9jgG6A==",
"peer": true,
"requires": {
"@koa/router": "^10.1.1",
"@koishijs/core": "^4.5.1",
"@koishijs/utils": "^5.2.1",
"@koishijs/core": "^4.6.0",
"@koishijs/utils": "^5.4.0",
"@types/koa": "*",
"@types/koa__router": "*",
"@types/ws": "^8.5.3",
......@@ -10544,6 +10623,12 @@
"path-key": "^3.0.0"
}
},
"ns-require": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/ns-require/-/ns-require-1.1.0.tgz",
"integrity": "sha512-Iw349zwWNgkGZjYJtruf+BXUe8YHOiMZE0iUNffvpt/A1yTSabTnpBMQ0zNl65G1LhpzwCo1KMCqjmJF0z8O6g==",
"peer": true
},
"nwsapi": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
......@@ -10984,6 +11069,27 @@
"integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
"dev": true
},
"reggol": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/reggol/-/reggol-1.0.1.tgz",
"integrity": "sha512-ZMOp3rZG6YQFVp/DC+BgFZaXSQcxHDayCmo7cL/kGujsSEoUzee0VJq1KCe9sgNt0qsM6JzkuSlj/+5SmmoO7Q==",
"peer": true,
"requires": {
"cosmokit": "^1.1.0",
"supports-color": "^8.1.1"
},
"dependencies": {
"supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"peer": true,
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
......@@ -11081,9 +11187,13 @@
}
},
"schemastery": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/schemastery/-/schemastery-3.1.1.tgz",
"integrity": "sha512-TdbphUvailcX1FqxSq3sqlxdFx/HhBD7TXliq1r4Su7BTChRQimHvrauK/Q75jLVCYaJPACDU92s0JTovmVrtA=="
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/schemastery/-/schemastery-3.3.2.tgz",
"integrity": "sha512-Z1C850OPtNEBs+D4QBPdC+Wu1t6Fn1BrOJILRHs2b+I/u61hUKP2vIPMAXFLvmmONnwqAW8ksPdCD6Zz9n8zhg==",
"peer": true,
"requires": {
"cosmokit": "^1.1.0"
}
},
"semver": {
"version": "7.3.5",
......
......@@ -39,7 +39,7 @@
"testEnvironment": "node"
},
"devDependencies": {
"@koishijs/plugin-database-memory": "^1.1.0",
"@koishijs/plugin-database-memory": "^1.2.0",
"@types/jest": "^27.4.1",
"@types/lodash": "^4.14.180",
"@types/node": "^17.0.23",
......@@ -55,7 +55,7 @@
"typescript": "^4.6.3"
},
"peerDependencies": {
"koishi": "^4.5.1"
"koishi": "^4.6.0"
},
"dependencies": {
"lodash": "^4.17.21",
......
import { Context, Dict, Flatten, Keys, Model, Tables } from 'koishi';
import { Context, Field, Flatten, Keys, Model, Tables } from 'koishi';
import { ModelClassType } from './def';
import { reflector } from './meta/meta';
import _ from 'lodash';
......@@ -10,9 +10,9 @@ class ModelRegistrar<T = any> {
return reflector.get('ModelTableName', this.cls);
}
getFields(): Model.Field.Extension<T> {
getFields(): Field.Extension<T> {
const keys = reflector.getArray('ModelFieldKeys', this.cls);
const result: Model.Field.Extension<T> = {};
const result: Field.Extension<T> = {};
for (const key of keys) {
const field = reflector.get('ModelField', this.cls, key);
if (field) {
......@@ -22,9 +22,9 @@ class ModelRegistrar<T = any> {
return result;
}
getExtensions(): Model.Extension<T> {
getExtensions(): Model.Config<T> {
const keys = reflector.getArray('ModelFieldKeys', this.cls);
const result: Model.Extension<T> = {};
const result: Model.Config<T> = {};
const primaryKeys: string[] = [];
const uniqueMap = new Map<number | string, string[]>();
for (const key of keys) {
......@@ -67,16 +67,16 @@ class ModelRegistrar<T = any> {
return result;
}
private mergeFields(fieldDefs: Model.Field.Extension[]) {
let result: Model.Field.Extension<T> = {};
private mergeFields(fieldDefs: Field.Extension[]) {
let result: Field.Extension<T> = {};
for (const fieldDef of fieldDefs) {
result = { ...result, ...fieldDef };
}
return result;
}
private mergeExtensions(extDefs: Model.Extension<T>[]) {
const result: Model.Extension<T> = {
private mergeExtensions(extDefs: Model.Config<T>[]) {
const result: Model.Config<T> = {
autoInc: extDefs.some((ext) => ext.autoInc),
};
for (const extDef of extDefs) {
......@@ -131,7 +131,7 @@ class ModelRegistrar<T = any> {
private getChildModelResults() {
const children = this.getChildDict();
const results: [Model.Field.Extension, Model.Extension][] = [];
const results: [Field.Extension, Model.Config][] = [];
for (const key of Object.keys(children)) {
const child = children[key];
if (child) {
......@@ -148,7 +148,7 @@ class ModelRegistrar<T = any> {
};
}
getModelResult(): [Model.Field.Extension<T>, Model.Extension<T>] {
getModelResult(): [Field.Extension<T>, Model.Config<T>] {
const fields = this.getFields();
const extensions = this.getExtensions();
const childResults = this.getChildModelResults();
......@@ -169,7 +169,7 @@ export function registerModel(
throw new Error(`Model of ${cls.name} is not defined`);
}
ctx.model.extend(tableName, ...registrar.getModelResult());
Object.assign(ctx.model.config[tableName].internal, registrar.getInternal());
Object.assign(ctx.model.tables[tableName].internal, registrar.getInternal());
}
export function mixinModel<K extends Keys<Tables>>(
......@@ -186,7 +186,7 @@ export function mixinModel<K extends Keys<Tables>>(
const result = registrar.getModelResult();
ctx.model.extend(tableName, ...result);
Object.assign(
ctx.model.config[tableName].internal,
ctx.model.tables[tableName].internal,
registrar.getInternal(),
);
}
......
......@@ -8,7 +8,7 @@ import {
} from '../src/decorators';
import { App } from 'koishi';
import { registerModel } from '../src/register';
import MemoryDatabase from '@koishijs/plugin-database-memory';
import * as MemoryDatabase from '@koishijs/plugin-database-memory';
declare module 'koishi' {
// eslint-disable-next-line @typescript-eslint/no-empty-interface
......@@ -61,7 +61,7 @@ describe('Model test', () => {
});
it('should register model fields', () => {
const { dress } = app.model.config;
const { dress } = app.model.tables;
expect(dress.fields.id.type).toBe('integer');
expect(dress.fields.id.length).toBe(11);
expect(dress.fields.name.type).toBe('string');
......@@ -74,7 +74,7 @@ describe('Model test', () => {
});
it('should register model extras', () => {
const { dress } = app.model.config;
const { dress } = app.model.tables;
expect(dress.primary[0]).toBe('id');
expect(dress.unique[0][0]).toBe('name');
expect(dress.foreign.parentId).toStrictEqual(['dress', 'id']);
......
import { ChildModel, DefineModel, ModelField } from '../src/decorators';
import { ChildModel, ModelField } from '../src/decorators';
import { App } from 'koishi';
import { mixinModel, registerModel } from '../src/register';
import MemoryDatabase from '@koishijs/plugin-database-memory';
import exp from 'constants';
import { mixinModel } from '../src/register';
import * as MemoryDatabase from '@koishijs/plugin-database-memory';
declare module 'koishi' {
// eslint-disable-next-line @typescript-eslint/no-empty-interface
......@@ -57,7 +56,7 @@ describe('Model test', () => {
});
it('should register model fields', () => {
const { user } = app.model.config;
const { user } = app.model.tables;
expect(user.fields['dress.size'].type).toBe('string');
expect(user.fields['dress.size'].length).toBe(3);
expect(user.fields['shirt.size'].type).toBe('string');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment