|
|
@@ -1,9 +1,11 @@
|
|
|
import { DataSource, Repository, ObjectLiteral, DeepPartial, In } from 'typeorm';
|
|
|
import { z } from '@hono/zod-openapi';
|
|
|
+import { DataPermissionOptions, validateDataPermissionOptions } from '../types/data-permission.types';
|
|
|
|
|
|
export abstract class GenericCrudService<T extends ObjectLiteral> {
|
|
|
protected repository: Repository<T>;
|
|
|
private userTrackingOptions?: UserTrackingOptions;
|
|
|
+ private dataPermissionOptions?: DataPermissionOptions;
|
|
|
|
|
|
protected relationFields?: RelationFieldOptions;
|
|
|
|
|
|
@@ -13,11 +15,18 @@ export abstract class GenericCrudService<T extends ObjectLiteral> {
|
|
|
options?: {
|
|
|
userTracking?: UserTrackingOptions;
|
|
|
relationFields?: RelationFieldOptions;
|
|
|
+ dataPermission?: DataPermissionOptions;
|
|
|
}
|
|
|
) {
|
|
|
this.repository = this.dataSource.getRepository(entity);
|
|
|
this.userTrackingOptions = options?.userTracking;
|
|
|
this.relationFields = options?.relationFields;
|
|
|
+
|
|
|
+ // 验证并设置数据权限配置
|
|
|
+ if (options?.dataPermission) {
|
|
|
+ validateDataPermissionOptions(options.dataPermission);
|
|
|
+ this.dataPermissionOptions = options.dataPermission;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -321,4 +330,8 @@ export type CrudOptions<
|
|
|
userTracking?: UserTrackingOptions;
|
|
|
relationFields?: RelationFieldOptions;
|
|
|
readOnly?: boolean;
|
|
|
+ /**
|
|
|
+ * 数据权限控制配置
|
|
|
+ */
|
|
|
+ dataPermission?: DataPermissionOptions;
|
|
|
};
|