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

//GlobalNamespace: 
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
IncludeTypes: QueryTracks.*
//ExcludeTypes: 
//DefaultImports: package:servicestack/servicestack.dart,dart:typed_data
*/

import 'package:servicestack/servicestack.dart';
import 'dart:typed_data';

class Tracks implements IConvertible
{
    int? trackId;
    // @required()
    String? name;

    int? albumId;
    int? mediaTypeId;
    int? genreId;
    String? composer;
    int? milliseconds;
    int? bytes;
    double? unitPrice;

    Tracks({this.trackId,this.name,this.albumId,this.mediaTypeId,this.genreId,this.composer,this.milliseconds,this.bytes,this.unitPrice});
    Tracks.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        trackId = json['trackId'];
        name = json['name'];
        albumId = json['albumId'];
        mediaTypeId = json['mediaTypeId'];
        genreId = json['genreId'];
        composer = json['composer'];
        milliseconds = json['milliseconds'];
        bytes = json['bytes'];
        unitPrice = JsonConverters.toDouble(json['unitPrice']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'trackId': trackId,
        'name': name,
        'albumId': albumId,
        'mediaTypeId': mediaTypeId,
        'genreId': genreId,
        'composer': composer,
        'milliseconds': milliseconds,
        'bytes': bytes,
        'unitPrice': unitPrice
    };

    getTypeName() => "Tracks";
    TypeContext? context = _ctx;
}

// @Route("/tracks", "GET")
// @Route("/tracks/{TrackId}", "GET")
class QueryTracks extends QueryDb<Tracks> implements IReturn<QueryResponse<Tracks>>, IGet, IConvertible
{
    int? trackId;
    String? nameContains;

    QueryTracks({this.trackId,this.nameContains});
    QueryTracks.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        trackId = json['trackId'];
        nameContains = json['nameContains'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'trackId': trackId,
        'nameContains': nameContains
    });

    createResponse() => QueryResponse<Tracks>();
    getResponseTypeName() => "QueryResponse<Tracks>";
    getTypeName() => "QueryTracks";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'blazor_gallery.servicestack.net', types: <String, TypeInfo> {
    'Tracks': TypeInfo(TypeOf.Class, create:() => Tracks()),
    'QueryResponse<Tracks>': TypeInfo(TypeOf.Class, create:() => QueryResponse<Tracks>()),
    'QueryTracks': TypeInfo(TypeOf.Class, create:() => QueryTracks()),
    'List<Tracks>': TypeInfo(TypeOf.Class, create:() => <Tracks>[]),
});