Add Random Image

This commit is contained in:
2026-05-05 12:29:45 +02:00
parent 623cdc6c37
commit 690a640b31
4 changed files with 128 additions and 51 deletions

View File

@@ -1,50 +1,115 @@
import { BadRequestException, Controller, Get, Header, Inject, Param, Res } from "@nestjs/common";
import { GalerieService } from "./galerie.service";
import sharp from "sharp";
import path from "path";
import { Controller, Get, Header, Inject, Param, Res } from '@nestjs/common';
import { GalerieService } from './galerie.service';
import sharp from 'sharp';
import path from 'path';
import { Args, Field, ObjectType, Query, Resolver } from '@nestjs/graphql';
import { JahrMitBild } from 'src/dto/galerie.dto';
@Controller('/api/galerie')
export class GalerieController {
constructor(
@Inject()
private readonly galerieService: GalerieService
){}
constructor(
@Inject()
private readonly galerieService: GalerieService,
) {}
@Get("/bilder/:event/:jahr")
async getBilder(
@Param("event")
event: string,
@Param("jahr")
jahr: string
): Promise<string[]> {
return this.galerieService.getBilder(event, jahr);
}
@Get('/bilder/:event/:jahr')
async getBilder(
@Param('event') event: string,
@Param('jahr') jahr: number,
): Promise<string[]> {
return this.galerieService.getBilder(event, jahr);
}
@Get('/jahre/:event')
async getJahre(@Param('event') event: string): Promise<JahrMitBild[]> {
return this.galerieService.getJahre(event);
}
@Get("/jahre/:event")
async getJahre(
@Param("event")
event: string
): Promise<string[]> {
return this.galerieService.getJahre(event);
}
@Get('/bild/:event/:jahr/:bild')
@Header('Content-Type', 'image/png')
async getBild(
@Param('event')
event: string,
@Param('jahr')
jahr: number,
@Param('bild')
bild: string,
): Promise<Buffer> {
const filePath =
'/bilder/' +
path.basename(event) +
'/' +
path.basename(jahr.toString()) +
'/' +
path.basename(bild);
@Get("/bild/:event/:jahr/:bild")
@Header('Content-Type', 'image/png')
async getBild(
@Param("event")
event: string,
@Param("jahr")
jahr: string,
@Param("bild")
bild: string,
): Promise<Buffer> {
return sharp(filePath).png().toBuffer();
}
@Get('/randomimage/:event')
@Header('Content-Type', 'image/png')
async getRandomImageOhneJahr(
@Param('event')
event: string,
): Promise<Buffer> {
const jahr=await this.galerieService.getRandomYear(event)
const filePath =
'/bilder/' +
path.basename(event) +
'/' +
jahr+
'/' +
await this.galerieService.getRandomImage(event,jahr)
const filePath="/bilder/"+path.basename(event)+"/"+path.basename(jahr)+"/"+path.basename(bild);
return sharp(filePath).png().toBuffer();
}
return sharp(filePath).png().toBuffer();
}
@Get('/randomimage/:event/:jahr')
@Header('Content-Type', 'image/png')
async getRandomImage(
@Param('event')
event: string,
@Param('jahr')
jahr: number,
): Promise<Buffer> {
const filePath =
'/bilder/' +
path.basename(event) +
'/' +
path.basename(jahr.toString()) +
'/' +
await this.galerieService.getRandomImage(event,jahr)
return sharp(filePath).png().toBuffer();
}
}
@Resolver()
export class GalerieResolver {
constructor(private readonly galerieService: GalerieService) {}
@Query(() => [String])
async getBilder(
@Args('event', { type: () => String }) event: string,
@Args('jahr', { type: () => Number }) jahr: number,
): Promise<string[]> {
return this.galerieService.getBilder(event, jahr);
}
@Query(() => [JahrMitBildEntity])
async bilder(
@Args('event', { type: () => String }) event: string,
): Promise<JahrMitBildEntity[]> {
return this.galerieService.getJahre(event);
}
}
@ObjectType()
export class JahrMitBildEntity implements JahrMitBild {
@Field(() => Number)
jahr: number;
@Field(() => [String])
bild: string[];
constructor(jahr: number, bild: string[]) {
this.jahr = jahr;
this.bild = bild;
}
}