torrent priority and piece state fix
This commit is contained in:
parent
13ce2aa07f
commit
199a82ff0c
33 changed files with 2227 additions and 959 deletions
|
@ -1,26 +1,10 @@
|
|||
type Mutation {
|
||||
validateTorrents(filter: TorrentFilter!): Boolean!
|
||||
cleanupTorrents(files: Boolean, dryRun: Boolean!): CleanupResponse!
|
||||
downloadTorrent(infohash: String!, file: String): DownloadTorrentResponse
|
||||
torrentDaemon: TorrentDaemonMutation @resolver
|
||||
|
||||
uploadFile(dir: String!, file: Upload!): Boolean!
|
||||
dedupeStorage: Int!
|
||||
}
|
||||
|
||||
input TorrentFilter @oneOf {
|
||||
everything: Boolean
|
||||
infohash: String
|
||||
# pathGlob: String!
|
||||
}
|
||||
|
||||
type DownloadTorrentResponse {
|
||||
task: Task
|
||||
}
|
||||
|
||||
type CleanupResponse {
|
||||
count: Int!
|
||||
list: [String!]!
|
||||
}
|
||||
|
||||
type Task {
|
||||
id: ID!
|
||||
}
|
||||
|
|
|
@ -1,46 +1,5 @@
|
|||
type Query {
|
||||
torrents(filter: TorrentsFilter): [Torrent!]!
|
||||
torrentDaemon: TorrentDaemonQuery @resolver
|
||||
|
||||
fsEntry(path: String!): FsEntry
|
||||
}
|
||||
|
||||
input TorrentsFilter {
|
||||
infohash: StringFilter
|
||||
name: StringFilter
|
||||
bytesCompleted: IntFilter
|
||||
bytesMissing: IntFilter
|
||||
|
||||
peersCount: IntFilter
|
||||
downloading: BooleanFilter
|
||||
}
|
||||
|
||||
input Pagination {
|
||||
offset: Int!
|
||||
limit: Int!
|
||||
}
|
||||
|
||||
input StringFilter @oneOf {
|
||||
eq: String
|
||||
substr: String
|
||||
in: [String!]
|
||||
}
|
||||
|
||||
input IntFilter @oneOf {
|
||||
eq: Int
|
||||
gt: Int
|
||||
lt: Int
|
||||
gte: Int
|
||||
lte: Int
|
||||
in: [Int!]
|
||||
}
|
||||
|
||||
input DateTimeFilter @oneOf {
|
||||
eq: DateTime
|
||||
gt: DateTime
|
||||
lt: DateTime
|
||||
gte: DateTime
|
||||
lte: DateTime
|
||||
}
|
||||
|
||||
input BooleanFilter @oneOf {
|
||||
eq: Boolean
|
||||
}
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
directive @oneOf on INPUT_OBJECT | FIELD_DEFINITION
|
||||
directive @resolver on INPUT_FIELD_DEFINITION | FIELD_DEFINITION
|
||||
|
||||
directive @stream on FIELD_DEFINITION
|
||||
|
||||
scalar DateTime
|
||||
|
|
18
graphql/sources/torrent_mutation.graphql
Normal file
18
graphql/sources/torrent_mutation.graphql
Normal file
|
@ -0,0 +1,18 @@
|
|||
type TorrentDaemonMutation {
|
||||
validateTorrent(filter: TorrentFilter!): Boolean! @resolver
|
||||
setTorrentPriority(
|
||||
infohash: String!
|
||||
file: String
|
||||
priority: TorrentPriority!
|
||||
): Boolean! @resolver
|
||||
cleanup(files: Boolean, dryRun: Boolean!): CleanupResponse! @resolver
|
||||
}
|
||||
|
||||
type CleanupResponse {
|
||||
count: Int!
|
||||
list: [String!]!
|
||||
}
|
||||
|
||||
type DownloadTorrentResponse {
|
||||
task: Task
|
||||
}
|
27
graphql/sources/torrent_query.graphql
Normal file
27
graphql/sources/torrent_query.graphql
Normal file
|
@ -0,0 +1,27 @@
|
|||
type TorrentDaemonQuery {
|
||||
torrents(filter: TorrentsFilter): [Torrent!]! @resolver
|
||||
}
|
||||
|
||||
input TorrentsFilter {
|
||||
infohash: StringFilter
|
||||
name: StringFilter
|
||||
bytesCompleted: IntFilter
|
||||
bytesMissing: IntFilter
|
||||
peersCount: IntFilter
|
||||
priority: TorrentPriorityFilter
|
||||
}
|
||||
|
||||
input TorrentPriorityFilter @oneOf {
|
||||
eq: TorrentPriority
|
||||
gt: TorrentPriority
|
||||
lt: TorrentPriority
|
||||
gte: TorrentPriority
|
||||
lte: TorrentPriority
|
||||
in: [TorrentPriority!]
|
||||
}
|
||||
|
||||
input TorrentFilter @oneOf {
|
||||
everything: Boolean
|
||||
infohash: String
|
||||
# pathGlob: String!
|
||||
}
|
|
@ -1,15 +1,13 @@
|
|||
type Torrent {
|
||||
name: String!
|
||||
name: String! @resolver
|
||||
infohash: String!
|
||||
bytesCompleted: Int!
|
||||
torrentFilePath: String!
|
||||
bytesMissing: Int!
|
||||
files: [TorrentFile!]!
|
||||
excludedFiles: [TorrentFile!]!
|
||||
peers: [TorrentPeer!]!
|
||||
|
||||
# if at least one piece of the torrent is request to download and not already downloaded
|
||||
downloading: Boolean!
|
||||
priority: TorrentPriority! @resolver
|
||||
files: [TorrentFile!]! @resolver
|
||||
excludedFiles: [TorrentFile!]! @resolver
|
||||
peers: [TorrentPeer!]! @resolver
|
||||
}
|
||||
|
||||
type TorrentFile {
|
||||
|
@ -25,3 +23,11 @@ type TorrentPeer {
|
|||
port: Int!
|
||||
clientName: String!
|
||||
}
|
||||
|
||||
enum TorrentPriority {
|
||||
NONE
|
||||
NORMAL
|
||||
HIGH
|
||||
READAHEAD
|
||||
NOW
|
||||
}
|
31
graphql/types/filters.graphql
Normal file
31
graphql/types/filters.graphql
Normal file
|
@ -0,0 +1,31 @@
|
|||
input Pagination {
|
||||
offset: Int!
|
||||
limit: Int!
|
||||
}
|
||||
|
||||
input StringFilter @oneOf {
|
||||
eq: String
|
||||
substr: String
|
||||
in: [String!]
|
||||
}
|
||||
|
||||
input IntFilter @oneOf {
|
||||
eq: Int
|
||||
gt: Int
|
||||
lt: Int
|
||||
gte: Int
|
||||
lte: Int
|
||||
in: [Int!]
|
||||
}
|
||||
|
||||
input DateTimeFilter @oneOf {
|
||||
eq: DateTime
|
||||
gt: DateTime
|
||||
lt: DateTime
|
||||
gte: DateTime
|
||||
lte: DateTime
|
||||
}
|
||||
|
||||
input BooleanFilter @oneOf {
|
||||
eq: Boolean
|
||||
}
|
|
@ -14,7 +14,7 @@ interface File implements FsEntry {
|
|||
|
||||
type SimpleDir implements Dir & FsEntry {
|
||||
name: String!
|
||||
entries: [FsEntry!]!
|
||||
entries: [FsEntry!]! @resolver
|
||||
}
|
||||
|
||||
type SimpleFile implements File & FsEntry {
|
||||
|
@ -24,12 +24,12 @@ type SimpleFile implements File & FsEntry {
|
|||
|
||||
type ResolverFS implements Dir & FsEntry {
|
||||
name: String!
|
||||
entries: [FsEntry!]!
|
||||
entries: [FsEntry!]! @resolver
|
||||
}
|
||||
|
||||
type ArchiveFS implements Dir & FsEntry {
|
||||
name: String!
|
||||
entries: [FsEntry!]!
|
||||
entries: [FsEntry!]! @resolver
|
||||
|
||||
size: Int!
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ type ArchiveFS implements Dir & FsEntry {
|
|||
type TorrentFS implements Dir & FsEntry {
|
||||
name: String!
|
||||
torrent: Torrent!
|
||||
entries: [FsEntry!]!
|
||||
entries: [FsEntry!]! @resolver
|
||||
}
|
||||
|
||||
type TorrentFileEntry implements File & FsEntry {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue