ColoniesModule: CRUD + Move/Split/Merge/Dissolve/History, entsprechend Lastenheft §4.4 (Lebenszyklus eines Volkes): - move: Standortwechsel, protokolliert in ColonyApiaryHistory. - split: erzeugt Ableger als neues Volk, Abstammung ueber ColonyLineage(SPLIT, von Mutter- zu Ablegervolk). - merge: vereinigtes Volk bleibt historisch erhalten (status MERGED, deactivatedAt gesetzt statt geloescht), ColonyLineage(MERGE) je vereinigtem Volk zum Zielvolk. - dissolve: Volk wird deaktiviert (status DISSOLVED), Dokumentation bleibt erhalten. - history: aggregiert Standort-Historie, Koeniginnen-Historie und Abstammungslinien (als Quelle und als Ergebnis). Move/Split/Merge laufen transaktional (prisma.$transaction). Rollen wie bei Apiaries: Lesen offen, Schreiben auf ADMIN/BEEKEEPER beschraenkt. 9 Unit-Tests + 6 e2e-Tests (inkl. vollstaendigem Move->Split->Merge-> Dissolve-Flow und Rollenpruefung), Lint, Typecheck und Build gruen.
19 lines
430 B
TypeScript
19 lines
430 B
TypeScript
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
import { IsEnum, IsOptional, IsString } from 'class-validator';
|
|
import { ColonyType } from '../../../generated/prisma';
|
|
|
|
export class SplitColonyDto {
|
|
@ApiProperty()
|
|
@IsString()
|
|
code!: string;
|
|
|
|
@ApiProperty({ enum: ColonyType })
|
|
@IsEnum(ColonyType)
|
|
colonyType!: ColonyType;
|
|
|
|
@ApiPropertyOptional()
|
|
@IsOptional()
|
|
@IsString()
|
|
notes?: string;
|
|
}
|