feat(backend): Suche und Filter (Modul 14)
SearchModule mit GET /search?q= über Bienenstände, Völker, Königinnen, Aufgaben und Honigchargen. Kombinierbare Filter (Status, Standort, Bienenstand) in den bestehenden List-Endpunkten.
This commit is contained in:
1 parent
55b9bc2587
commit
146b56d683
15 files changed
+337
-27
No files matched your search
@@ -1,10 +1,15 @@
|
||||
import { Injectable, NotFoundException } from '@nestjs/common';
|
||||
import { PrismaService } from '../prisma/prisma.service';
|
||||
import { AuditLogService } from '../audit/audit-log.service';
|
||||
import { Apiary } from '../../generated/prisma';
|
||||
import { Apiary, ApiaryStatus } from '../../generated/prisma';
|
||||
import { CreateApiaryDto } from './dto/create-apiary.dto';
|
||||
import { UpdateApiaryDto } from './dto/update-apiary.dto';
|
||||
|
||||
export interface ApiaryFilter {
|
||||
status?: ApiaryStatus;
|
||||
location?: string;
|
||||
}
|
||||
|
||||
@Injectable()
|
||||
export class ApiariesService {
|
||||
constructor(
|
||||
@@ -12,8 +17,16 @@ export class ApiariesService {
|
||||
private readonly auditLog: AuditLogService,
|
||||
) {}
|
||||
|
||||
async findAll(): Promise<Apiary[]> {
|
||||
return this.prisma.apiary.findMany({ orderBy: { name: 'asc' } });
|
||||
async findAll(filter: ApiaryFilter = {}): Promise<Apiary[]> {
|
||||
return this.prisma.apiary.findMany({
|
||||
where: {
|
||||
status: filter.status,
|
||||
location: filter.location
|
||||
? { contains: filter.location, mode: 'insensitive' }
|
||||
: undefined,
|
||||
},
|
||||
orderBy: { name: 'asc' },
|
||||
});
|
||||
}
|
||||
|
||||
async findById(id: string): Promise<Apiary> {
|
||||
|
||||
Reference in new issue
Block a user