Skip to main content

AbimongoBootstrap

@abimongo/core v1.1.5


@abimongo/core / AbimongoBootstrap

Class: AbimongoBootstrap

Defined in: core/src/lib-core/bootstrap/AbimongoBootstrap.ts:97

AbimongoBootstrap is the main entry point for initializing and managing the Abimongo application stack when you opt for the CLI. It handles MongoDB, Redis, and GraphQL setup, along with custom hooks for post-connection logic.

Examples​

npx abimongo-core my-project 
cd my-project

This will create a new Abimongo project in the 'my-project' directory. You can then customize the configuration file and start using Abimongo in your application.


Add flags as needed:

npx abimongo-core my-project --withRedis --withGraphQL --multiTenant
cd my-project

This will create a new Abimongo project with Redis caching, GraphQL support, and multi-tenancy enabled. enabling them in the configuration file.


You can also use AbimongoBootstrap programmatically in your application:

@example
import { AbimongoBootstrapFactory } from '@abimongo/core';
async function start() {
const abimongo = await AbimongoBootstrapFactory.create();
const db = abimongo.getMongoClient();
await db.connect();
const graphql = await abimongo.getGraphQL();
// You can now use the GraphQL instance to generate schema or start a server
// or perform other GraphQL related operations
graphql.generateSchema();
abimongo.getRedisClient();
}
start();
// With custom configuration file
import { AbimongoBootstrapFactory } from '@abimongo/core';
export async function start() {
const abimongo = await AbimongoBootstrapFactory.create('path/to/custom-abimongo.config.json');
const db = abimongo.getMongoClient();
await db.connect();
const graphql = await abimongo.getGraphQL();
// You can now use the GraphQL instance to generate schema or start a server
// or perform other GraphQL related operations
graphql.generateSchema();
abimongo.getRedisClient();
}

abimongo.registerMultiTenancy(app, {
'tenant1': 'mongodb://localhost:27017/tenant1db',
'tenant2': 'mongodb://localhost:27017/tenant2db',
}, {
headerKey: 'x-tenant-id',
initOptions: { /* custom options * / } // This where you can lazily initialize tenants if needed
});
};
*

Param​

Optional path to a custom configuration file or a config object. If not provided, it defaults to 'abimongo.config.json'.

Constructors​

Constructor​

new AbimongoBootstrap(): AbimongoBootstrap

Defined in: core/src/lib-core/bootstrap/AbimongoBootstrap.ts:109

Returns​

AbimongoBootstrap

Properties​

logger​

logger: ILogger | AbimongoLogger

Defined in: core/src/lib-core/bootstrap/AbimongoBootstrap.ts:103

Methods​

cache()​

cache<T>(key, fetcher, options): Promise<T>

Defined in: core/src/lib-core/bootstrap/AbimongoBootstrap.ts:281

Type Parameters​

T​

T

Parameters​

key​

string

fetcher​

() => Promise<T>

options​
namespace?​

string

prefix?​

string

tenantId?​

string

ttlSeconds?​

number

Returns​

Promise<T>


getGCRunner()​

getGCRunner(): AbimongoGC | undefined

Defined in: core/src/lib-core/bootstrap/AbimongoBootstrap.ts:333

Returns​

AbimongoGC | undefined


getGraphQL()​

getGraphQL(): AbimongoGraphQL | undefined

Defined in: core/src/lib-core/bootstrap/AbimongoBootstrap.ts:329

Returns​

AbimongoGraphQL | undefined


getModel()​

getModel(): AbimongoModel<Document> | undefined

Defined in: core/src/lib-core/bootstrap/AbimongoBootstrap.ts:322

Returns​

AbimongoModel<Document> | undefined


getMongoClient()​

getMongoClient(): AbimongoClient | undefined

Defined in: core/src/lib-core/bootstrap/AbimongoBootstrap.ts:314

Returns​

AbimongoClient | undefined


getRedisClient()​

getRedisClient(): Promise<any>

Defined in: core/src/lib-core/bootstrap/AbimongoBootstrap.ts:306

Returns the Redis client if Redis is enabled in the configuration.

Returns​

Promise<any>

A promise that resolves to the Redis client.


getSchema()​

getSchema(): AbimongoSchema<Document> | undefined

Defined in: core/src/lib-core/bootstrap/AbimongoBootstrap.ts:325

Returns​

AbimongoSchema<Document> | undefined


initialize()​

initialize(configFilePathOrObject?): Promise<void>

Defined in: core/src/lib-core/bootstrap/AbimongoBootstrap.ts:127

Initializes the Abimongo application stack. This method sets up MongoDB, Redis, and GraphQL connections, and executes any registered onConnect hooks.

Parameters​

configFilePathOrObject?​

Optional path to a custom configuration file or a config object. If not provided, it defaults to 'abimongo.config.json'.

string | AbimongoConfig

Returns​

Promise<void>


invalidateCache()​

invalidateCache(tenantId, namespace?): Promise<void>

Defined in: core/src/lib-core/bootstrap/AbimongoBootstrap.ts:295

Parameters​

tenantId​

string

namespace?​

string

Returns​

Promise<void>


onConnect()​

onConnect(hook): void

Defined in: core/src/lib-core/bootstrap/AbimongoBootstrap.ts:116

Register a hook to be called after the connection is established. This can be used for custom initialization logic that depends on the database being ready.

Parameters​

hook​

OnConnectHook

A function that will be called after the connection is established.

Returns​

void


registerMultiTenancy()​

registerMultiTenancy(application, tenants, options): Promise<void>

Defined in: core/src/lib-core/bootstrap/AbimongoBootstrap.ts:257

Parameters​

application​

Application

tenants​

Record<string, string>

options​
headerKey?​

string

initOptions?​

InitMultiTenancyOptions

Returns​

Promise<void>


shutdown()​

shutdown(): Promise<void>

Defined in: core/src/lib-core/bootstrap/AbimongoBootstrap.ts:337

Returns​

Promise<void>