feat: Complete NestJS backend scaffold — 22 modules, 39 entities, WebSocket gateway
All checks were successful
Test Asgard Runner / test (push) Successful in 3s
All checks were successful
Test Asgard Runner / test (push) Successful in 3s
Full backend rewrite from Rust/Axum to NestJS/TypeScript. - 22 feature modules (auth, servers, wipes, maps, plugins, players, console, chat, team, notifications, settings, schedules, analytics, alerts, status, store, webstore, admin, setup, migration, users, licenses) - 39 TypeORM entities matching PostgreSQL schema (12 migrations) - Common infrastructure: JWT/RBAC guards, decorators, exception filter - NATS service with pub/sub/request-reply - Socket.IO WebSocket gateway with NATS bridge - Docker: NestJS Dockerfile + updated docker-compose.yml - Zero compile errors (npx tsc --noEmit clean) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
24
backend-nest/src/modules/wipes/dto/create-profile.dto.ts
Normal file
24
backend-nest/src/modules/wipes/dto/create-profile.dto.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import { IsString, IsOptional, MaxLength, IsObject } from 'class-validator';
|
||||
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
||||
|
||||
export class CreateProfileDto {
|
||||
@ApiProperty({ example: 'Standard Monthly Wipe', maxLength: 100 })
|
||||
@IsString()
|
||||
@MaxLength(100)
|
||||
profile_name: string;
|
||||
|
||||
@ApiPropertyOptional({ example: 'Complete wipe with all plugins reset' })
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
description?: string;
|
||||
|
||||
@ApiPropertyOptional({ example: { backup: true, notify_players: true } })
|
||||
@IsOptional()
|
||||
@IsObject()
|
||||
pre_wipe_config?: Record<string, any>;
|
||||
|
||||
@ApiPropertyOptional({ example: { start_server: true, send_discord_notification: true } })
|
||||
@IsOptional()
|
||||
@IsObject()
|
||||
post_wipe_config?: Record<string, any>;
|
||||
}
|
||||
33
backend-nest/src/modules/wipes/dto/create-schedule.dto.ts
Normal file
33
backend-nest/src/modules/wipes/dto/create-schedule.dto.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import { IsString, IsEnum, IsUUID, IsOptional, IsBoolean, MaxLength } from 'class-validator';
|
||||
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
||||
|
||||
export class CreateScheduleDto {
|
||||
@ApiProperty({ example: '550e8400-e29b-41d4-a716-446655440000' })
|
||||
@IsUUID()
|
||||
wipe_profile_id: string;
|
||||
|
||||
@ApiProperty({ example: 'Weekly Thursday Wipe', maxLength: 100 })
|
||||
@IsString()
|
||||
@MaxLength(100)
|
||||
schedule_name: string;
|
||||
|
||||
@ApiProperty({ example: 'map', enum: ['map', 'blueprint', 'full'] })
|
||||
@IsEnum(['map', 'blueprint', 'full'])
|
||||
wipe_type: 'map' | 'blueprint' | 'full';
|
||||
|
||||
@ApiProperty({ example: '0 14 * * 4', description: 'Cron expression for schedule' })
|
||||
@IsString()
|
||||
@MaxLength(100)
|
||||
cron_expression: string;
|
||||
|
||||
@ApiPropertyOptional({ example: 'America/New_York', default: 'America/New_York' })
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
@MaxLength(50)
|
||||
timezone?: string;
|
||||
|
||||
@ApiPropertyOptional({ example: false, default: false })
|
||||
@IsOptional()
|
||||
@IsBoolean()
|
||||
wipe_blueprints?: boolean;
|
||||
}
|
||||
13
backend-nest/src/modules/wipes/dto/trigger-wipe.dto.ts
Normal file
13
backend-nest/src/modules/wipes/dto/trigger-wipe.dto.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import { IsEnum, IsUUID, IsOptional } from 'class-validator';
|
||||
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
||||
|
||||
export class TriggerWipeDto {
|
||||
@ApiProperty({ example: 'map', enum: ['map', 'blueprint', 'full'] })
|
||||
@IsEnum(['map', 'blueprint', 'full'])
|
||||
wipe_type: 'map' | 'blueprint' | 'full';
|
||||
|
||||
@ApiPropertyOptional({ example: '550e8400-e29b-41d4-a716-446655440000' })
|
||||
@IsOptional()
|
||||
@IsUUID()
|
||||
wipe_profile_id?: string;
|
||||
}
|
||||
4
backend-nest/src/modules/wipes/dto/update-profile.dto.ts
Normal file
4
backend-nest/src/modules/wipes/dto/update-profile.dto.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
import { PartialType } from '@nestjs/swagger';
|
||||
import { CreateProfileDto } from './create-profile.dto';
|
||||
|
||||
export class UpdateProfileDto extends PartialType(CreateProfileDto) {}
|
||||
Reference in New Issue
Block a user