All checks were successful
Test Asgard Runner / test (push) Successful in 3s
- Migration 021: raidablebases_configs table with JSONB config_data - Entity, module, controller (7 endpoints), service with NATS deploy/import - Frontend: 4-tab editor (General, Difficulty, NPC, Loot & Rewards) - Pinia store, types, router route, sidebar nav with Swords icon - Top 30 most common settings with actual RaidableBases.json key paths - Difficulty sub-tabs for Easy/Medium/Hard/Expert/Nightmare with spawn day toggles Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
81 lines
3.1 KiB
TypeScript
81 lines
3.1 KiB
TypeScript
import {
|
|
Controller,
|
|
Get,
|
|
Post,
|
|
Put,
|
|
Delete,
|
|
Body,
|
|
Param,
|
|
UseGuards,
|
|
} from '@nestjs/common';
|
|
import { ApiTags, ApiBearerAuth, ApiOperation } from '@nestjs/swagger';
|
|
import { RaidableBasesService } from './raidablebases.service';
|
|
import { CreateRaidableBasesConfigDto } from './dto/create-raidablebases-config.dto';
|
|
import { UpdateRaidableBasesConfigDto } from './dto/update-raidablebases-config.dto';
|
|
import { ImportRaidableBasesConfigDto } from './dto/import-raidablebases-config.dto';
|
|
import { CurrentTenant } from '../../common/decorators/current-tenant.decorator';
|
|
import { RequirePermission } from '../../common/decorators/require-permission.decorator';
|
|
import { JwtAuthGuard } from '../../common/guards/jwt-auth.guard';
|
|
import { PermissionsGuard } from '../../common/guards/permissions.guard';
|
|
|
|
@ApiTags('raidablebases')
|
|
@ApiBearerAuth()
|
|
@Controller('raidablebases')
|
|
@UseGuards(JwtAuthGuard, PermissionsGuard)
|
|
export class RaidableBasesController {
|
|
constructor(private readonly raidableBasesService: RaidableBasesService) {}
|
|
|
|
@Get('configs')
|
|
@RequirePermission('raidablebases.view')
|
|
@ApiOperation({ summary: 'List RaidableBases configs (summaries)' })
|
|
getConfigs(@CurrentTenant() licenseId: string) {
|
|
return this.raidableBasesService.getConfigs(licenseId);
|
|
}
|
|
|
|
@Get('configs/:id')
|
|
@RequirePermission('raidablebases.view')
|
|
@ApiOperation({ summary: 'Get full RaidableBases config with data' })
|
|
getConfig(@CurrentTenant() licenseId: string, @Param('id') id: string) {
|
|
return this.raidableBasesService.getConfig(licenseId, id);
|
|
}
|
|
|
|
@Post('configs')
|
|
@RequirePermission('raidablebases.manage')
|
|
@ApiOperation({ summary: 'Create RaidableBases config' })
|
|
createConfig(@CurrentTenant() licenseId: string, @Body() dto: CreateRaidableBasesConfigDto) {
|
|
return this.raidableBasesService.createConfig(licenseId, dto);
|
|
}
|
|
|
|
@Put('configs/:id')
|
|
@RequirePermission('raidablebases.manage')
|
|
@ApiOperation({ summary: 'Update RaidableBases config' })
|
|
updateConfig(
|
|
@CurrentTenant() licenseId: string,
|
|
@Param('id') id: string,
|
|
@Body() dto: UpdateRaidableBasesConfigDto,
|
|
) {
|
|
return this.raidableBasesService.updateConfig(licenseId, id, dto);
|
|
}
|
|
|
|
@Delete('configs/:id')
|
|
@RequirePermission('raidablebases.manage')
|
|
@ApiOperation({ summary: 'Delete RaidableBases config' })
|
|
deleteConfig(@CurrentTenant() licenseId: string, @Param('id') id: string) {
|
|
return this.raidableBasesService.deleteConfig(licenseId, id);
|
|
}
|
|
|
|
@Post('configs/:id/apply')
|
|
@RequirePermission('raidablebases.manage')
|
|
@ApiOperation({ summary: 'Deploy RaidableBases config to server' })
|
|
applyToServer(@CurrentTenant() licenseId: string, @Param('id') id: string) {
|
|
return this.raidableBasesService.applyToServer(licenseId, id);
|
|
}
|
|
|
|
@Post('import-from-server')
|
|
@RequirePermission('raidablebases.manage')
|
|
@ApiOperation({ summary: 'Import RaidableBases.json from server via NATS' })
|
|
importFromServer(@CurrentTenant() licenseId: string, @Body() dto: ImportRaidableBasesConfigDto) {
|
|
return this.raidableBasesService.importFromServer(licenseId, dto.config_name, dto.description);
|
|
}
|
|
}
|