Added Swagger and TypeORM, added Hello World

This commit is contained in:
R40fendt
2026-01-29 20:42:07 +01:00
parent be19571e30
commit 1948ce58d3
7 changed files with 679 additions and 98 deletions

View File

@@ -1,12 +1,15 @@
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
import { Query, Resolver } from '@nestjs/graphql';
@Controller()
@Resolver()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
@Query(()=>String)
@Get("/")
hello(): string {
return this.appService.getHello();
}
}

View File

@@ -3,19 +3,18 @@ import { AppController } from './app.controller';
import { AppService } from './app.service';
import { GraphQLModule } from '@nestjs/graphql';
import { MercuriusDriver, MercuriusDriverConfig } from '@nestjs/mercurius';
import { HelloResolver } from './hello.resolver';
import { databaseProviders } from './database.providers';
@Module({
imports: [
GraphQLModule.forRoot<MercuriusDriverConfig>({
driver: MercuriusDriver,
path: '/api/graphql',
graphiql: true,
autoSchemaFile: true
} as MercuriusDriverConfig),
],
controllers: [AppController],
providers: [AppService,HelloResolver],
providers: [AppService, AppController, ...databaseProviders],
})
export class AppModule {}

23
src/database.providers.ts Normal file
View File

@@ -0,0 +1,23 @@
import { DataSource } from 'typeorm';
export const databaseProviders = [
{
provide: 'DATA_SOURCE',
useFactory: async () => {
const dataSource = new DataSource({
type: 'mysql',
host: process.env.DB_HOST || 'database',
port: parseInt(process.env.DB_PORT || "3006"),
username: process.env.DB_USER || 'root',
password: process.env.DB_PASSWORD || 'root',
database: process.env.DB_NAME || 'ritzenbergen',
entities: [
__dirname + '/**/*.entity{.ts,.js}',
],
synchronize: true,
});
return dataSource.initialize();
},
},
];

View File

@@ -1,10 +0,0 @@
import { Resolver, Query } from '@nestjs/graphql';
@Resolver()
export class HelloResolver {
@Query(() => String)
hello(): string {
return 'hello world';
}
}

View File

@@ -1,9 +1,23 @@
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { NestFastifyApplication, FastifyAdapter } from '@nestjs/platform-fastify';
import { FastifyContextConfig } from 'fastify';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
async function bootstrap() {
const app = await NestFactory.create<NestFastifyApplication>(AppModule, new FastifyAdapter());
await app.listen(process.env.PORT ?? 3000);
const app = await NestFactory.create<NestFastifyApplication>(AppModule, new FastifyAdapter({
listeningOrigin: "0.0.0.0"
} as FastifyContextConfig));
const config = new DocumentBuilder()
.setTitle('Ritzenbergen API')
.setDescription('The Ritzenbergen API description')
.setVersion('1.0')
.addTag('ritzenbergen')
.build();
const document = SwaggerModule.createDocument(app, config);
SwaggerModule.setup('/api/docs', app, document);
await app.listen(process.env.PORT ?? 3000, "0.0.0.0");
}
bootstrap();