@techmmunity/symbiosis
Version:
Symbiosis - The Ultimate OM For All Databases
101 lines (100 loc) • 3.81 kB
TypeScript
import type { Logger } from "../logger";
import type { AutoGenerateEntityToDatabaseParams } from "./methods/auto-generate-entity-to-database";
import type { ConvertColumnsNamesParams } from "./methods/convert-columns-names";
import type { ConvertDatabaseToEntityParams } from "./methods/convert-database-to-entity";
import type { ConvertEntityToDatabaseParams } from "./methods/convert-entity-to-database";
import type { FormatConditionsParams } from "./methods/format-conditions";
import type { FormatOrderParams } from "./methods/format-order";
import type { BaseConnectionOptions } from "../connection/types/connection-options";
import type { DatabaseEntity } from "../types/database-entity";
import type { BaseExtraMetadata } from "../types/extra-metadata";
import type { EntityManagerEntities } from "./types/manager-metadata";
interface EntityManagerConstructorParams {
connectionOptions: BaseConnectionOptions;
logger: Logger;
entities: Array<any>;
}
/**
* Responsible of store and manage all entities metadata
* for a specific connection.
*/
export declare class EntityManager<ExtraMetadata extends BaseExtraMetadata = any> {
/**
* Logger
*/
private readonly logger;
/**
* Connection Options
*/
private readonly connectionOptions;
/**
* Saves the metadata of all the entities, columns, etc
*
* Format:
* ```
* {
* [Entity Class Name]: {
* ...[Entity Metadata Here]
* column: [
* ...[Array Of Columns Metadata]
* ]
* }
* }
* ```
*/
readonly entities: EntityManagerEntities<ExtraMetadata>;
/**
* ---------------------------------------------------
*
* Constructor
*
* ---------------------------------------------------
*/
constructor({ connectionOptions, logger, entities, }: EntityManagerConstructorParams);
/**
* ---------------------------------------------------
*
* Getters
*
* ---------------------------------------------------
*/
getAllEntitiesMetadata(): EntityManagerEntities<ExtraMetadata>;
/**
* Returns ONLY the entities that AREN'T SubEntities
*/
getAllTablesMetadata(): import("./types/manager-metadata").IncrementedEntitiesMetadata<ExtraMetadata>[];
getEntityMetadata(entity: any): import("./types/manager-metadata").IncrementedEntitiesMetadata<ExtraMetadata>;
getColumnMetadata(entity: any, columnName: string): import("./types/column-metadata").ColumnMetadata<ExtraMetadata["column"]>;
getEntityPrimaryColumns(entity: any): import("./types/column-metadata").ColumnMetadata<ExtraMetadata["column"]>[];
/**
* Auto Generate Fields (Entity -> Database)
*
* AutoGenerate Columns Fields **BEFORE** the data
* be formatted to the database pattern
*/
autoGenerateEntityToDatabase<Entity>(params: AutoGenerateEntityToDatabaseParams<Entity>): Entity;
/**
* Converts an entity data to database data
*
* This must be called **AFTER** the
* `autoGenerateEntityToDatabase` method
*/
convertEntityToDatabase(params: ConvertEntityToDatabaseParams): DatabaseEntity;
/**
* Converts database data to an entity data
*/
convertDatabaseToEntity<Entity>(params: ConvertDatabaseToEntityParams): Entity | undefined;
/**
* Format conditions to the database style
*/
formatConditions(params: FormatConditionsParams): FormatConditionsParams["conditions"];
/**
* Format "order" to the database style
*/
formatOrder(params: FormatOrderParams): FormatOrderParams["orderBy"];
/**
* Format convert array columns names to the database style
*/
convertColumnsNames(params: ConvertColumnsNamesParams): Array<string>;
}
export {};