跳到主要内容

IRepositoryGenerator

Defined in: generators/RepositoryGenerator.interface.ts:83

Repository 生成器接口

用于为不同类型的 Repository 生成特定的属性、类型定义和静态方法签名 遵循开闭原则:对扩展开放,对修改封闭

Remarks

生成器采用两阶段生成:

  1. generateProperties(): 生成 Repository 特有的计算属性、缓存属性等(可选)
  2. 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

ParameterTypeDescription
contextGeneratorContext生成上下文

Returns

void