No description
|
Some checks failed
Build and Publish / build-and-publish (push) Failing after 47s
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com> |
||
|---|---|---|
| .forgejo/workflows | ||
| .githooks | ||
| src | ||
| .gitignore | ||
| eslint.config.js | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| tsup.config.ts | ||
@lilith/typeorm-config
Database configuration factory for TypeORM with NestJS integration.
Features
- Data Source Factory: Create TypeORM DataSource from environment variables
- Environment Validation: Validate and load database configuration
- NestJS Module: Dynamic module for NestJS integration
- Type-safe Configuration: Full TypeScript support
- Sensible Defaults: Preconfigured defaults for common settings
Installation
pnpm add @lilith/typeorm-config
Peer Dependencies
pnpm add typeorm
# For NestJS integration
pnpm add @nestjs/common @nestjs/typeorm
Quick Start
Standalone Usage
import { createDataSource, loadDatabaseConfig } from '@lilith/typeorm-config';
import { User } from './entities/user.entity';
const dataSource = createDataSource({
entities: [User],
migrations: ['./migrations/*.ts'],
synchronize: false,
});
await dataSource.initialize();
NestJS Integration
import { Module } from '@nestjs/common';
import { TypeOrmConfigModule } from '@lilith/typeorm-config';
import { User } from './entities/user.entity';
@Module({
imports: [
TypeOrmConfigModule.forRoot({
entities: [User],
migrations: ['./migrations/*.ts'],
migrationsRun: true,
}),
],
})
export class AppModule {}
Environment Variables
| Variable | Description | Default |
|---|---|---|
DATABASE_HOST |
Database host address | localhost |
DATABASE_PORT |
Database port number | 5432 |
DATABASE_USER |
Database username | postgres |
DATABASE_PASSWORD |
Database password | (required) |
DATABASE_NAME |
Database name | (required) |
DATABASE_SSL |
Enable SSL connection | false |
DATABASE_LOGGING |
Enable query logging | false |
API Reference
createDataSource
Create a TypeORM DataSource from environment:
import { createDataSource } from '@lilith/typeorm-config';
const dataSource = createDataSource({
entities: [User, Post],
migrations: ['./migrations/*.ts'],
synchronize: false,
poolSize: 10,
});
createDataSourceWithConfig
Create DataSource with explicit configuration:
import { createDataSourceWithConfig } from '@lilith/typeorm-config';
const dataSource = createDataSourceWithConfig(
{
host: 'localhost',
port: 5432,
username: 'postgres',
password: 'password',
database: 'mydb',
ssl: false,
logging: true,
},
{
entities: [User],
synchronize: false,
}
);
loadDatabaseConfig
Load and validate database configuration from environment:
import { loadDatabaseConfig } from '@lilith/typeorm-config';
const config = loadDatabaseConfig();
// {
// host: 'localhost',
// port: 5432,
// username: 'postgres',
// password: '...',
// database: 'mydb',
// ssl: false,
// logging: false,
// }
validateRequiredEnvVars
Validate that required environment variables are set:
import { validateRequiredEnvVars, MissingEnvVarsError } from '@lilith/typeorm-config';
try {
validateRequiredEnvVars();
} catch (error) {
if (error instanceof MissingEnvVarsError) {
console.error('Missing:', error.missingVars);
}
}
TypeOrmConfigModule
NestJS dynamic module:
import { TypeOrmConfigModule } from '@lilith/typeorm-config';
@Module({
imports: [
TypeOrmConfigModule.forRoot({
entities: [User, Post],
migrations: ['./migrations/*.ts'],
migrationsRun: true,
synchronize: false,
}),
],
})
export class AppModule {}
Types
interface DatabaseConfig {
host: string;
port: number;
username: string;
password: string;
database: string;
ssl: boolean;
logging: boolean;
extra?: Record<string, unknown>;
}
interface DataSourceOptions {
entities?: Array<Function | string>;
migrations?: Array<Function | string>;
subscribers?: Array<Function | string>;
migrationsRun?: boolean;
synchronize?: boolean;
schema?: string;
poolSize?: number;
extra?: Record<string, unknown>;
}
License
MIT