cabloy 5.1.95 → 5.1.97
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cabloy-version +1 -0
- package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +4 -1
- package/.claude/skills/cabloy-resource-field-update/SKILL.md +6 -3
- package/.github/workflows/vona-test-crud.yml +2 -0
- package/.github/workflows/vona-test-mysql.yml +2 -0
- package/.github/workflows/vona-test-pg.yml +2 -0
- package/.github/workflows/vona-test-sqlite3.yml +2 -0
- package/CHANGELOG.md +38 -0
- package/CLAUDE.md +1 -0
- package/cabloy-docs/ai/playbook-backend-module.md +6 -3
- package/cabloy-docs/fullstack/framework-performance.md +3 -3
- package/cabloy-docs/fullstack/quickstart.md +1 -1
- package/package.json +1 -1
- package/scripts/release.ts +27 -1
- package/vona/docker-compose-original/docker-compose-dockerfile-app +4 -0
- package/vona/docker-compose-original/docker-compose.original.yml +0 -1
- package/vona/env/.env +0 -1
- package/vona/env/.env.prod +0 -1
- package/vona/env/.env.prod.docker +0 -7
- package/vona/package.original.json +3 -3
- package/vona/packages-cli/cabloy-cli/package.json +2 -2
- package/vona/packages-cli/cli/package.json +1 -1
- package/vona/packages-cli/cli-set-api/package.json +2 -2
- package/vona/packages-cli/cli-set-api/src/lib/bean/cli.bin.build.ts +70 -2
- package/vona/packages-utils/babel-plugin-vona-bean-module/package.json +2 -2
- package/vona/packages-utils/module-glob/package.json +2 -2
- package/vona/packages-utils/module-info-pro/package.json +2 -2
- package/vona/packages-utils/utils/package.json +2 -2
- package/vona/packages-vona/vona/package.json +1 -1
- package/vona/packages-vona/vona-core/package.json +2 -2
- package/vona/packages-vona/vona-core/src/lib/addon/addon.ts +77 -0
- package/vona/packages-vona/vona-core/src/lib/addon/index.ts +3 -0
- package/vona/packages-vona/vona-core/src/lib/addon/sharp.ts +46 -0
- package/vona/packages-vona/vona-core/src/lib/addon/sqlite3.ts +23 -0
- package/vona/packages-vona/vona-core/src/lib/index.ts +1 -0
- package/vona/packages-vona/vona-core/src/lib/utils/index.ts +0 -1
- package/vona/packages-vona/vona-core/src/lib/utils/util.ts +5 -0
- package/vona/packages-vona/vona-mock/package.json +2 -2
- package/vona/pnpm-lock.yaml +441 -62
- package/vona/pnpm-workspace.yaml +1 -1
- package/vona/src/backend/cli.ts +2 -5
- package/vona/src/backend/config/config/config.ts +0 -4
- package/vona/src/suite/a-demo/modules/demo-basic/src/bean/ssrMenu.admin.ts +1 -1
- package/vona/src/suite/a-training/modules/training-record/src/.metadata/index.ts +26 -0
- package/vona/src/suite/a-training/modules/training-record/src/bean/imageScene.sceneImage.ts +11 -0
- package/vona/src/suite/a-training/modules/training-record/src/bean/meta.version.ts +1 -0
- package/vona/src/suite/a-training/modules/training-record/src/config/locale/en-us.ts +1 -0
- package/vona/src/suite/a-training/modules/training-record/src/config/locale/zh-cn.ts +1 -0
- package/vona/src/suite/a-training/modules/training-record/src/dto/recordSelectResItem.tsx +12 -0
- package/vona/src/suite/a-training/modules/training-record/src/dto/recordView.tsx +12 -0
- package/vona/src/suite/a-training/modules/training-record/src/entity/record.tsx +26 -1
- package/vona/src/suite/a-training/modules/training-record/src/index.ts +1 -0
- package/vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts +27 -1
- package/vona/src/suite/a-training/modules/training-student/src/bean/imageScene.studentImage.ts +10 -0
- package/vona/src/suite/a-training/modules/training-student/src/bean/meta.version.ts +1 -0
- package/vona/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +1 -0
- package/vona/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +1 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/detailRecordBase.tsx +16 -2
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentCreate.tsx +1 -1
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectResItem.tsx +12 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentUpdate.tsx +1 -1
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentView.tsx +13 -1
- package/vona/src/suite/a-training/modules/training-student/src/entity/student.tsx +26 -1
- package/vona/src/suite/a-training/modules/training-student/src/index.ts +1 -0
- package/vona/src/suite/a-training/modules/training-student/src/model/student.ts +1 -0
- package/vona/src/suite-vendor/a-auth/modules/a-auth/package.json +1 -1
- package/vona/src/suite-vendor/a-auth/modules/a-auth/src/bean/bean.authProvider.ts +2 -5
- package/vona/src/suite-vendor/a-auth/package.json +1 -1
- package/vona/src/suite-vendor/a-image/modules/a-image/cli/imageProvider/boilerplate/{{sceneName}}.{{beanName}}.ts_ +23 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/cli/imageScene/boilerplate/{{sceneName}}.{{beanName}}.ts_ +5 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/package.json +68 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/.metadata/index.ts +482 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/.metadata/locales.ts +18 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/.metadata/this.ts +2 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/bean.image.ts +443 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/bean.imageProvider.ts +55 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/bean.imageUploadPolicy.ts +174 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/meta.redlock.ts +11 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/meta.version.ts +40 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/serializerTransform.resolveView.ts +44 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/bean/serializerTransform.resolveViews.ts +44 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/config/config.ts +17 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/config/locale/en-us.ts +1 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/config/locale/zh-cn.ts +1 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/controller/image.ts +165 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageDeliveryRequest.ts +20 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageDirectUploadRequest.ts +36 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageDirectUploadResponse.ts +38 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageTransformOptions.tsx +42 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageUploadResponse.ts +62 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageUploadTokenRequest.ts +24 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageUploadTokenResponse.ts +16 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageUploadUrlRequest.ts +33 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/dto/imageView.ts +46 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/entity/image.ts +58 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/entity/imageProvider.ts +24 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/index.ts +4 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/lib/imageProvider.ts +9 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/lib/imageScene.ts +7 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/lib/imageVariant.ts +46 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/lib/index.ts +3 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/model/image.ts +10 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/model/imageProvider.ts +10 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/types/image.ts +208 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/types/imageProvider.ts +110 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/types/imageScene.ts +52 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/src/types/index.ts +3 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/tsconfig.build.json +11 -0
- package/vona/src/suite-vendor/a-image/modules/a-image/tsconfig.json +7 -0
- package/vona/src/suite-vendor/a-image/modules/image-cloudflare/package.json +49 -0
- package/vona/src/suite-vendor/a-image/modules/image-cloudflare/src/.metadata/index.ts +89 -0
- package/vona/src/suite-vendor/a-image/modules/image-cloudflare/src/.metadata/this.ts +2 -0
- package/vona/src/suite-vendor/a-image/modules/image-cloudflare/src/bean/imageProvider.cloudflare.ts +155 -0
- package/vona/src/suite-vendor/a-image/modules/image-cloudflare/src/index.ts +1 -0
- package/vona/src/suite-vendor/a-image/modules/image-cloudflare/src/lib/cloudflareImageUrl.ts +112 -0
- package/vona/src/suite-vendor/a-image/modules/image-cloudflare/src/service/imageCloudflare.ts +273 -0
- package/vona/src/suite-vendor/a-image/modules/image-cloudflare/tsconfig.build.json +11 -0
- package/vona/src/suite-vendor/a-image/modules/image-cloudflare/tsconfig.json +7 -0
- package/vona/src/suite-vendor/a-image/modules/image-native/package.json +63 -0
- package/vona/src/suite-vendor/a-image/modules/image-native/src/.metadata/index.ts +114 -0
- package/vona/src/suite-vendor/a-image/modules/image-native/src/.metadata/this.ts +2 -0
- package/vona/src/suite-vendor/a-image/modules/image-native/src/bean/imageProvider.native.ts +131 -0
- package/vona/src/suite-vendor/a-image/modules/image-native/src/config/config.ts +11 -0
- package/vona/src/suite-vendor/a-image/modules/image-native/src/index.ts +1 -0
- package/vona/src/suite-vendor/a-image/modules/image-native/src/monkey.ts +33 -0
- package/vona/src/suite-vendor/a-image/modules/image-native/src/service/imageNative.ts +291 -0
- package/vona/src/suite-vendor/a-image/modules/image-native/tsconfig.build.json +11 -0
- package/vona/src/suite-vendor/a-image/modules/image-native/tsconfig.json +7 -0
- package/vona/src/suite-vendor/a-image/package.json +14 -0
- package/vona/src/suite-vendor/a-image/tsconfig.base.json +4 -0
- package/vona/src/suite-vendor/a-image/tsconfig.json +16 -0
- package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-jwt/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-jwt/src/service/jwtClient.ts +5 -0
- package/vona/src/suite-vendor/a-vona/modules/a-jwt/src/types/jwt.ts +1 -0
- package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/src/lib/schema/makeSchemaLikes.ts +6 -3
- package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/src/lib/utils.ts +13 -7
- package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/database.ts +0 -1
- package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/package.json +9 -1
- package/vona/src/suite-vendor/a-vona/modules/a-upload/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-upload/src/bean/interceptor.upload.ts +39 -7
- package/vona/src/suite-vendor/a-vona/package.json +1 -1
- package/zova/packages-cli/cli/package.json +3 -3
- package/zova/packages-cli/cli-set-front/package.json +9 -9
- package/zova/packages-cli/cli-set-front/src/lib/bean/cli.openapi.generate.ts +20 -10
- package/zova/packages-utils/babel-plugin-zova-bean-module/package.json +2 -2
- package/zova/packages-utils/babel-plugin-zova-bean-use/package.json +2 -2
- package/zova/packages-utils/babel-plugin-zova-behavior/package.json +2 -2
- package/zova/packages-utils/babel-plugin-zova-component/package.json +2 -2
- package/zova/packages-utils/zova-jsx/package.json +3 -3
- package/zova/packages-utils/zova-vite/package.json +7 -7
- package/zova/packages-zova/zova/package.json +3 -3
- package/zova/packages-zova/zova-core/package.json +3 -3
- package/zova/pnpm-lock.yaml +126 -74
- package/zova/src/suite/a-home/modules/home-api/src/api/captcha.ts +3 -1
- package/zova/src/suite/a-home/modules/home-api/src/api/home.ts +3 -1
- package/zova/src/suite/a-home/modules/home-api/src/api/homeBaseMenu.ts +3 -1
- package/zova/src/suite/a-home/modules/home-api/src/api/homeBasePermission.ts +3 -1
- package/zova/src/suite/a-home/modules/home-api/src/api/homeUserPassport.ts +22 -20
- package/zova/src/suite/a-home/modules/home-api/src/api/openapi/schemas.ts +163 -53
- package/zova/src/suite/a-home/modules/home-api/src/api/openapi/types.ts +2060 -675
- package/zova/src/suite/a-home/modules/home-api/src/api/testSsrToolOne.ts +3 -1
- package/zova/src/suite/a-home/modules/home-api/src/apiSchema/captcha.ts +3 -1
- package/zova/src/suite/a-home/modules/home-api/src/apiSchema/home.ts +3 -1
- package/zova/src/suite/a-home/modules/home-api/src/apiSchema/homeBaseMenu.ts +3 -1
- package/zova/src/suite/a-home/modules/home-api/src/apiSchema/homeBasePermission.ts +3 -1
- package/zova/src/suite/a-home/modules/home-api/src/apiSchema/homeUserPassport.ts +13 -11
- package/zova/src/suite/a-home/modules/home-api/src/apiSchema/testSsrToolOne.ts +3 -1
- package/zova/src/suite/a-training/modules/training-student/src/api/openapi/schemas.ts +54 -16
- package/zova/src/suite/a-training/modules/training-student/src/api/openapi/types.ts +468 -8
- package/zova/src/suite/a-training/modules/training-student/src/apiSchema/trainingStudent.ts +3 -1
- package/zova/src/suite/cabloy-basic/modules/basic-details/src/bean/tableCell.actionUpdate.tsx +1 -1
- package/zova/src/suite/cabloy-basic/modules/basic-details/src/component/actionCreate/controller.tsx +1 -1
- package/zova/src/suite/cabloy-basic/modules/basic-details/src/service/detail.tsx +53 -1
- package/zova/src/suite/cabloy-basic/modules/basic-image/cli/openapi.config.ts +9 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/package.json +60 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/.metadata/component/formFieldImage.ts +31 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/.metadata/index.ts +191 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/.metadata/locales.ts +7 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/.metadata/this.ts +2 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/api/image.ts +104 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/api/openapi/baseURL.ts +5 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/api/openapi/index.ts +3 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/api/openapi/schemas.ts +262 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/api/openapi/types.ts +5159 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/apiSchema/image.ts +35 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/bean/tableCell.image.tsx +200 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/component/formFieldImage/controller.tsx +781 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/config/locale/en-us.ts +18 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/config/locale/zh-cn.ts +18 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/index.ts +4 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/lib/index.ts +2 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/lib/preview.ts +105 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/lib/previewDialog.tsx +190 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/types/image.ts +5 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/src/types/index.ts +1 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/tsconfig.build.json +13 -0
- package/zova/src/suite/cabloy-basic/modules/basic-image/tsconfig.json +5 -0
- package/zova/src/suite/cabloy-basic/package.json +1 -0
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/image.ts +1 -0
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/index.ts +1 -0
- package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +5 -5
- package/zova/src/suite-vendor/a-zova/package.json +3 -3
- package/vona/packages-vona/vona-core/src/lib/utils/sqlite3.ts +0 -50
- /package/vona/patches/{zova-core@5.1.75.patch → zova-core@5.1.76.patch} +0 -0
package/vona/pnpm-workspace.yaml
CHANGED
package/vona/src/backend/cli.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import type { ICliBuildCustomOptions } from '@cabloy/cli';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export async function afterBuild(options: ICliBuildCustomOptions) {
|
|
6
|
-
const { projectPath, outDir, env } = options;
|
|
7
|
-
await copySqlite3NativeBinding(projectPath, outDir, env);
|
|
3
|
+
export async function afterBuild(_options: ICliBuildCustomOptions) {
|
|
4
|
+
// const { projectPath, outDir, env } = options;
|
|
8
5
|
}
|
|
@@ -8,7 +8,6 @@ import {
|
|
|
8
8
|
getLoggerPathPhysicalRoot,
|
|
9
9
|
getPublicPathPhysicalRoot,
|
|
10
10
|
getSqlite3DatabaseNameDefault,
|
|
11
|
-
getSqlite3NativeBinding,
|
|
12
11
|
} from 'vona';
|
|
13
12
|
|
|
14
13
|
declare module 'vona' {
|
|
@@ -149,9 +148,6 @@ export default async function (app: VonaApplication) {
|
|
|
149
148
|
client: 'better-sqlite3',
|
|
150
149
|
connection: {
|
|
151
150
|
filename: env.DATABASE_CLIENT_SQLITE3_FILENAME || getSqlite3DatabaseNameDefault(app),
|
|
152
|
-
options: {
|
|
153
|
-
nativeBinding: getSqlite3NativeBinding(app, env.DATABASE_CLIENT_SQLITE3_NATIVEBINDING),
|
|
154
|
-
},
|
|
155
151
|
},
|
|
156
152
|
},
|
|
157
153
|
pg: {
|
|
@@ -388,6 +388,32 @@ declare module 'vona-module-training-record' {
|
|
|
388
388
|
}
|
|
389
389
|
}
|
|
390
390
|
/** ssrMenu: end */
|
|
391
|
+
/** imageScene: begin */
|
|
392
|
+
export * from '../bean/imageScene.sceneImage.ts';
|
|
393
|
+
|
|
394
|
+
import { type IDecoratorImageSceneOptions } from 'vona-module-a-image';
|
|
395
|
+
declare module 'vona-module-a-image' {
|
|
396
|
+
|
|
397
|
+
export interface IImageSceneRecord {
|
|
398
|
+
'training-record:sceneImage': IDecoratorImageSceneOptions;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
}
|
|
403
|
+
declare module 'vona-module-training-record' {
|
|
404
|
+
|
|
405
|
+
export interface ImageSceneSceneImage {
|
|
406
|
+
/** @internal */
|
|
407
|
+
get scope(): ScopeModuleTrainingRecord;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
export interface ImageSceneSceneImage {
|
|
411
|
+
get $beanFullName(): 'training-record.imageScene.sceneImage';
|
|
412
|
+
get $onionName(): 'training-record:sceneImage';
|
|
413
|
+
get $onionOptions(): IDecoratorImageSceneOptions;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
/** imageScene: end */
|
|
391
417
|
/** locale: begin */
|
|
392
418
|
import { locales } from './locales.ts';
|
|
393
419
|
/** locale: end */
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BeanBase } from 'vona';
|
|
2
|
+
import { ImageScene } from 'vona-module-a-image';
|
|
3
|
+
|
|
4
|
+
@ImageScene({
|
|
5
|
+
upload: {
|
|
6
|
+
maxSize: 2 * 1024 * 1024,
|
|
7
|
+
mimeTypes: ['image/png', 'image/jpeg', 'image/webp'],
|
|
8
|
+
multiple: true,
|
|
9
|
+
},
|
|
10
|
+
})
|
|
11
|
+
export class ImageSceneSceneImage extends BeanBase {}
|
|
@@ -17,6 +17,7 @@ export class MetaVersion extends BeanBase implements IMetaVersionUpdate {
|
|
|
17
17
|
table.integer(entityRecord.totalScore).comment(entityRecord.$comment.totalScore);
|
|
18
18
|
table.decimal(entityRecord.averageScore, 8, 2).comment(entityRecord.$comment.averageScore);
|
|
19
19
|
table.dateTime(entityRecord.trainingTime).comment(entityRecord.$comment.trainingTime);
|
|
20
|
+
table.json(entityRecord.sceneImageIds).comment(entityRecord.$comment.sceneImageIds);
|
|
20
21
|
table.string(entityRecord.description, 255).comment(entityRecord.$comment.description);
|
|
21
22
|
});
|
|
22
23
|
}
|
|
@@ -8,6 +8,7 @@ export default {
|
|
|
8
8
|
TrainingRecord: 'Student Training Record',
|
|
9
9
|
TrainingRecordName: 'Training Record Name',
|
|
10
10
|
TrainingTime: 'Training Time',
|
|
11
|
+
ScenePhotos: 'Scene Photos',
|
|
11
12
|
AddTrainingRecord: 'Add Student Training Record',
|
|
12
13
|
EditTrainingRecord: 'Edit Student Training Record',
|
|
13
14
|
ViewTrainingRecord: 'View Student Training Record',
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { IDecoratorDtoOptions } from 'vona-module-a-web';
|
|
2
2
|
|
|
3
|
+
import { DtoImageView } from 'vona-module-a-image';
|
|
3
4
|
import { Api, v } from 'vona-module-a-openapiutils';
|
|
4
5
|
import { $Dto } from 'vona-module-a-orm';
|
|
5
6
|
import { Dto } from 'vona-module-a-web';
|
|
@@ -25,6 +26,17 @@ export interface IDtoOptionsRecordSelectResItem extends IDecoratorDtoOptions {}
|
|
|
25
26
|
],
|
|
26
27
|
})
|
|
27
28
|
export class DtoRecordSelectResItem extends $Dto.get(() => ModelRecord) {
|
|
29
|
+
@Api.field(
|
|
30
|
+
ZovaRender.visible(false),
|
|
31
|
+
v.optional(),
|
|
32
|
+
v.serializerTransform('a-image:resolveViews', {
|
|
33
|
+
fieldName: 'sceneImageIds',
|
|
34
|
+
imageScene: 'training-record:sceneImage',
|
|
35
|
+
}),
|
|
36
|
+
v.array(DtoImageView),
|
|
37
|
+
)
|
|
38
|
+
sceneImages?: DtoImageView[];
|
|
39
|
+
|
|
28
40
|
@Api.field(
|
|
29
41
|
v.title($locale('Operations')),
|
|
30
42
|
ZovaRender.order(1, 'max'),
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { IDecoratorDtoOptions } from 'vona-module-a-web';
|
|
2
2
|
|
|
3
|
+
import { DtoImageView } from 'vona-module-a-image';
|
|
3
4
|
import { $makeMetadata, Api, v } from 'vona-module-a-openapiutils';
|
|
4
5
|
import { $Dto } from 'vona-module-a-orm';
|
|
5
6
|
import { Dto } from 'vona-module-a-web';
|
|
@@ -37,6 +38,17 @@ export interface IDtoOptionsRecordView extends IDecoratorDtoOptions {}
|
|
|
37
38
|
export class DtoRecordView extends $Dto.get(() => ModelRecord, {
|
|
38
39
|
include: { trainingRecordSubjects: { dtoClass: DtoDetailRecordSubjectView } },
|
|
39
40
|
}) {
|
|
41
|
+
@Api.field(
|
|
42
|
+
ZovaRender.visible(false),
|
|
43
|
+
v.optional(),
|
|
44
|
+
v.serializerTransform('a-image:resolveViews', {
|
|
45
|
+
fieldName: 'sceneImageIds',
|
|
46
|
+
imageScene: 'training-record:sceneImage',
|
|
47
|
+
}),
|
|
48
|
+
v.array(DtoImageView),
|
|
49
|
+
)
|
|
50
|
+
sceneImages?: DtoImageView[];
|
|
51
|
+
|
|
40
52
|
@Api.field(ZovaRender.visible(false), v.optional(), v.array(DtoDetailRecordSubjectResItem))
|
|
41
53
|
_trainingRecordSubjects?: DtoDetailRecordSubjectResItem[];
|
|
42
54
|
}
|
|
@@ -83,6 +83,31 @@ export class EntityRecord extends EntityBase {
|
|
|
83
83
|
)
|
|
84
84
|
trainingTime?: Date;
|
|
85
85
|
|
|
86
|
-
@Api.field(
|
|
86
|
+
@Api.field(
|
|
87
|
+
v.title($locale('ScenePhotos')),
|
|
88
|
+
v.optional(),
|
|
89
|
+
ZovaRender.order(7),
|
|
90
|
+
ZovaRender.field('basic-image:formFieldImage', {
|
|
91
|
+
imageScene: 'training-record:sceneImage',
|
|
92
|
+
multiple: true,
|
|
93
|
+
maxCount: 9,
|
|
94
|
+
relationName: 'sceneImages',
|
|
95
|
+
accept: ['image/png', 'image/jpeg', 'image/webp'],
|
|
96
|
+
maxSize: 2 * 1024 * 1024,
|
|
97
|
+
enableCrop: false,
|
|
98
|
+
resize: {
|
|
99
|
+
width: 1280,
|
|
100
|
+
height: 1280,
|
|
101
|
+
fit: 'contain',
|
|
102
|
+
format: 'jpeg',
|
|
103
|
+
quality: 90,
|
|
104
|
+
},
|
|
105
|
+
}),
|
|
106
|
+
ZovaRender.cell('basic-image:image', { relationName: 'sceneImages' }),
|
|
107
|
+
v.array(v.tableIdentity()),
|
|
108
|
+
)
|
|
109
|
+
sceneImageIds?: TableIdentity[];
|
|
110
|
+
|
|
111
|
+
@Api.field(v.title($locale('Description')), v.optional(), ZovaRender.order(8))
|
|
87
112
|
description?: string;
|
|
88
113
|
}
|
|
@@ -86,7 +86,7 @@ import { SymbolKeyEntity, SymbolKeyEntityMeta, SymbolKeyModelOptions } from 'von
|
|
|
86
86
|
declare module 'vona-module-training-student' {
|
|
87
87
|
export interface IModelOptionsStudent {
|
|
88
88
|
relations: {
|
|
89
|
-
trainingRecords: IModelRelationHasMany<'training-record:record', 'studentId', false, 'id'|'name'|'subjectCount'|'totalScore'|'averageScore'|'trainingTime'|'description', undefined, undefined, undefined>;
|
|
89
|
+
trainingRecords: IModelRelationHasMany<'training-record:record', 'studentId', false, 'id'|'name'|'subjectCount'|'totalScore'|'averageScore'|'trainingTime'|'sceneImageIds'|'description', undefined, undefined, undefined>;
|
|
90
90
|
};
|
|
91
91
|
}
|
|
92
92
|
export interface ModelStudent {
|
|
@@ -397,6 +397,32 @@ declare module 'vona-module-training-student' {
|
|
|
397
397
|
}
|
|
398
398
|
}
|
|
399
399
|
/** ssrMenu: end */
|
|
400
|
+
/** imageScene: begin */
|
|
401
|
+
export * from '../bean/imageScene.studentImage.ts';
|
|
402
|
+
|
|
403
|
+
import { type IDecoratorImageSceneOptions } from 'vona-module-a-image';
|
|
404
|
+
declare module 'vona-module-a-image' {
|
|
405
|
+
|
|
406
|
+
export interface IImageSceneRecord {
|
|
407
|
+
'training-student:studentImage': IDecoratorImageSceneOptions;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
}
|
|
412
|
+
declare module 'vona-module-training-student' {
|
|
413
|
+
|
|
414
|
+
export interface ImageSceneStudentImage {
|
|
415
|
+
/** @internal */
|
|
416
|
+
get scope(): ScopeModuleTrainingStudent;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
export interface ImageSceneStudentImage {
|
|
420
|
+
get $beanFullName(): 'training-student.imageScene.studentImage';
|
|
421
|
+
get $onionName(): 'training-student:studentImage';
|
|
422
|
+
get $onionOptions(): IDecoratorImageSceneOptions;
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
/** imageScene: end */
|
|
400
426
|
/** locale: begin */
|
|
401
427
|
import { locales } from './locales.ts';
|
|
402
428
|
/** locale: end */
|
package/vona/src/suite/a-training/modules/training-student/src/bean/imageScene.studentImage.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BeanBase } from 'vona';
|
|
2
|
+
import { ImageScene } from 'vona-module-a-image';
|
|
3
|
+
|
|
4
|
+
@ImageScene({
|
|
5
|
+
upload: {
|
|
6
|
+
maxSize: 2 * 1024 * 1024,
|
|
7
|
+
mimeTypes: ['image/png', 'image/jpeg', 'image/webp'],
|
|
8
|
+
},
|
|
9
|
+
})
|
|
10
|
+
export class ImageSceneStudentImage extends BeanBase {}
|
|
@@ -14,6 +14,7 @@ export class MetaVersion extends BeanBase implements IMetaVersionUpdate {
|
|
|
14
14
|
table.string(entityStudent.name, 50).comment(entityStudent.$comment.name);
|
|
15
15
|
table.string(entityStudent.description, 255).comment(entityStudent.$comment.description);
|
|
16
16
|
table.string(entityStudent.mobile, 50).comment(entityStudent.$comment.mobile);
|
|
17
|
+
table.tableIdentity(entityStudent.imageId).comment(entityStudent.$comment.imageId);
|
|
17
18
|
table.integer(entityStudent.level).comment(entityStudent.$comment.level);
|
|
18
19
|
});
|
|
19
20
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { IDecoratorDtoOptions } from 'vona-module-a-web';
|
|
2
2
|
|
|
3
|
-
import { $
|
|
3
|
+
import { $Class } from 'vona';
|
|
4
|
+
import { DtoImageView } from 'vona-module-a-image';
|
|
5
|
+
import { $makeMetadata, Api, v } from 'vona-module-a-openapiutils';
|
|
4
6
|
import { $Dto } from 'vona-module-a-orm';
|
|
5
7
|
import { Dto } from 'vona-module-a-web';
|
|
6
8
|
import { ModelRecord, onEffectForTrainingRecordSubjects } from 'vona-module-training-record';
|
|
@@ -31,7 +33,19 @@ export class DtoDetailRecordBase extends $Dto.get(() => ModelRecord, {
|
|
|
31
33
|
'totalScore',
|
|
32
34
|
'averageScore',
|
|
33
35
|
'trainingTime',
|
|
36
|
+
'sceneImageIds',
|
|
34
37
|
'description',
|
|
35
38
|
],
|
|
36
39
|
include: { trainingRecordSubjects: true },
|
|
37
|
-
}) {
|
|
40
|
+
}) {
|
|
41
|
+
@Api.field(
|
|
42
|
+
ZovaRender.visible(false),
|
|
43
|
+
v.optional(),
|
|
44
|
+
v.serializerTransform('a-image:resolveViews', {
|
|
45
|
+
fieldName: 'sceneImageIds',
|
|
46
|
+
imageScene: 'training-record:sceneImage',
|
|
47
|
+
}),
|
|
48
|
+
v.array($Class.partial(DtoImageView)),
|
|
49
|
+
)
|
|
50
|
+
sceneImages?: Partial<DtoImageView>[];
|
|
51
|
+
}
|
|
@@ -31,7 +31,7 @@ export interface IDtoOptionsStudentCreate extends IDecoratorDtoOptions {}
|
|
|
31
31
|
fields: {
|
|
32
32
|
trainingRecords: $makeMetadata(
|
|
33
33
|
v.title($locale('TrainingRecords')),
|
|
34
|
-
ZovaRender.order(
|
|
34
|
+
ZovaRender.order(6),
|
|
35
35
|
ZovaRender.field('basic-details:formFieldDetails'),
|
|
36
36
|
v.optional(),
|
|
37
37
|
),
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { IDecoratorDtoOptions } from 'vona-module-a-web';
|
|
2
2
|
|
|
3
|
+
import { DtoImageView } from 'vona-module-a-image';
|
|
3
4
|
import { Api, v } from 'vona-module-a-openapiutils';
|
|
4
5
|
import { $Dto } from 'vona-module-a-orm';
|
|
5
6
|
import { Dto } from 'vona-module-a-web';
|
|
@@ -25,6 +26,17 @@ export interface IDtoOptionsStudentSelectResItem extends IDecoratorDtoOptions {}
|
|
|
25
26
|
],
|
|
26
27
|
})
|
|
27
28
|
export class DtoStudentSelectResItem extends $Dto.get(() => ModelStudent) {
|
|
29
|
+
@Api.field(
|
|
30
|
+
ZovaRender.visible(false),
|
|
31
|
+
v.optional(),
|
|
32
|
+
v.serializerTransform('a-image:resolveView', {
|
|
33
|
+
fieldName: 'imageId',
|
|
34
|
+
imageScene: 'training-student:studentImage',
|
|
35
|
+
}),
|
|
36
|
+
v.object(DtoImageView),
|
|
37
|
+
)
|
|
38
|
+
image?: DtoImageView;
|
|
39
|
+
|
|
28
40
|
@Api.field(
|
|
29
41
|
v.title($locale('Operations')),
|
|
30
42
|
ZovaRender.order(1, 'max'),
|
|
@@ -31,7 +31,7 @@ export interface IDtoOptionsStudentUpdate extends IDecoratorDtoOptions {}
|
|
|
31
31
|
fields: {
|
|
32
32
|
trainingRecords: $makeMetadata(
|
|
33
33
|
v.title($locale('TrainingRecords')),
|
|
34
|
-
ZovaRender.order(
|
|
34
|
+
ZovaRender.order(6),
|
|
35
35
|
ZovaRender.field('basic-details:formFieldDetails'),
|
|
36
36
|
),
|
|
37
37
|
},
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { IDecoratorDtoOptions } from 'vona-module-a-web';
|
|
2
2
|
|
|
3
|
+
import { DtoImageView } from 'vona-module-a-image';
|
|
3
4
|
import { $makeMetadata, Api, v } from 'vona-module-a-openapiutils';
|
|
4
5
|
import { $Dto } from 'vona-module-a-orm';
|
|
5
6
|
import { Dto } from 'vona-module-a-web';
|
|
@@ -28,7 +29,7 @@ export interface IDtoOptionsStudentView extends IDecoratorDtoOptions {}
|
|
|
28
29
|
fields: {
|
|
29
30
|
trainingRecords: $makeMetadata(
|
|
30
31
|
v.title($locale('TrainingRecords')),
|
|
31
|
-
ZovaRender.order(
|
|
32
|
+
ZovaRender.order(6),
|
|
32
33
|
ZovaRender.field('basic-details:formFieldDetails'),
|
|
33
34
|
),
|
|
34
35
|
},
|
|
@@ -36,6 +37,17 @@ export interface IDtoOptionsStudentView extends IDecoratorDtoOptions {}
|
|
|
36
37
|
export class DtoStudentView extends $Dto.get(() => ModelStudent, {
|
|
37
38
|
include: { trainingRecords: { dtoClass: DtoDetailRecordView } },
|
|
38
39
|
}) {
|
|
40
|
+
@Api.field(
|
|
41
|
+
ZovaRender.visible(false),
|
|
42
|
+
v.optional(),
|
|
43
|
+
v.serializerTransform('a-image:resolveView', {
|
|
44
|
+
fieldName: 'imageId',
|
|
45
|
+
imageScene: 'training-student:studentImage',
|
|
46
|
+
}),
|
|
47
|
+
v.object(DtoImageView),
|
|
48
|
+
)
|
|
49
|
+
image?: DtoImageView;
|
|
50
|
+
|
|
39
51
|
@Api.field(ZovaRender.visible(false), v.optional(), v.array(DtoDetailRecordResItem))
|
|
40
52
|
_trainingRecords?: DtoDetailRecordResItem[];
|
|
41
53
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TableIdentity } from 'table-identity';
|
|
1
2
|
import type { IDecoratorEntityOptions } from 'vona-module-a-orm';
|
|
2
3
|
|
|
3
4
|
import { $makeMetadata, Api, v } from 'vona-module-a-openapiutils';
|
|
@@ -58,10 +59,34 @@ export class EntityStudent extends EntityBase {
|
|
|
58
59
|
)
|
|
59
60
|
mobile: string;
|
|
60
61
|
|
|
62
|
+
@Api.field(
|
|
63
|
+
v.title($locale('StudentImage')),
|
|
64
|
+
v.optional(),
|
|
65
|
+
ZovaRender.order(4),
|
|
66
|
+
ZovaRender.field('basic-image:formFieldImage', {
|
|
67
|
+
imageScene: 'training-student:studentImage',
|
|
68
|
+
accept: ['image/png', 'image/jpeg', 'image/webp'],
|
|
69
|
+
maxSize: 2 * 1024 * 1024,
|
|
70
|
+
enableCrop: true,
|
|
71
|
+
cropAspectRatio: 1,
|
|
72
|
+
relationName: 'image',
|
|
73
|
+
resize: {
|
|
74
|
+
width: 512,
|
|
75
|
+
height: 512,
|
|
76
|
+
fit: 'cover',
|
|
77
|
+
format: 'jpeg',
|
|
78
|
+
quality: 90,
|
|
79
|
+
},
|
|
80
|
+
}),
|
|
81
|
+
ZovaRender.cell('basic-image:image', { relationName: 'image' }),
|
|
82
|
+
v.tableIdentity(),
|
|
83
|
+
)
|
|
84
|
+
imageId?: TableIdentity;
|
|
85
|
+
|
|
61
86
|
@Api.field(
|
|
62
87
|
v.title($locale('Level')),
|
|
63
88
|
v.required(),
|
|
64
|
-
ZovaRender.order(
|
|
89
|
+
ZovaRender.order(5),
|
|
65
90
|
// Tutorial 3 built-in form renderer example. Keep it commented here for side-by-side comparison.
|
|
66
91
|
// ZovaRender.field('basic-select:formFieldSelect', {
|
|
67
92
|
// items: studentLevelItems,
|
|
@@ -45,10 +45,7 @@ export class BeanAuthProvider extends BeanBase {
|
|
|
45
45
|
// clientName
|
|
46
46
|
const clientName = entityAuthProvider.clientName ?? 'default';
|
|
47
47
|
// onionSlice
|
|
48
|
-
const onionSlice = this.bean.onion.authProvider.getOnionSliceEnabled(
|
|
49
|
-
true,
|
|
50
|
-
authProviderName as any,
|
|
51
|
-
);
|
|
48
|
+
const onionSlice = this.bean.onion.authProvider.getOnionSliceEnabled(true, authProviderName);
|
|
52
49
|
if (!onionSlice) throw new Error(`Auth provider not found: ${authProviderName}`);
|
|
53
50
|
const beanFullName = onionSlice.beanOptions.beanFullName;
|
|
54
51
|
const onionOptions = onionSlice.beanOptions.options ?? {};
|
|
@@ -56,7 +53,7 @@ export class BeanAuthProvider extends BeanBase {
|
|
|
56
53
|
const clientOptions: IAuthProviderClientOptions = deepExtend(
|
|
57
54
|
clientOptionsDefault ?? {},
|
|
58
55
|
onionOptions?.base,
|
|
59
|
-
onionOptions?.clients?.[clientName
|
|
56
|
+
onionOptions?.clients?.[clientName],
|
|
60
57
|
entityAuthProvider.clientOptions,
|
|
61
58
|
clientOptionsCustom,
|
|
62
59
|
);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
IDecoratorImageProviderOptions,
|
|
3
|
+
IImageProviderClientOptions,
|
|
4
|
+
IImageProviderClientRecord,
|
|
5
|
+
IImageProviderExecute,
|
|
6
|
+
} from 'vona-module-a-image';
|
|
7
|
+
|
|
8
|
+
import { BeanBase } from 'vona';
|
|
9
|
+
import { ImageProvider } from 'vona-module-a-image';
|
|
10
|
+
|
|
11
|
+
export interface IImageProvider<%=argv.beanNameCapitalize%>ClientRecord extends IImageProviderClientRecord {}
|
|
12
|
+
|
|
13
|
+
export interface IImageProvider<%=argv.beanNameCapitalize%>ClientOptions extends IImageProviderClientOptions {}
|
|
14
|
+
|
|
15
|
+
export interface IImageProviderOptions<%=argv.beanNameCapitalize%> extends IDecoratorImageProviderOptions<
|
|
16
|
+
IImageProvider<%=argv.beanNameCapitalize%>ClientRecord,
|
|
17
|
+
IImageProvider<%=argv.beanNameCapitalize%>ClientOptions
|
|
18
|
+
> {}
|
|
19
|
+
|
|
20
|
+
@ImageProvider<IImageProviderOptionsNative>({
|
|
21
|
+
base: {},
|
|
22
|
+
})
|
|
23
|
+
export class ImageProvider<%=argv.beanNameCapitalize%> extends BeanBase implements IImageProviderExecute {}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "vona-module-a-image",
|
|
3
|
+
"version": "5.0.1",
|
|
4
|
+
"description": "",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"Vona Module"
|
|
7
|
+
],
|
|
8
|
+
"author": "",
|
|
9
|
+
"files": [
|
|
10
|
+
"assets",
|
|
11
|
+
"cli",
|
|
12
|
+
"dist",
|
|
13
|
+
"src"
|
|
14
|
+
],
|
|
15
|
+
"type": "module",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": [
|
|
19
|
+
"./src/index.ts",
|
|
20
|
+
"./dist/index.d.ts"
|
|
21
|
+
],
|
|
22
|
+
"import": "./src/index.ts",
|
|
23
|
+
"default": "./dist/index.js"
|
|
24
|
+
},
|
|
25
|
+
"./package.json": "./package.json"
|
|
26
|
+
},
|
|
27
|
+
"scripts": {
|
|
28
|
+
"clean": "rimraf dist tsconfig.build.tsbuildinfo",
|
|
29
|
+
"tsc:publish": "npm run clean && node ../../../../../packages-cli/cli/src/bin/vona.ts :bin:buildModule --sourcemap && tsc -p tsconfig.build.json",
|
|
30
|
+
"prepublishOnly": "npm run tsc:publish",
|
|
31
|
+
"prepack": "clean-package",
|
|
32
|
+
"postpack": "clean-package restore"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"clean-package": "^2.2.0",
|
|
36
|
+
"rimraf": "^6.1.3"
|
|
37
|
+
},
|
|
38
|
+
"clean-package": {
|
|
39
|
+
"indent": 2,
|
|
40
|
+
"remove": [
|
|
41
|
+
"clean-package",
|
|
42
|
+
"exports.\\..import"
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
"title": "a-image",
|
|
46
|
+
"vonaModule": {
|
|
47
|
+
"fileVersion": 1,
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"a-orm": "5.0.0",
|
|
50
|
+
"a-upload": "5.0.0",
|
|
51
|
+
"a-user": "5.0.0",
|
|
52
|
+
"a-web": "5.0.0"
|
|
53
|
+
},
|
|
54
|
+
"onions": {
|
|
55
|
+
"imageProvider": {
|
|
56
|
+
"optionsGlobalInterfaceName": "IDecoratorImageProviderOptions",
|
|
57
|
+
"optionsGlobalInterfaceFrom": "vona-module-a-image",
|
|
58
|
+
"scopeResource": true,
|
|
59
|
+
"boilerplate": "imageProvider/boilerplate"
|
|
60
|
+
},
|
|
61
|
+
"imageScene": {
|
|
62
|
+
"optionsGlobalInterfaceName": "IDecoratorImageSceneOptions",
|
|
63
|
+
"optionsGlobalInterfaceFrom": "vona-module-a-image",
|
|
64
|
+
"boilerplate": "imageScene/boilerplate"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|