fireorm
Version:
ORM for Firestore
48 lines (47 loc) • 1.88 kB
TypeScript
import { Firestore } from '@google-cloud/firestore';
import type { IEntityConstructor, IEntityRepositoryConstructor, ValidatorOptions } from './types';
export interface CollectionMetadata {
name: string;
entityConstructor: IEntityConstructor;
parentEntityConstructor?: IEntityConstructor;
propertyKey?: string;
}
export interface SubCollectionMetadata extends CollectionMetadata {
parentEntityConstructor: IEntityConstructor;
propertyKey: string;
}
export interface CollectionMetadataWithSegments extends CollectionMetadata {
segments: string[];
}
export interface SubCollectionMetadataWithSegments extends SubCollectionMetadata {
segments: string[];
}
export interface FullCollectionMetadata extends CollectionMetadataWithSegments {
subCollections: SubCollectionMetadataWithSegments[];
}
export interface RepositoryMetadata {
target: IEntityRepositoryConstructor;
entity: IEntityConstructor;
}
export interface MetadataStorageConfig {
validateModels: boolean;
validatorOptions?: ValidatorOptions;
}
export declare class MetadataStorage {
readonly collections: Array<CollectionMetadataWithSegments>;
protected readonly repositories: Map<IEntityConstructor, RepositoryMetadata>;
config: MetadataStorageConfig;
getCollection: (pathOrConstructor: string | IEntityConstructor) => {
subCollections: SubCollectionMetadataWithSegments[];
segments: string[];
name: string;
entityConstructor: IEntityConstructor;
parentEntityConstructor?: IEntityConstructor;
propertyKey?: string;
};
setCollection: (col: CollectionMetadata) => void;
getRepository: (param: IEntityConstructor) => RepositoryMetadata;
setRepository: (repo: RepositoryMetadata) => void;
getRepositories: () => Map<IEntityConstructor, RepositoryMetadata>;
firestoreRef: Firestore;
}