- Migration 013: loot_profiles table (JSONB loot_table + loot_groups, license-scoped) - TypeORM entity matching migration schema exactly - NestJS loot module: 10 endpoints (CRUD, duplicate, apply, import, export, containers) - Multiplier logic recursively scales Min/Max/Scrap across loot tables and groups - Apply-to-server writes BetterLoot JSON via NATS file manager + RCON reload - Frontend static data: 191 Rust items, 51 container prefabs - TypeScript types for BetterLoot data model (PrefabLoot, LootEntry, LootRNG, etc.) - Fix vue-tsc errors: UngroupedItems uses LootRNG, null safety in store/view Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
31 lines
625 B
TypeScript
31 lines
625 B
TypeScript
import { IsString, IsOptional, IsObject, IsBoolean, MaxLength } from 'class-validator';
|
|
import { ApiPropertyOptional } from '@nestjs/swagger';
|
|
|
|
export class UpdateLootProfileDto {
|
|
@ApiPropertyOptional()
|
|
@IsString()
|
|
@MaxLength(100)
|
|
@IsOptional()
|
|
profile_name?: string;
|
|
|
|
@ApiPropertyOptional()
|
|
@IsString()
|
|
@IsOptional()
|
|
description?: string;
|
|
|
|
@ApiPropertyOptional()
|
|
@IsObject()
|
|
@IsOptional()
|
|
loot_table?: Record<string, any>;
|
|
|
|
@ApiPropertyOptional()
|
|
@IsObject()
|
|
@IsOptional()
|
|
loot_groups?: Record<string, any>;
|
|
|
|
@ApiPropertyOptional()
|
|
@IsBoolean()
|
|
@IsOptional()
|
|
is_active?: boolean;
|
|
}
|