UNPKG

datum-focus

Version:

Data shape, model, metadata, JSON, JSON Schema, GraphQL, MongoDB query and aggregations, iterator generators

24 lines (19 loc) 801 B
import { StorageAdapter, StorageAdapterParams } from "../adapter"; import { Model } from "../../model"; import { EphemeralRepository } from "./repository"; import { Repository } from "../repository"; const _repositories: Record<string, EphemeralRepository> = { }; export class EphemeralAdapter implements StorageAdapter { static register(key: string, repository: EphemeralRepository): void { _repositories[key] = repository; } constructor(params: StorageAdapterParams) {} resolve<T>(name: string, model: Model<T>): Promise<Repository<T>> { let repository = _repositories[name]; if (repository && repository.model.name === model.name) { return Promise.resolve(<EphemeralRepository<T>>repository); } return Promise.resolve(new EphemeralRepository<T>(model)); } }