datum-focus
Version:
Data shape, model, metadata, JSON, JSON Schema, GraphQL, MongoDB query and aggregations, iterator generators
24 lines (19 loc) • 801 B
text/typescript
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));
}
}