跳到主要内容

RepositoryGeneratorBase

Defined in: generators/RepositoryGeneratorBase.ts:78

基础 Repository 生成器(抽象基类) 提供通用工具方法,子类继承后生成各自的 Repository 属性和方法

Extended by​

Implements​

Constructors​

Constructor​

new RepositoryGeneratorBase(): RepositoryGeneratorBase;

Returns​

RepositoryGeneratorBase

Properties​

abstractEntityMetadata?​

readonly optional abstractEntityMetadata?: ReadonlyMap<string, EntityMetadataOptions[]>;

Defined in: generators/RepositoryGeneratorBase.ts:85

本生成器负责的抽象实体基类元数据,键为基类名,值按「自身 → 祖先」顺序排列。

Remarks​

抽象基类的装饰器实参通常是一个常量标识符(@Entity(GRAPH_ENTITY_BASE_OPTIONS)), CLI 的静态求值取不到它的值;而基类元数据又必须在分析实体源码时就位,否则 extends GraphEntityBase 的实体直接报「无法静态求值」。

由生成器随身携带这份数据后,分析器按 entityBaseModuleSpecifier 指向的包名 加基类名回填——生成器包因此不必为每个插件的基类反向依赖该插件。 只声明了本字段而没有 entityBaseModuleSpecifier 的生成器不会被分析器采纳: 少了包名就只能按类名匹配,用户自己写的同名类会被顶替。

Implementation of​

IRepositoryGenerator.abstractEntityMetadata


entityBaseModuleSpecifier?​

readonly optional entityBaseModuleSpecifier?: string;

Defined in: generators/RepositoryGeneratorBase.ts:82

实体运行时基类的来源模块;未设置时使用 @aiao/rxdb。

Implementation of​

IRepositoryGenerator.entityBaseModuleSpecifier


name​

abstract readonly name: string;

Defined in: generators/RepositoryGeneratorBase.ts:79

Generator 名称 必须与 EntityMetadata.repository 字段匹配

Example​

'Repository', 'TreeRepository', 'GraphRepository', 'GeoRepository'

Implementation of​

IRepositoryGenerator.name

Methods​

addInstanceMethod()​

protected addInstanceMethod(context, config): void;

Defined in: generators/RepositoryGeneratorBase.ts:217

共享工具:添加实例方法

Parameters​

ParameterType
contextGeneratorContext
config{ docs: string[]; name: string; returnType: string; }
config.docsstring[]
config.namestring
config.returnTypestring

Returns​

void


addInstanceProperty()​

protected addInstanceProperty(context, config): void;

Defined in: generators/RepositoryGeneratorBase.ts:235

共享工具:添加实例函数属性

Parameters​

ParameterType
contextGeneratorContext
config{ docs: string[]; name: string; type: string; }
config.docsstring[]
config.namestring
config.typestring

Returns​

void


addStaticMethod()​

protected addStaticMethod(context, config): void;

Defined in: generators/RepositoryGeneratorBase.ts:136

共享工具:添加静态查询方法

Parameters​

ParameterType
contextGeneratorContext
config{ baseSignature?: { entityBase: string; options: string; parameterName?: string; returnType: string; }; example?: string; method: string; metHodDoc?: string; options: string; optionsIsRequired?: boolean; registerOptions?: boolean; resultWrapper?: "Observable" | "Promise"; returnType: string; }
config.baseSignature?{ entityBase: string; options: string; parameterName?: string; returnType: string; }
config.baseSignature.entityBasestring
config.baseSignature.optionsstring
config.baseSignature.parameterName?string
config.baseSignature.returnTypestring
config.example?string
config.methodstring
config.metHodDoc?string
config.optionsstring
config.optionsIsRequired?boolean
config.registerOptions?boolean
config.resultWrapper?"Observable" | "Promise"
config.returnTypestring

Returns​

void


addTypeImport()​

protected addTypeImport(context, name): void;

Defined in: generators/RepositoryGeneratorBase.ts:124

登记一个类型导入,按本生成器的 entityBaseModuleSpecifier 分流。

Parameters​

ParameterType
contextGeneratorContext
namestring

Returns​

void

Remarks​

树实体的基类与配套选项类型(TreeAdjacencyListEntityBase / FindTreeOptions)在 @aiao/rxdb-plugin-tree;没有声明 specifier 的生成器一律落回 @aiao/rxdb。


generate()​

generate(context): void;

Defined in: generators/RepositoryGeneratorBase.ts:87

生成 Repository 特有的属性和方法

Parameters​

ParameterTypeDescription
contextGeneratorContext生成上下文

Returns​

void

Implementation of​

IRepositoryGenerator.generate


generateMethods()​

abstract protected generateMethods(context): void;

Defined in: generators/RepositoryGeneratorBase.ts:115

子类实现:生成具体的 Repository 方法

Parameters​

ParameterType
contextGeneratorContext

Returns​

void


generateProperties()​

protected generateProperties(context): void;

Defined in: generators/RepositoryGeneratorBase.ts:108

生成器钩子:生成特定的 Repository 属性 子类可选择性覆盖此方法,生成特定的计算属性、索引等

Parameters​

ParameterType
contextGeneratorContext

Returns​

void

Example​

// Tree Generator 可能需要生成树级别缓存属性
protected generateProperties(context: GeneratorContext): void {
context.classProperties.push({
name: 'maxDepth',
type: 'number',
isReadonly: true
});
}

getIdType()​

protected getIdType(metadata): IdType;

Defined in: generators/RepositoryGeneratorBase.ts:253

共享工具:获取 ID 类型

Parameters​

ParameterType
metadataReadonly<EntityMetadataType>

Returns​

IdType