UNPKG

@techmmunity/symbiosis

Version:

Symbiosis - The Ultimate OM For All Databases

101 lines (100 loc) 3.81 kB
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 {};