import { IsInt, IsOptional, IsString } from 'class-validator';
import { UserGroup } from '../../entities/UserGroup';

/**
 * This class is used to update a UserGroup entity (via put request).
 */
export class UpdateUserGroup {

    /**
     * The updated group's id.
     * This shouldn't have changed but it is here in case anyone ever wants to enable id changes (whyever they would want to).
     */
    @IsInt()
    id: number;

    /**
     * The updated group's name.
     */
    @IsString()
    name: string;

    /**
     * The updated groups's description.
     */
    @IsString()
    @IsOptional()
    description?: string;

    /**
     * Updates a group entity based on this.
     * @param group The group that shall be updated.
     */
    public async update(group: UserGroup): Promise<UserGroup> {
        group.name = this.name;
        group.description = this.description;

        return group;
    }
}