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

//Package: 
//GlobalNamespace: dtos
//AddPropertyAccessors: True
//SettersReturnThis: True
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddDescriptionAsComments: True
//AddImplicitVersion: 
IncludeTypes: QueryTracks.*
//ExcludeTypes: 
//TreatTypesAsStrings: 
//DefaultImports: java.math.*,java.util.*,java.io.InputStream,net.servicestack.client.*,com.google.gson.annotations.*,com.google.gson.reflect.*
*/

import java.math.*;
import java.util.*;
import java.io.InputStream;
import net.servicestack.client.*;
import com.google.gson.annotations.*;
import com.google.gson.reflect.*;

public class dtos
{

    @Route(Path="/tracks", Verbs="GET")
    // @Route(Path="/tracks/{TrackId}", Verbs="GET")
    public static class QueryTracks extends QueryDb<Tracks> implements IReturn<QueryResponse<Tracks>>, IGet
    {
        public Long trackId = null;
        public String nameContains = null;
        
        public Long getTrackId() { return trackId; }
        public QueryTracks setTrackId(Long value) { this.trackId = value; return this; }
        public String getNameContains() { return nameContains; }
        public QueryTracks setNameContains(String value) { this.nameContains = value; return this; }
        private static Object responseType = new TypeToken<QueryResponse<Tracks>>(){}.getType();
        public Object getResponseType() { return responseType; }
    }

    @DataContract
    public static class QueryResponse<T>
    {
        @DataMember(Order=1)
        public Integer offset = null;

        @DataMember(Order=2)
        public Integer total = null;

        @DataMember(Order=3)
        public ArrayList<Tracks> results = null;

        @DataMember(Order=4)
        public HashMap<String,String> meta = null;

        @DataMember(Order=5)
        public ResponseStatus responseStatus = null;
        
        public Integer getOffset() { return offset; }
        public QueryResponse<T> setOffset(Integer value) { this.offset = value; return this; }
        public Integer getTotal() { return total; }
        public QueryResponse<T> setTotal(Integer value) { this.total = value; return this; }
        public ArrayList<Tracks> getResults() { return results; }
        public QueryResponse<T> setResults(ArrayList<Tracks> value) { this.results = value; return this; }
        public HashMap<String,String> getMeta() { return meta; }
        public QueryResponse<T> setMeta(HashMap<String,String> value) { this.meta = value; return this; }
        public ResponseStatus getResponseStatus() { return responseStatus; }
        public QueryResponse<T> setResponseStatus(ResponseStatus value) { this.responseStatus = value; return this; }
    }

    public static class QueryDb<T> extends QueryBase
    {
        
    }

    public static class Tracks
    {
        public Long trackId = null;
        @Required()
        public String name = null;

        public Long albumId = null;
        public Long mediaTypeId = null;
        public Long genreId = null;
        public String composer = null;
        public Long milliseconds = null;
        public Long bytes = null;
        public BigDecimal unitPrice = null;
        
        public Long getTrackId() { return trackId; }
        public Tracks setTrackId(Long value) { this.trackId = value; return this; }
        public String getName() { return name; }
        public Tracks setName(String value) { this.name = value; return this; }
        public Long getAlbumId() { return albumId; }
        public Tracks setAlbumId(Long value) { this.albumId = value; return this; }
        public Long getMediaTypeId() { return mediaTypeId; }
        public Tracks setMediaTypeId(Long value) { this.mediaTypeId = value; return this; }
        public Long getGenreId() { return genreId; }
        public Tracks setGenreId(Long value) { this.genreId = value; return this; }
        public String getComposer() { return composer; }
        public Tracks setComposer(String value) { this.composer = value; return this; }
        public Long getMilliseconds() { return milliseconds; }
        public Tracks setMilliseconds(Long value) { this.milliseconds = value; return this; }
        public Long getBytes() { return bytes; }
        public Tracks setBytes(Long value) { this.bytes = value; return this; }
        public BigDecimal getUnitPrice() { return unitPrice; }
        public Tracks setUnitPrice(BigDecimal value) { this.unitPrice = value; return this; }
    }

    @DataContract
    public static class QueryBase
    {
        @DataMember(Order=1)
        public Integer skip = null;

        @DataMember(Order=2)
        public Integer take = null;

        @DataMember(Order=3)
        public String orderBy = null;

        @DataMember(Order=4)
        public String orderByDesc = null;

        @DataMember(Order=5)
        public String include = null;

        @DataMember(Order=6)
        public String fields = null;

        @DataMember(Order=7)
        public HashMap<String,String> meta = null;
        
        public Integer getSkip() { return skip; }
        public QueryBase setSkip(Integer value) { this.skip = value; return this; }
        public Integer getTake() { return take; }
        public QueryBase setTake(Integer value) { this.take = value; return this; }
        public String getOrderBy() { return orderBy; }
        public QueryBase setOrderBy(String value) { this.orderBy = value; return this; }
        public String getOrderByDesc() { return orderByDesc; }
        public QueryBase setOrderByDesc(String value) { this.orderByDesc = value; return this; }
        public String getInclude() { return include; }
        public QueryBase setInclude(String value) { this.include = value; return this; }
        public String getFields() { return fields; }
        public QueryBase setFields(String value) { this.fields = value; return this; }
        public HashMap<String,String> getMeta() { return meta; }
        public QueryBase setMeta(HashMap<String,String> value) { this.meta = value; return this; }
    }

}