/* Options:
Date: 2025-01-06 04:23:20
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: QueryFileSystemFiles.*
//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
{

    public static class QueryFileSystemFiles extends QueryDb<FileSystemFile> implements IReturn<QueryResponse<FileSystemFile>>
    {
        
        private static Object responseType = new TypeToken<QueryResponse<FileSystemFile>>(){}.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<FileSystemFile> 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<FileSystemFile> getResults() { return results; }
        public QueryResponse<T> setResults(ArrayList<FileSystemFile> 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 enum FileAccessType
    {
        Public,
        Team,
        Private;
    }

    public static class FileSystemFile implements IFile
    {
        public Integer id = null;
        public String fileName = null;
        public String filePath = null;
        public String contentType = null;
        public Long contentLength = null;
        @References(Type=FileSystemItem.class)
        public Integer fileSystemItemId = null;
        
        public Integer getId() { return id; }
        public FileSystemFile setId(Integer value) { this.id = value; return this; }
        public String getFileName() { return fileName; }
        public FileSystemFile setFileName(String value) { this.fileName = value; return this; }
        public String getFilePath() { return filePath; }
        public FileSystemFile setFilePath(String value) { this.filePath = value; return this; }
        public String getContentType() { return contentType; }
        public FileSystemFile setContentType(String value) { this.contentType = value; return this; }
        public Long getContentLength() { return contentLength; }
        public FileSystemFile setContentLength(Long value) { this.contentLength = value; return this; }
        public Integer getFileSystemItemId() { return fileSystemItemId; }
        public FileSystemFile setFileSystemItemId(Integer value) { this.fileSystemItemId = value; return this; }
    }

    public static class FileSystemItem implements IFileItem
    {
        public Integer id = null;
        public FileAccessType fileAccessType = null;
        public FileSystemFile file = null;
        public String appUserId = null;
        
        public Integer getId() { return id; }
        public FileSystemItem setId(Integer value) { this.id = value; return this; }
        public FileAccessType getFileAccessType() { return fileAccessType; }
        public FileSystemItem setFileAccessType(FileAccessType value) { this.fileAccessType = value; return this; }
        public FileSystemFile getFile() { return file; }
        public FileSystemItem setFile(FileSystemFile value) { this.file = value; return this; }
        public String getAppUserId() { return appUserId; }
        public FileSystemItem setAppUserId(String value) { this.appUserId = value; return this; }
    }

    public static interface IFileItem
    {
        public FileAccessType fileAccessType = null;
    }

    @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; }
    }

    public static interface IFile
    {
        public Integer id = null;
        public String fileName = null;
        public String filePath = null;
        public String contentType = null;
        public Long contentLength = null;
    }

}