chore: configure angular and postgres foundation
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { AppController } from './app.controller';
|
||||
import { AppService } from './app.service';
|
||||
import { DatabaseModule } from './database/database.module';
|
||||
|
||||
@Module({
|
||||
imports: [],
|
||||
imports: [DatabaseModule],
|
||||
controllers: [AppController],
|
||||
providers: [AppService],
|
||||
})
|
||||
|
||||
18
apps/api/src/config/database.config.spec.ts
Normal file
18
apps/api/src/config/database.config.spec.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import { createDatabaseConfig } from './database.config';
|
||||
|
||||
describe('createDatabaseConfig', () => {
|
||||
it('uses postgres and permanently disables synchronization', () => {
|
||||
expect(
|
||||
createDatabaseConfig('postgresql://test:test@localhost/test'),
|
||||
).toMatchObject({
|
||||
type: 'postgres',
|
||||
url: 'postgresql://test:test@localhost/test',
|
||||
synchronize: false,
|
||||
autoLoadEntities: true,
|
||||
});
|
||||
});
|
||||
|
||||
it('rejects an empty database URL', () => {
|
||||
expect(() => createDatabaseConfig('')).toThrow('DATABASE_URL is required');
|
||||
});
|
||||
});
|
||||
16
apps/api/src/config/database.config.ts
Normal file
16
apps/api/src/config/database.config.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { TypeOrmModuleOptions } from '@nestjs/typeorm';
|
||||
|
||||
export function createDatabaseConfig(
|
||||
databaseUrl: string,
|
||||
): TypeOrmModuleOptions {
|
||||
if (!databaseUrl.trim()) {
|
||||
throw new Error('DATABASE_URL is required');
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'postgres',
|
||||
url: databaseUrl,
|
||||
autoLoadEntities: true,
|
||||
synchronize: false,
|
||||
};
|
||||
}
|
||||
16
apps/api/src/database/data-source.ts
Normal file
16
apps/api/src/database/data-source.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import 'dotenv/config';
|
||||
import { DataSource } from 'typeorm';
|
||||
|
||||
const databaseUrl = process.env.DATABASE_URL;
|
||||
|
||||
if (!databaseUrl?.trim()) {
|
||||
throw new Error('DATABASE_URL is required');
|
||||
}
|
||||
|
||||
export const AppDataSource = new DataSource({
|
||||
type: 'postgres',
|
||||
url: databaseUrl,
|
||||
entities: [__dirname + '/../**/*.entity.{ts,js}'],
|
||||
migrations: [__dirname + '/migrations/*.{ts,js}'],
|
||||
synchronize: false,
|
||||
});
|
||||
12
apps/api/src/database/database.module.ts
Normal file
12
apps/api/src/database/database.module.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { createDatabaseConfig } from '../config/database.config';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
TypeOrmModule.forRootAsync({
|
||||
useFactory: () => createDatabaseConfig(process.env.DATABASE_URL ?? ''),
|
||||
}),
|
||||
],
|
||||
})
|
||||
export class DatabaseModule {}
|
||||
Reference in New Issue
Block a user