/* Options:
Date: 2025-05-06 08:14:58
Version: 8.51
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://blazor-gallery.servicestack.net

//GlobalNamespace: 
//MakePropertiesOptional: False
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
IncludeTypes: UpdateProfile.*
//ExcludeTypes: 
//DefaultImports: 
*/


export interface IReturn<T>
{
    createResponse(): T;
}

export interface IPatchDb<Table>
{
}

export enum PlayerRole
{
    Leader = 'Leader',
    Player = 'Player',
    NonPlayer = 'NonPlayer',
}

export enum PlayerRegion
{
    Africa = 1,
    Americas = 2,
    Asia = 3,
    Australasia = 4,
    Europe = 5,
}

export class Profile extends AuditBase
{
    public id: number;
    public role: PlayerRole;
    public region: PlayerRegion;
    public username?: string;
    public highScore: number;
    public gamesPlayed: number;
    public energy: number;
    public profileUrl?: string;
    public coverUrl?: string;
    public meta?: { [index:string]: string; };

    public constructor(init?: Partial<Profile>) { super(init); (Object as any).assign(this, init); }
}

// @DataContract
export class ResponseError
{
    // @DataMember(Order=1)
    public errorCode: string;

    // @DataMember(Order=2)
    public fieldName: string;

    // @DataMember(Order=3)
    public message: string;

    // @DataMember(Order=4)
    public meta: { [index:string]: string; };

    public constructor(init?: Partial<ResponseError>) { (Object as any).assign(this, init); }
}

// @DataContract
export class ResponseStatus
{
    // @DataMember(Order=1)
    public errorCode: string;

    // @DataMember(Order=2)
    public message: string;

    // @DataMember(Order=3)
    public stackTrace: string;

    // @DataMember(Order=4)
    public errors: ResponseError[];

    // @DataMember(Order=5)
    public meta: { [index:string]: string; };

    public constructor(init?: Partial<ResponseStatus>) { (Object as any).assign(this, init); }
}

// @DataContract
export class IdResponse
{
    // @DataMember(Order=1)
    public id: string;

    // @DataMember(Order=2)
    public responseStatus: ResponseStatus;

    public constructor(init?: Partial<IdResponse>) { (Object as any).assign(this, init); }
}

export class UpdateProfile implements IReturn<IdResponse>, IPatchDb<Profile>
{
    public id: number;
    public role?: PlayerRole;
    public region?: PlayerRegion;
    public username?: string;
    public highScore?: number;
    public gamesPlayed?: number;
    // @Validate(Validator="InclusiveBetween(0,100)")
    public energy?: number;

    public profileUrl?: string;
    public coverUrl?: string;

    public constructor(init?: Partial<UpdateProfile>) { (Object as any).assign(this, init); }
    public getTypeName() { return 'UpdateProfile'; }
    public getMethod() { return 'PATCH'; }
    public createResponse() { return new IdResponse(); }
}