// Code generated by github.com/99designs/gqlgen, DO NOT EDIT.

package model

import (
	"time"
)

type Dir interface {
	IsFsEntry()
	IsDir()
	GetName() string
	GetEntries() []FsEntry
}

type File interface {
	IsFsEntry()
	IsFile()
	GetName() string
	GetSize() int64
}

type FsEntry interface {
	IsFsEntry()
	GetName() string
}

type Progress interface {
	IsProgress()
	GetCurrent() int64
	GetTotal() int64
}

type BooleanFilter struct {
	Eq *bool `json:"eq,omitempty"`
}

type CleanupResponse struct {
	Count  int64    `json:"count"`
	Hashes []string `json:"hashes"`
}

type CleanupUnregistredResponse struct {
	Count  int64    `json:"count"`
	Hashes []string `json:"hashes"`
}

type DateTimeFilter struct {
	Eq  *time.Time `json:"eq,omitempty"`
	Gt  *time.Time `json:"gt,omitempty"`
	Lt  *time.Time `json:"lt,omitempty"`
	Gte *time.Time `json:"gte,omitempty"`
	Lte *time.Time `json:"lte,omitempty"`
}

type IntFilter struct {
	Eq  *int64  `json:"eq,omitempty"`
	Gt  *int64  `json:"gt,omitempty"`
	Lt  *int64  `json:"lt,omitempty"`
	Gte *int64  `json:"gte,omitempty"`
	Lte *int64  `json:"lte,omitempty"`
	In  []int64 `json:"in,omitempty"`
}

type Mutation struct {
}

type Pagination struct {
	Offset int64 `json:"offset"`
	Limit  int64 `json:"limit"`
}

type Query struct {
}

type ResolverFs struct {
	Name    string    `json:"name"`
	Entries []FsEntry `json:"entries"`
}

func (ResolverFs) IsDir()               {}
func (this ResolverFs) GetName() string { return this.Name }
func (this ResolverFs) GetEntries() []FsEntry {
	if this.Entries == nil {
		return nil
	}
	interfaceSlice := make([]FsEntry, 0, len(this.Entries))
	for _, concrete := range this.Entries {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}

func (ResolverFs) IsFsEntry() {}

type Schema struct {
	Query    *Query    `json:"query,omitempty"`
	Mutation *Mutation `json:"mutation,omitempty"`
}

type SimpleDir struct {
	Name    string    `json:"name"`
	Entries []FsEntry `json:"entries"`
}

func (SimpleDir) IsDir()               {}
func (this SimpleDir) GetName() string { return this.Name }
func (this SimpleDir) GetEntries() []FsEntry {
	if this.Entries == nil {
		return nil
	}
	interfaceSlice := make([]FsEntry, 0, len(this.Entries))
	for _, concrete := range this.Entries {
		interfaceSlice = append(interfaceSlice, concrete)
	}
	return interfaceSlice
}

func (SimpleDir) IsFsEntry() {}

type SimpleFile struct {
	Name string `json:"name"`
	Size int64  `json:"size"`
}

func (SimpleFile) IsFile()              {}
func (this SimpleFile) GetName() string { return this.Name }
func (this SimpleFile) GetSize() int64  { return this.Size }

func (SimpleFile) IsFsEntry() {}

type StringFilter struct {
	Eq     *string  `json:"eq,omitempty"`
	Substr *string  `json:"substr,omitempty"`
	In     []string `json:"in,omitempty"`
}

type Torrent struct {
	Name        string   `json:"name"`
	Hash        string   `json:"hash"`
	SourceFiles []string `json:"sourceFiles"`
}

type TorrentFilter struct {
	SourcesCount *IntFilter `json:"sourcesCount,omitempty"`
}