import { Injectable } from './di'

/**
 * 仓库基类。
 *
 * 子类实现 `load`。
 */
@Injectable()
export abstract class Repository<K, T extends Entity = Entity> extends Base<string> implements Loader<T>, Disposable {
  /** 缓存 */
  private readonly cache = new Map<K, T>()

  abstract load(id: K): Promise<T>

  static Query = class extends QueryBase {
    run() {}
  }
}

export default class {
  x = 1
}

/** 类表达式 */
export const Mixed = class Inner extends mixin(A, B) {}

function make() {
  class Local {}
  return Local
}

@sealed class Plain {}
