/** * This file is part of the @egodigital/egoose distribution. * Copyright (c) e.GO Digital GmbH, Aachen, Germany (https://www.e-go-digital.com/) * * @egodigital/egoose is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, version 3. * * @egodigital/egoose is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see . */ import * as mongoose from 'mongoose'; /** * A suggestion for a mongo log document. */ export interface LogsDocument extends mongoose.Document { /** * The time, the entry has been created. */ created: Date; /** * The message. */ message: string; /** * The optional payload. */ payload?: string; /** * The type. */ type: number; /** * The time, the entry has been updated. */ updated?: Date; /** * The UUID of the entry. */ uuid: string; } /** * Options for connecting to a database. */ export interface MongoDatabaseOptions { /** * A custom function, that creates a Mongoose connection * from objects, when executing MongoDatabase.connect(). */ readonly connector?: (opts: MongoDatabaseOptions) => mongoose.Connection | PromiseLike; /** * The name of the database. */ readonly database: string; /** * The host address. */ readonly host: string; /** * Custom options for an underlying (mongoose) connection. */ readonly mongooseOptions?: any; /** * Additional options for the connection string. */ readonly options?: string; /** * The password for the authentification. */ readonly password?: string; /** * The TCP port. */ readonly port: number; /** * The user name. */ readonly user?: string; } /** * Global repository for MongoDB models. */ export declare const MONGO_MODELS: { [name: string]: mongoose.Model; }; /** * Global repository for MongoDB schemas. */ export declare const MONGO_SCHEMAS: { [name: string]: mongoose.Schema; }; /** * A MongoDB connection. */ export declare class MongoDatabase { readonly options: MongoDatabaseOptions; private _mongo; /** * Initializes a new instance of that class. * * @param {MongoDatabaseOptions} options Connection options. */ constructor(options: MongoDatabaseOptions); /** * Starts a connection to the server. * * @return {Promise} The promise, which indicates if operation was successful or not. */ connect(): Promise; /** * Closes the current connection. * * @return {Promise} The promise, which indicates if operation was successful or not. */ disconnect(): Promise; /** * Gets if there is currently an open database connection or not. */ readonly isConnected: boolean; /** * Returns a model by name. * * @param {string} name The name of the model. * * @return {mongoose.Model} The model. */ model(name: string): mongoose.Model; /** * Gets the underlying database connection. */ readonly mongo: mongoose.Connection; /** * Starts a query for a schema and a list of results. * * @param {string} schema The name of the schema. * @param {string} func The name of the initial function. * @param {any[]} [args] One or more argument for the function, like a condition. * * @return {mongoose.DocumentQuery} The query. */ query(schema: string, func: string, ...args: any[]): mongoose.DocumentQuery; /** * Starts a query for a schema and a single result. * * @param {string} schema The name of the schema. * @param {string} func The name of the initial function. * @param {any[]} [args] One or more argument for the function, like a condition. * * @return {mongoose.DocumentQuery} The query. */ queryOne(schema: string, func: string, ...args: any[]): mongoose.DocumentQuery; /** * Returns a schema by name. * * @param {string} name The name of the schema. * * @return {mongoose.Schema} The schema. */ schema(name: string): mongoose.Schema; } /** * Initializes the schema for a 'logs' collection. */ export declare function initLogsSchema(): void; /** * Checks if a value can be used as Mongo object ID or not. * * @param {any} val The value to check. * * @return {boolean} Can be used as object ID or not. */ export declare function isMongoId(val: any): boolean;