IRepositoryGenerator
Defined in: generators/RepositoryGenerator.interface.ts:83
Repository 生成器接口
用于为不同类型的 Repository 生成特定的属性、类型定义和静态方法签名 遵循开闭原则:对扩展开放,对修改封闭
Remarks
生成器采用两阶段生成:
- generateProperties(): 生成 Repository 特有的计算属性、缓存属性等(可选)
- generateMethods(): 生成 Repository 特有的查询方法(必需)
基类 RepositoryMethodsGenerator 提供了 generateProperties() 钩子, 子类可选择性覆盖此方法。
Example
// 实现自定义 GeoRepository 生成器
export class GeoRepositoryGenerator extends RepositoryMethodsGenerator {
readonly name = 'GeoRepository';
// 【可选】生成 Geo 特有属性
protected generateProperties(context: GeneratorContext): void {
context.classProperties.push({
name: 'spatialIndex',
type: 'SpatialIndex',
isReadonly: true,
docs: ['空间索引实例,用于地理位置查询']
});
}
// 【必需】生成 Geo 特有方法
protected generateMethods(context: GeneratorContext): void {
this.addStaticMethod(context, {
method: 'findNearby',
options: 'FindNearbyOptions<typeof Entity>',
returnType: 'Entity[]',
metHodDoc: '查询附近的实体'
});
}
}
// 注册到生成器
const generator = new RxDBClientGenerator();
generator.registerRepositoryGenerator(new GeoRepositoryGenerator());
Properties
name
readonly name: string;
Defined in: generators/RepositoryGenerator.interface.ts:89
Generator 名称 必须与 EntityMetadata.repository 字段匹配
Example
'Repository', 'TreeRepository', 'GraphRepository', 'GeoRepository'
Methods
generate()
generate(context): void;
Defined in: generators/RepositoryGenerator.interface.ts:95
生成 Repository 特有的属性和方法
Parameters
| Parameter | Type | Description |
|---|---|---|
context | GeneratorContext | 生成上下文 |
Returns
void