import { Transform } from 'class-transformer'; import { IsArray, IsBoolean, IsEmail, IsEnum, IsOptional, IsString, IsUUID, MinLength } from 'class-validator'; import { AdminRole } from './admin-role'; export class ListAdminsQuery { @IsOptional() @IsString() page?: string; @IsOptional() @IsString() limit?: string; @IsOptional() @IsString() keyword?: string; @IsOptional() @IsString() role?: string; @IsOptional() @IsString() state?: string; } export class CreateAdminDto { @Transform(({ value }) => typeof value === 'string' ? value.trim().toLowerCase() : value) @IsEmail() email!: string; @IsString() name!: string; @IsEnum(AdminRole) role!: AdminRole; @IsString() @MinLength(8) temporaryPassword!: string; } export class UpdateAdminStatusDto { @IsBoolean() isActive!: boolean; } export class UpdateAdminRoleDto { @IsEnum(AdminRole) role!: AdminRole; } export class ResetAdminPasswordDto { @IsString() @MinLength(8) temporaryPassword!: string; } export class CreateAdminSshKeyDto { @IsOptional() @IsString() label?: string; @IsString() publicKey!: string; @IsOptional() @IsString() giteaUsername?: string; } export class UpdateAdminAppPermissionsDto { @IsArray() @IsUUID('4', { each: true }) appIds!: string[]; }