diff --git a/server/src/delivery/graphql/fs/entries.go b/server/src/delivery/graphql/fs/entries.go index 2cb5076..a3d0297 100644 --- a/server/src/delivery/graphql/fs/entries.go +++ b/server/src/delivery/graphql/fs/entries.go @@ -3,16 +3,27 @@ package fs import ( "context" - "git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/model" "git.kmsign.ru/royalcat/tstor/server/src/vfs" ) +type Dir interface { + IsFsEntry() + IsDir() + GetName() string + GetEntries() []FsEntry +} + +type FsEntry interface { + IsFsEntry() + GetName() string +} + type FsElem interface { Name() string IsDir() bool } -func FillFsEntry(ctx context.Context, e FsElem, fs vfs.Filesystem, path string) (model.FsEntry, error) { +func FillFsEntry(ctx context.Context, e FsElem, fs vfs.Filesystem, path string) (FsEntry, error) { switch e.(type) { case *vfs.ResolverFS: e := e.(*vfs.ResolverFS) @@ -54,12 +65,12 @@ func FillFsEntry(ctx context.Context, e FsElem, fs vfs.Filesystem, path string) } } -func ReadEntries(ctx context.Context, fs vfs.Filesystem, path string) ([]model.FsEntry, error) { +func ReadEntries(ctx context.Context, fs vfs.Filesystem, path string) ([]FsEntry, error) { entries, err := fs.ReadDir(ctx, path) if err != nil { return nil, err } - out := []model.FsEntry{} + out := []FsEntry{} for _, e := range entries { entry, err := FillFsEntry(ctx, e, fs, ".") if err != nil { @@ -70,12 +81,12 @@ func ReadEntries(ctx context.Context, fs vfs.Filesystem, path string) ([]model.F return out, nil } -func (obj *ResolverFs) ResolverEntries(ctx context.Context) ([]model.FsEntry, error) { +func (obj *ResolverFs) ResolverEntries(ctx context.Context) ([]FsEntry, error) { entries, err := obj.FS.ReadDir(ctx, ".") if err != nil { return nil, err } - out := []model.FsEntry{} + out := []FsEntry{} for _, e := range entries { entry, err := FillFsEntry(ctx, e, obj.FS, ".") if err != nil { @@ -86,12 +97,12 @@ func (obj *ResolverFs) ResolverEntries(ctx context.Context) ([]model.FsEntry, er return out, nil } -func (obj *SimpleDir) SimpleDirEntries(ctx context.Context) ([]model.FsEntry, error) { +func (obj *SimpleDir) SimpleDirEntries(ctx context.Context) ([]FsEntry, error) { entries, err := obj.FS.ReadDir(ctx, obj.Path) if err != nil { return nil, err } - out := []model.FsEntry{} + out := []FsEntry{} for _, e := range entries { entry, err := FillFsEntry(ctx, e, obj.FS, obj.Path) if err != nil { diff --git a/server/src/delivery/graphql/fs/plain.go b/server/src/delivery/graphql/fs/plain.go index 98e7726..4af6785 100644 --- a/server/src/delivery/graphql/fs/plain.go +++ b/server/src/delivery/graphql/fs/plain.go @@ -1,27 +1,26 @@ 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) +var _ FsEntry = (*SimpleDir)(nil) +var _ Dir = (*SimpleDir)(nil) type SimpleDir struct { - Name string `json:"name"` - Entries []model.FsEntry `json:"entries"` - FS vfs.Filesystem `json:"-"` - Path string `json:"-"` + 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() []model.FsEntry { +func (this SimpleDir) GetEntries() []FsEntry { if this.Entries == nil { return nil } - interfaceSlice := make([]model.FsEntry, 0, len(this.Entries)) + interfaceSlice := make([]FsEntry, 0, len(this.Entries)) for _, concrete := range this.Entries { interfaceSlice = append(interfaceSlice, concrete) } diff --git a/server/src/delivery/graphql/fs/resolver.go b/server/src/delivery/graphql/fs/resolver.go index b999778..7398369 100644 --- a/server/src/delivery/graphql/fs/resolver.go +++ b/server/src/delivery/graphql/fs/resolver.go @@ -1,26 +1,25 @@ 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) +var _ FsEntry = (*ResolverFs)(nil) +var _ Dir = (*ResolverFs)(nil) type ResolverFs struct { Name string `json:"name"` - Entries []model.FsEntry `json:"entries"` + Entries []FsEntry `json:"entries"` FS *vfs.ResolverFS `json:"-"` } func (ResolverFs) IsDir() {} func (this ResolverFs) GetName() string { return this.Name } -func (this ResolverFs) GetEntries() []model.FsEntry { +func (this ResolverFs) GetEntries() []FsEntry { if this.Entries == nil { return nil } - interfaceSlice := make([]model.FsEntry, 0, len(this.Entries)) + interfaceSlice := make([]FsEntry, 0, len(this.Entries)) for _, concrete := range this.Entries { interfaceSlice = append(interfaceSlice, concrete) } diff --git a/server/src/delivery/graphql/generated.go b/server/src/delivery/graphql/generated.go index a83d077..6e9d029 100644 --- a/server/src/delivery/graphql/generated.go +++ b/server/src/delivery/graphql/generated.go @@ -105,13 +105,13 @@ type MutationResolver interface { } type QueryResolver interface { Plugins(ctx context.Context) ([]*model.Plugin, error) - FsEntry(ctx context.Context, path string) (model.FsEntry, error) + FsEntry(ctx context.Context, path string) (fs.FsEntry, error) } type ResolverFSResolver interface { - Entries(ctx context.Context, obj *fs.ResolverFs) ([]model.FsEntry, error) + Entries(ctx context.Context, obj *fs.ResolverFs) ([]fs.FsEntry, error) } type SimpleDirResolver interface { - Entries(ctx context.Context, obj *fs.SimpleDir) ([]model.FsEntry, error) + Entries(ctx context.Context, obj *fs.SimpleDir) ([]fs.FsEntry, error) } type SubscriptionResolver interface { TaskProgress(ctx context.Context, taskID string) (<-chan model.Progress, error) @@ -1019,9 +1019,9 @@ func (ec *executionContext) _Query_fsEntry(ctx context.Context, field graphql.Co if resTmp == nil { return graphql.Null } - res := resTmp.(model.FsEntry) + res := resTmp.(fs.FsEntry) fc.Result = res - return ec.marshalOFsEntry2gitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋmodelᚐFsEntry(ctx, field.Selections, res) + return ec.marshalOFsEntry2gitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋfsᚐFsEntry(ctx, field.Selections, res) } func (ec *executionContext) fieldContext_Query_fsEntry(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { @@ -1243,7 +1243,7 @@ func (ec *executionContext) _ResolverFS_entries(ctx context.Context, field graph directive1 := func(ctx context.Context) (any, error) { if ec.directives.Resolver == nil { - var zeroVal []model.FsEntry + var zeroVal []fs.FsEntry return zeroVal, errors.New("directive resolver is not implemented") } return ec.directives.Resolver(ctx, obj, directive0) @@ -1256,10 +1256,10 @@ func (ec *executionContext) _ResolverFS_entries(ctx context.Context, field graph if tmp == nil { return nil, nil } - if data, ok := tmp.([]model.FsEntry); ok { + if data, ok := tmp.([]fs.FsEntry); ok { return data, nil } - return nil, fmt.Errorf(`unexpected type %T from directive, should be []git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/model.FsEntry`, tmp) + return nil, fmt.Errorf(`unexpected type %T from directive, should be []git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/fs.FsEntry`, tmp) }) if err != nil { ec.Error(ctx, err) @@ -1271,9 +1271,9 @@ func (ec *executionContext) _ResolverFS_entries(ctx context.Context, field graph } return graphql.Null } - res := resTmp.([]model.FsEntry) + res := resTmp.([]fs.FsEntry) fc.Result = res - return ec.marshalNFsEntry2ᚕgitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋmodelᚐFsEntryᚄ(ctx, field.Selections, res) + return ec.marshalNFsEntry2ᚕgitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋfsᚐFsEntryᚄ(ctx, field.Selections, res) } func (ec *executionContext) fieldContext_ResolverFS_entries(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { @@ -1429,7 +1429,7 @@ func (ec *executionContext) _SimpleDir_entries(ctx context.Context, field graphq directive1 := func(ctx context.Context) (any, error) { if ec.directives.Resolver == nil { - var zeroVal []model.FsEntry + var zeroVal []fs.FsEntry return zeroVal, errors.New("directive resolver is not implemented") } return ec.directives.Resolver(ctx, obj, directive0) @@ -1442,10 +1442,10 @@ func (ec *executionContext) _SimpleDir_entries(ctx context.Context, field graphq if tmp == nil { return nil, nil } - if data, ok := tmp.([]model.FsEntry); ok { + if data, ok := tmp.([]fs.FsEntry); ok { return data, nil } - return nil, fmt.Errorf(`unexpected type %T from directive, should be []git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/model.FsEntry`, tmp) + return nil, fmt.Errorf(`unexpected type %T from directive, should be []git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/fs.FsEntry`, tmp) }) if err != nil { ec.Error(ctx, err) @@ -1457,9 +1457,9 @@ func (ec *executionContext) _SimpleDir_entries(ctx context.Context, field graphq } return graphql.Null } - res := resTmp.([]model.FsEntry) + res := resTmp.([]fs.FsEntry) fc.Result = res - return ec.marshalNFsEntry2ᚕgitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋmodelᚐFsEntryᚄ(ctx, field.Selections, res) + return ec.marshalNFsEntry2ᚕgitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋfsᚐFsEntryᚄ(ctx, field.Selections, res) } func (ec *executionContext) fieldContext_SimpleDir_entries(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { @@ -3847,7 +3847,7 @@ func (ec *executionContext) unmarshalInputStringFilter(ctx context.Context, obj // region ************************** interface.gotpl *************************** -func (ec *executionContext) _Dir(ctx context.Context, sel ast.SelectionSet, obj model.Dir) graphql.Marshaler { +func (ec *executionContext) _Dir(ctx context.Context, sel ast.SelectionSet, obj fs.Dir) graphql.Marshaler { switch obj := (obj).(type) { case nil: return graphql.Null @@ -3886,7 +3886,7 @@ func (ec *executionContext) _File(ctx context.Context, sel ast.SelectionSet, obj } } -func (ec *executionContext) _FsEntry(ctx context.Context, sel ast.SelectionSet, obj model.FsEntry) graphql.Marshaler { +func (ec *executionContext) _FsEntry(ctx context.Context, sel ast.SelectionSet, obj fs.FsEntry) graphql.Marshaler { switch obj := (obj).(type) { case nil: return graphql.Null @@ -3916,7 +3916,7 @@ func (ec *executionContext) _FsEntry(ctx context.Context, sel ast.SelectionSet, return graphql.Null } return ec._File(ctx, sel, obj) - case model.Dir: + case fs.Dir: if obj == nil { return graphql.Null } @@ -4768,7 +4768,7 @@ func (ec *executionContext) marshalNBoolean2bool(ctx context.Context, sel ast.Se return res } -func (ec *executionContext) marshalNFsEntry2gitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋmodelᚐFsEntry(ctx context.Context, sel ast.SelectionSet, v model.FsEntry) graphql.Marshaler { +func (ec *executionContext) marshalNFsEntry2gitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋfsᚐFsEntry(ctx context.Context, sel ast.SelectionSet, v fs.FsEntry) graphql.Marshaler { if v == nil { if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { ec.Errorf(ctx, "the requested element is null which the schema does not allow") @@ -4778,7 +4778,7 @@ func (ec *executionContext) marshalNFsEntry2gitᚗkmsignᚗruᚋroyalcatᚋtstor return ec._FsEntry(ctx, sel, v) } -func (ec *executionContext) marshalNFsEntry2ᚕgitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋmodelᚐFsEntryᚄ(ctx context.Context, sel ast.SelectionSet, v []model.FsEntry) graphql.Marshaler { +func (ec *executionContext) marshalNFsEntry2ᚕgitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋfsᚐFsEntryᚄ(ctx context.Context, sel ast.SelectionSet, v []fs.FsEntry) graphql.Marshaler { ret := make(graphql.Array, len(v)) var wg sync.WaitGroup isLen1 := len(v) == 1 @@ -4802,7 +4802,7 @@ func (ec *executionContext) marshalNFsEntry2ᚕgitᚗkmsignᚗruᚋroyalcatᚋts if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalNFsEntry2gitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋmodelᚐFsEntry(ctx, sel, v[i]) + ret[i] = ec.marshalNFsEntry2gitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋfsᚐFsEntry(ctx, sel, v[i]) } if isLen1 { f(i) @@ -5229,7 +5229,7 @@ func (ec *executionContext) marshalODateTime2ᚖtimeᚐTime(ctx context.Context, return res } -func (ec *executionContext) marshalOFsEntry2gitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋmodelᚐFsEntry(ctx context.Context, sel ast.SelectionSet, v model.FsEntry) graphql.Marshaler { +func (ec *executionContext) marshalOFsEntry2gitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋfsᚐFsEntry(ctx context.Context, sel ast.SelectionSet, v fs.FsEntry) graphql.Marshaler { if v == nil { return graphql.Null } diff --git a/server/src/delivery/graphql/model/models_gen.go b/server/src/delivery/graphql/model/models_gen.go index 2891015..01f17ac 100644 --- a/server/src/delivery/graphql/model/models_gen.go +++ b/server/src/delivery/graphql/model/models_gen.go @@ -2,13 +2,6 @@ package model -type Dir interface { - IsFsEntry() - IsDir() - GetName() string - GetEntries() []FsEntry -} - type File interface { IsFsEntry() IsFile() @@ -16,11 +9,6 @@ type File interface { GetSize() int64 } -type FsEntry interface { - IsFsEntry() - GetName() string -} - type Progress interface { IsProgress() GetCurrent() int64 diff --git a/server/src/delivery/graphql/resolver/fs.resolvers.go b/server/src/delivery/graphql/resolver/fs.resolvers.go index 831094d..6a5db29 100644 --- a/server/src/delivery/graphql/resolver/fs.resolvers.go +++ b/server/src/delivery/graphql/resolver/fs.resolvers.go @@ -9,16 +9,15 @@ import ( 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" ) // Entries is the resolver for the entries field. -func (r *resolverFSResolver) Entries(ctx context.Context, obj *fs.ResolverFs) ([]model.FsEntry, error) { +func (r *resolverFSResolver) Entries(ctx context.Context, obj *fs.ResolverFs) ([]fs.FsEntry, error) { return obj.ResolverEntries(ctx) } // Entries is the resolver for the entries field. -func (r *simpleDirResolver) Entries(ctx context.Context, obj *fs.SimpleDir) ([]model.FsEntry, error) { +func (r *simpleDirResolver) Entries(ctx context.Context, obj *fs.SimpleDir) ([]fs.FsEntry, error) { return obj.SimpleDirEntries(ctx) } diff --git a/server/src/delivery/graphql/resolver/query.resolvers.go b/server/src/delivery/graphql/resolver/query.resolvers.go index 88d7508..6c52829 100644 --- a/server/src/delivery/graphql/resolver/query.resolvers.go +++ b/server/src/delivery/graphql/resolver/query.resolvers.go @@ -19,7 +19,7 @@ func (r *queryResolver) Plugins(ctx context.Context) ([]*model.Plugin, error) { } // FsEntry is the resolver for the fsEntry field. -func (r *queryResolver) FsEntry(ctx context.Context, path string) (model.FsEntry, error) { +func (r *queryResolver) FsEntry(ctx context.Context, path string) (fs.FsEntry, error) { entry, err := r.VFS.Stat(ctx, path) if err != nil { return nil, err