graphq fs interface
This commit is contained in:
parent
52999672f8
commit
8df0984b86
8 changed files with 111 additions and 92 deletions
server
.gqlgen.yml
src/delivery/graphql
|
@ -45,3 +45,4 @@ models:
|
||||||
|
|
||||||
autobind:
|
autobind:
|
||||||
- "git.kmsign.ru/royalcat/tstor/server/src/delivery/filter"
|
- "git.kmsign.ru/royalcat/tstor/server/src/delivery/filter"
|
||||||
|
- "git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/fs"
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
package model
|
package fs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
|
"git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/model"
|
||||||
"git.kmsign.ru/royalcat/tstor/server/src/vfs"
|
"git.kmsign.ru/royalcat/tstor/server/src/vfs"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -11,7 +12,7 @@ type FsElem interface {
|
||||||
IsDir() bool
|
IsDir() bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func FillFsEntry(ctx context.Context, e FsElem, fs vfs.Filesystem, path string) (FsEntry, error) {
|
func FillFsEntry(ctx context.Context, e FsElem, fs vfs.Filesystem, path string) (model.FsEntry, error) {
|
||||||
switch e.(type) {
|
switch e.(type) {
|
||||||
case *vfs.ResolverFS:
|
case *vfs.ResolverFS:
|
||||||
e := e.(*vfs.ResolverFS)
|
e := e.(*vfs.ResolverFS)
|
||||||
|
@ -53,12 +54,12 @@ func FillFsEntry(ctx context.Context, e FsElem, fs vfs.Filesystem, path string)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func ReadEntries(ctx context.Context, fs vfs.Filesystem, path string) ([]FsEntry, error) {
|
func ReadEntries(ctx context.Context, fs vfs.Filesystem, path string) ([]model.FsEntry, error) {
|
||||||
entries, err := fs.ReadDir(ctx, path)
|
entries, err := fs.ReadDir(ctx, path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
out := []FsEntry{}
|
out := []model.FsEntry{}
|
||||||
for _, e := range entries {
|
for _, e := range entries {
|
||||||
entry, err := FillFsEntry(ctx, e, fs, ".")
|
entry, err := FillFsEntry(ctx, e, fs, ".")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -69,12 +70,12 @@ func ReadEntries(ctx context.Context, fs vfs.Filesystem, path string) ([]FsEntry
|
||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (obj *ResolverFs) ResolverEntries(ctx context.Context) ([]FsEntry, error) {
|
func (obj *ResolverFs) ResolverEntries(ctx context.Context) ([]model.FsEntry, error) {
|
||||||
entries, err := obj.FS.ReadDir(ctx, ".")
|
entries, err := obj.FS.ReadDir(ctx, ".")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
out := []FsEntry{}
|
out := []model.FsEntry{}
|
||||||
for _, e := range entries {
|
for _, e := range entries {
|
||||||
entry, err := FillFsEntry(ctx, e, obj.FS, ".")
|
entry, err := FillFsEntry(ctx, e, obj.FS, ".")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -85,12 +86,12 @@ func (obj *ResolverFs) ResolverEntries(ctx context.Context) ([]FsEntry, error) {
|
||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (obj *SimpleDir) SimpleDirEntries(ctx context.Context) ([]FsEntry, error) {
|
func (obj *SimpleDir) SimpleDirEntries(ctx context.Context) ([]model.FsEntry, error) {
|
||||||
entries, err := obj.FS.ReadDir(ctx, obj.Path)
|
entries, err := obj.FS.ReadDir(ctx, obj.Path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
out := []FsEntry{}
|
out := []model.FsEntry{}
|
||||||
for _, e := range entries {
|
for _, e := range entries {
|
||||||
entry, err := FillFsEntry(ctx, e, obj.FS, obj.Path)
|
entry, err := FillFsEntry(ctx, e, obj.FS, obj.Path)
|
||||||
if err != nil {
|
if err != nil {
|
42
server/src/delivery/graphql/fs/plain.go
Normal file
42
server/src/delivery/graphql/fs/plain.go
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
package fs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/model"
|
||||||
|
"git.kmsign.ru/royalcat/tstor/server/src/vfs"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ model.FsEntry = (*SimpleDir)(nil)
|
||||||
|
var _ model.Dir = (*SimpleDir)(nil)
|
||||||
|
|
||||||
|
type SimpleDir struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Entries []model.FsEntry `json:"entries"`
|
||||||
|
FS vfs.Filesystem `json:"-"`
|
||||||
|
Path string `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (SimpleDir) IsDir() {}
|
||||||
|
func (this SimpleDir) GetName() string { return this.Name }
|
||||||
|
func (this SimpleDir) GetEntries() []model.FsEntry {
|
||||||
|
if this.Entries == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
interfaceSlice := make([]model.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() {}
|
30
server/src/delivery/graphql/fs/resolver.go
Normal file
30
server/src/delivery/graphql/fs/resolver.go
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
package fs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/model"
|
||||||
|
"git.kmsign.ru/royalcat/tstor/server/src/vfs"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ model.FsEntry = (*ResolverFs)(nil)
|
||||||
|
var _ model.Dir = (*ResolverFs)(nil)
|
||||||
|
|
||||||
|
type ResolverFs struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Entries []model.FsEntry `json:"entries"`
|
||||||
|
FS *vfs.ResolverFS `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ResolverFs) IsDir() {}
|
||||||
|
func (this ResolverFs) GetName() string { return this.Name }
|
||||||
|
func (this ResolverFs) GetEntries() []model.FsEntry {
|
||||||
|
if this.Entries == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
interfaceSlice := make([]model.FsEntry, 0, len(this.Entries))
|
||||||
|
for _, concrete := range this.Entries {
|
||||||
|
interfaceSlice = append(interfaceSlice, concrete)
|
||||||
|
}
|
||||||
|
return interfaceSlice
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ResolverFs) IsFsEntry() {}
|
|
@ -14,6 +14,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.kmsign.ru/royalcat/tstor/server/src/delivery/filter"
|
"git.kmsign.ru/royalcat/tstor/server/src/delivery/filter"
|
||||||
|
"git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/fs"
|
||||||
"git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/model"
|
"git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/model"
|
||||||
"github.com/99designs/gqlgen/graphql"
|
"github.com/99designs/gqlgen/graphql"
|
||||||
"github.com/99designs/gqlgen/graphql/introspection"
|
"github.com/99designs/gqlgen/graphql/introspection"
|
||||||
|
@ -107,10 +108,10 @@ type QueryResolver interface {
|
||||||
FsEntry(ctx context.Context, path string) (model.FsEntry, error)
|
FsEntry(ctx context.Context, path string) (model.FsEntry, error)
|
||||||
}
|
}
|
||||||
type ResolverFSResolver interface {
|
type ResolverFSResolver interface {
|
||||||
Entries(ctx context.Context, obj *model.ResolverFs) ([]model.FsEntry, error)
|
Entries(ctx context.Context, obj *fs.ResolverFs) ([]model.FsEntry, error)
|
||||||
}
|
}
|
||||||
type SimpleDirResolver interface {
|
type SimpleDirResolver interface {
|
||||||
Entries(ctx context.Context, obj *model.SimpleDir) ([]model.FsEntry, error)
|
Entries(ctx context.Context, obj *fs.SimpleDir) ([]model.FsEntry, error)
|
||||||
}
|
}
|
||||||
type SubscriptionResolver interface {
|
type SubscriptionResolver interface {
|
||||||
TaskProgress(ctx context.Context, taskID string) (<-chan model.Progress, error)
|
TaskProgress(ctx context.Context, taskID string) (<-chan model.Progress, error)
|
||||||
|
@ -1178,7 +1179,7 @@ func (ec *executionContext) fieldContext_Query___schema(_ context.Context, field
|
||||||
return fc, nil
|
return fc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ec *executionContext) _ResolverFS_name(ctx context.Context, field graphql.CollectedField, obj *model.ResolverFs) (ret graphql.Marshaler) {
|
func (ec *executionContext) _ResolverFS_name(ctx context.Context, field graphql.CollectedField, obj *fs.ResolverFs) (ret graphql.Marshaler) {
|
||||||
fc, err := ec.fieldContext_ResolverFS_name(ctx, field)
|
fc, err := ec.fieldContext_ResolverFS_name(ctx, field)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return graphql.Null
|
return graphql.Null
|
||||||
|
@ -1222,7 +1223,7 @@ func (ec *executionContext) fieldContext_ResolverFS_name(_ context.Context, fiel
|
||||||
return fc, nil
|
return fc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ec *executionContext) _ResolverFS_entries(ctx context.Context, field graphql.CollectedField, obj *model.ResolverFs) (ret graphql.Marshaler) {
|
func (ec *executionContext) _ResolverFS_entries(ctx context.Context, field graphql.CollectedField, obj *fs.ResolverFs) (ret graphql.Marshaler) {
|
||||||
fc, err := ec.fieldContext_ResolverFS_entries(ctx, field)
|
fc, err := ec.fieldContext_ResolverFS_entries(ctx, field)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return graphql.Null
|
return graphql.Null
|
||||||
|
@ -1364,7 +1365,7 @@ func (ec *executionContext) fieldContext_Schema_mutation(_ context.Context, fiel
|
||||||
return fc, nil
|
return fc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ec *executionContext) _SimpleDir_name(ctx context.Context, field graphql.CollectedField, obj *model.SimpleDir) (ret graphql.Marshaler) {
|
func (ec *executionContext) _SimpleDir_name(ctx context.Context, field graphql.CollectedField, obj *fs.SimpleDir) (ret graphql.Marshaler) {
|
||||||
fc, err := ec.fieldContext_SimpleDir_name(ctx, field)
|
fc, err := ec.fieldContext_SimpleDir_name(ctx, field)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return graphql.Null
|
return graphql.Null
|
||||||
|
@ -1408,7 +1409,7 @@ func (ec *executionContext) fieldContext_SimpleDir_name(_ context.Context, field
|
||||||
return fc, nil
|
return fc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ec *executionContext) _SimpleDir_entries(ctx context.Context, field graphql.CollectedField, obj *model.SimpleDir) (ret graphql.Marshaler) {
|
func (ec *executionContext) _SimpleDir_entries(ctx context.Context, field graphql.CollectedField, obj *fs.SimpleDir) (ret graphql.Marshaler) {
|
||||||
fc, err := ec.fieldContext_SimpleDir_entries(ctx, field)
|
fc, err := ec.fieldContext_SimpleDir_entries(ctx, field)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return graphql.Null
|
return graphql.Null
|
||||||
|
@ -1474,7 +1475,7 @@ func (ec *executionContext) fieldContext_SimpleDir_entries(_ context.Context, fi
|
||||||
return fc, nil
|
return fc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ec *executionContext) _SimpleFile_name(ctx context.Context, field graphql.CollectedField, obj *model.SimpleFile) (ret graphql.Marshaler) {
|
func (ec *executionContext) _SimpleFile_name(ctx context.Context, field graphql.CollectedField, obj *fs.SimpleFile) (ret graphql.Marshaler) {
|
||||||
fc, err := ec.fieldContext_SimpleFile_name(ctx, field)
|
fc, err := ec.fieldContext_SimpleFile_name(ctx, field)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return graphql.Null
|
return graphql.Null
|
||||||
|
@ -1518,7 +1519,7 @@ func (ec *executionContext) fieldContext_SimpleFile_name(_ context.Context, fiel
|
||||||
return fc, nil
|
return fc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ec *executionContext) _SimpleFile_size(ctx context.Context, field graphql.CollectedField, obj *model.SimpleFile) (ret graphql.Marshaler) {
|
func (ec *executionContext) _SimpleFile_size(ctx context.Context, field graphql.CollectedField, obj *fs.SimpleFile) (ret graphql.Marshaler) {
|
||||||
fc, err := ec.fieldContext_SimpleFile_size(ctx, field)
|
fc, err := ec.fieldContext_SimpleFile_size(ctx, field)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return graphql.Null
|
return graphql.Null
|
||||||
|
@ -3850,16 +3851,16 @@ func (ec *executionContext) _Dir(ctx context.Context, sel ast.SelectionSet, obj
|
||||||
switch obj := (obj).(type) {
|
switch obj := (obj).(type) {
|
||||||
case nil:
|
case nil:
|
||||||
return graphql.Null
|
return graphql.Null
|
||||||
case model.SimpleDir:
|
case fs.SimpleDir:
|
||||||
return ec._SimpleDir(ctx, sel, &obj)
|
return ec._SimpleDir(ctx, sel, &obj)
|
||||||
case *model.SimpleDir:
|
case *fs.SimpleDir:
|
||||||
if obj == nil {
|
if obj == nil {
|
||||||
return graphql.Null
|
return graphql.Null
|
||||||
}
|
}
|
||||||
return ec._SimpleDir(ctx, sel, obj)
|
return ec._SimpleDir(ctx, sel, obj)
|
||||||
case model.ResolverFs:
|
case fs.ResolverFs:
|
||||||
return ec._ResolverFS(ctx, sel, &obj)
|
return ec._ResolverFS(ctx, sel, &obj)
|
||||||
case *model.ResolverFs:
|
case *fs.ResolverFs:
|
||||||
if obj == nil {
|
if obj == nil {
|
||||||
return graphql.Null
|
return graphql.Null
|
||||||
}
|
}
|
||||||
|
@ -3873,9 +3874,9 @@ func (ec *executionContext) _File(ctx context.Context, sel ast.SelectionSet, obj
|
||||||
switch obj := (obj).(type) {
|
switch obj := (obj).(type) {
|
||||||
case nil:
|
case nil:
|
||||||
return graphql.Null
|
return graphql.Null
|
||||||
case model.SimpleFile:
|
case fs.SimpleFile:
|
||||||
return ec._SimpleFile(ctx, sel, &obj)
|
return ec._SimpleFile(ctx, sel, &obj)
|
||||||
case *model.SimpleFile:
|
case *fs.SimpleFile:
|
||||||
if obj == nil {
|
if obj == nil {
|
||||||
return graphql.Null
|
return graphql.Null
|
||||||
}
|
}
|
||||||
|
@ -3889,23 +3890,23 @@ func (ec *executionContext) _FsEntry(ctx context.Context, sel ast.SelectionSet,
|
||||||
switch obj := (obj).(type) {
|
switch obj := (obj).(type) {
|
||||||
case nil:
|
case nil:
|
||||||
return graphql.Null
|
return graphql.Null
|
||||||
case model.SimpleFile:
|
case fs.SimpleFile:
|
||||||
return ec._SimpleFile(ctx, sel, &obj)
|
return ec._SimpleFile(ctx, sel, &obj)
|
||||||
case *model.SimpleFile:
|
case *fs.SimpleFile:
|
||||||
if obj == nil {
|
if obj == nil {
|
||||||
return graphql.Null
|
return graphql.Null
|
||||||
}
|
}
|
||||||
return ec._SimpleFile(ctx, sel, obj)
|
return ec._SimpleFile(ctx, sel, obj)
|
||||||
case model.SimpleDir:
|
case fs.SimpleDir:
|
||||||
return ec._SimpleDir(ctx, sel, &obj)
|
return ec._SimpleDir(ctx, sel, &obj)
|
||||||
case *model.SimpleDir:
|
case *fs.SimpleDir:
|
||||||
if obj == nil {
|
if obj == nil {
|
||||||
return graphql.Null
|
return graphql.Null
|
||||||
}
|
}
|
||||||
return ec._SimpleDir(ctx, sel, obj)
|
return ec._SimpleDir(ctx, sel, obj)
|
||||||
case model.ResolverFs:
|
case fs.ResolverFs:
|
||||||
return ec._ResolverFS(ctx, sel, &obj)
|
return ec._ResolverFS(ctx, sel, &obj)
|
||||||
case *model.ResolverFs:
|
case *fs.ResolverFs:
|
||||||
if obj == nil {
|
if obj == nil {
|
||||||
return graphql.Null
|
return graphql.Null
|
||||||
}
|
}
|
||||||
|
@ -4128,7 +4129,7 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr
|
||||||
|
|
||||||
var resolverFSImplementors = []string{"ResolverFS", "Dir", "FsEntry"}
|
var resolverFSImplementors = []string{"ResolverFS", "Dir", "FsEntry"}
|
||||||
|
|
||||||
func (ec *executionContext) _ResolverFS(ctx context.Context, sel ast.SelectionSet, obj *model.ResolverFs) graphql.Marshaler {
|
func (ec *executionContext) _ResolverFS(ctx context.Context, sel ast.SelectionSet, obj *fs.ResolverFs) graphql.Marshaler {
|
||||||
fields := graphql.CollectFields(ec.OperationContext, sel, resolverFSImplementors)
|
fields := graphql.CollectFields(ec.OperationContext, sel, resolverFSImplementors)
|
||||||
|
|
||||||
out := graphql.NewFieldSet(fields)
|
out := graphql.NewFieldSet(fields)
|
||||||
|
@ -4241,7 +4242,7 @@ func (ec *executionContext) _Schema(ctx context.Context, sel ast.SelectionSet, o
|
||||||
|
|
||||||
var simpleDirImplementors = []string{"SimpleDir", "Dir", "FsEntry"}
|
var simpleDirImplementors = []string{"SimpleDir", "Dir", "FsEntry"}
|
||||||
|
|
||||||
func (ec *executionContext) _SimpleDir(ctx context.Context, sel ast.SelectionSet, obj *model.SimpleDir) graphql.Marshaler {
|
func (ec *executionContext) _SimpleDir(ctx context.Context, sel ast.SelectionSet, obj *fs.SimpleDir) graphql.Marshaler {
|
||||||
fields := graphql.CollectFields(ec.OperationContext, sel, simpleDirImplementors)
|
fields := graphql.CollectFields(ec.OperationContext, sel, simpleDirImplementors)
|
||||||
|
|
||||||
out := graphql.NewFieldSet(fields)
|
out := graphql.NewFieldSet(fields)
|
||||||
|
@ -4316,7 +4317,7 @@ func (ec *executionContext) _SimpleDir(ctx context.Context, sel ast.SelectionSet
|
||||||
|
|
||||||
var simpleFileImplementors = []string{"SimpleFile", "File", "FsEntry"}
|
var simpleFileImplementors = []string{"SimpleFile", "File", "FsEntry"}
|
||||||
|
|
||||||
func (ec *executionContext) _SimpleFile(ctx context.Context, sel ast.SelectionSet, obj *model.SimpleFile) graphql.Marshaler {
|
func (ec *executionContext) _SimpleFile(ctx context.Context, sel ast.SelectionSet, obj *fs.SimpleFile) graphql.Marshaler {
|
||||||
fields := graphql.CollectFields(ec.OperationContext, sel, simpleFileImplementors)
|
fields := graphql.CollectFields(ec.OperationContext, sel, simpleFileImplementors)
|
||||||
|
|
||||||
out := graphql.NewFieldSet(fields)
|
out := graphql.NewFieldSet(fields)
|
||||||
|
|
|
@ -2,10 +2,6 @@
|
||||||
|
|
||||||
package model
|
package model
|
||||||
|
|
||||||
import (
|
|
||||||
"git.kmsign.ru/royalcat/tstor/server/src/vfs"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Dir interface {
|
type Dir interface {
|
||||||
IsFsEntry()
|
IsFsEntry()
|
||||||
IsDir()
|
IsDir()
|
||||||
|
@ -47,65 +43,11 @@ type Plugin struct {
|
||||||
type Query struct {
|
type Query struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type ResolverFs struct {
|
|
||||||
Name string `json:"name"`
|
|
||||||
Entries []FsEntry `json:"entries"`
|
|
||||||
FS *vfs.ResolverFS `json:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
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 {
|
type Schema struct {
|
||||||
Query *Query `json:"query,omitempty"`
|
Query *Query `json:"query,omitempty"`
|
||||||
Mutation *Mutation `json:"mutation,omitempty"`
|
Mutation *Mutation `json:"mutation,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type SimpleDir struct {
|
|
||||||
Name string `json:"name"`
|
|
||||||
Entries []FsEntry `json:"entries"`
|
|
||||||
FS vfs.Filesystem `json:"-"`
|
|
||||||
Path string `json:"-"`
|
|
||||||
}
|
|
||||||
|
|
||||||
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 Subscription struct {
|
type Subscription struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,16 +8,17 @@ import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
graph "git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql"
|
graph "git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql"
|
||||||
|
"git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/fs"
|
||||||
"git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/model"
|
"git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Entries is the resolver for the entries field.
|
// Entries is the resolver for the entries field.
|
||||||
func (r *resolverFSResolver) Entries(ctx context.Context, obj *model.ResolverFs) ([]model.FsEntry, error) {
|
func (r *resolverFSResolver) Entries(ctx context.Context, obj *fs.ResolverFs) ([]model.FsEntry, error) {
|
||||||
return obj.ResolverEntries(ctx)
|
return obj.ResolverEntries(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Entries is the resolver for the entries field.
|
// Entries is the resolver for the entries field.
|
||||||
func (r *simpleDirResolver) Entries(ctx context.Context, obj *model.SimpleDir) ([]model.FsEntry, error) {
|
func (r *simpleDirResolver) Entries(ctx context.Context, obj *fs.SimpleDir) ([]model.FsEntry, error) {
|
||||||
return obj.SimpleDirEntries(ctx)
|
return obj.SimpleDirEntries(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
graph "git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql"
|
graph "git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql"
|
||||||
|
"git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/fs"
|
||||||
"git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/model"
|
"git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -24,7 +25,7 @@ func (r *queryResolver) FsEntry(ctx context.Context, path string) (model.FsEntry
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return model.FillFsEntry(ctx, entry, r.VFS, path)
|
return fs.FillFsEntry(ctx, entry, r.VFS, path)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Query returns graph.QueryResolver implementation.
|
// Query returns graph.QueryResolver implementation.
|
||||||
|
|
Loading…
Reference in a new issue