This commit is contained in:
keyhan
2026-04-05 15:22:01 +03:30
commit 33be1649c4
82 changed files with 23956 additions and 0 deletions
@@ -0,0 +1,120 @@
import {
IsString,
IsEnum,
IsOptional,
IsNumber,
IsObject,
Min,
Max,
Matches,
} from 'class-validator';
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { AppRuntime, DatabaseType } from '../../common/enums';
export class CreateApplicationDto {
@ApiProperty({ example: 'my-app' })
@IsString()
@Matches(/^[a-z0-9][a-z0-9-]*[a-z0-9]$/, {
message: 'Name must be lowercase alphanumeric with hyphens only',
})
name: string;
@ApiPropertyOptional({ example: 'My awesome Node.js application' })
@IsOptional()
@IsString()
description?: string;
@ApiProperty({ enum: AppRuntime, example: AppRuntime.NODEJS })
@IsEnum(AppRuntime)
runtime: AppRuntime;
@ApiProperty({ enum: DatabaseType, example: DatabaseType.POSTGRESQL })
@IsEnum(DatabaseType)
databaseType: DatabaseType;
@ApiPropertyOptional({ example: 'https://github.com/user/repo.git' })
@IsOptional()
@IsString()
gitUrl?: string;
@ApiPropertyOptional({ example: { NODE_ENV: 'production', PORT: '3000' } })
@IsOptional()
@IsObject()
envVars?: Record<string, string>;
@ApiPropertyOptional({ example: '250m' })
@IsOptional()
@IsString()
cpuRequest?: string;
@ApiPropertyOptional({ example: '500m' })
@IsOptional()
@IsString()
cpuLimit?: string;
@ApiPropertyOptional({ example: '256Mi' })
@IsOptional()
@IsString()
memoryRequest?: string;
@ApiPropertyOptional({ example: '512Mi' })
@IsOptional()
@IsString()
memoryLimit?: string;
@ApiPropertyOptional({ example: 2, minimum: 1, maximum: 10 })
@IsOptional()
@IsNumber()
@Min(1)
@Max(10)
replicas?: number;
@ApiPropertyOptional({ example: 3000 })
@IsOptional()
@IsNumber()
port?: number;
@ApiPropertyOptional({ description: 'Cluster ID to deploy to (auto-assigns default if empty)' })
@IsOptional()
@IsString()
clusterId?: string;
}
export class UpdateApplicationDto {
@ApiPropertyOptional()
@IsOptional()
@IsString()
description?: string;
@ApiPropertyOptional()
@IsOptional()
@IsObject()
envVars?: Record<string, string>;
@ApiPropertyOptional()
@IsOptional()
@IsString()
cpuRequest?: string;
@ApiPropertyOptional()
@IsOptional()
@IsString()
cpuLimit?: string;
@ApiPropertyOptional()
@IsOptional()
@IsString()
memoryRequest?: string;
@ApiPropertyOptional()
@IsOptional()
@IsString()
memoryLimit?: string;
@ApiPropertyOptional()
@IsOptional()
@IsNumber()
@Min(1)
@Max(10)
replicas?: number;
}