torrent priority and piece state fix

This commit is contained in:
royalcat 2024-07-07 23:09:13 +03:00
parent 13ce2aa07f
commit 199a82ff0c
33 changed files with 2227 additions and 959 deletions
cmd/generate-graphql

View file

@ -10,6 +10,23 @@ import (
"github.com/99designs/gqlgen/codegen/config"
)
func main() {
cfg, err := config.LoadConfigFromDefaultLocations()
if err != nil {
fmt.Fprintln(os.Stderr, "failed to load config", err.Error())
os.Exit(2)
}
err = api.Generate(cfg,
api.PrependPlugin(&resolverDirective{}),
api.AddPlugin(&fieldDirectiveFix{}),
)
if err != nil {
fmt.Fprintln(os.Stderr, err.Error())
os.Exit(3)
}
}
type fieldDirectiveFix struct {
}
@ -25,9 +42,6 @@ func (fieldDirectiveFix) GenerateCode(cfg *codegen.Data) error {
for _, v := range field.TypeReference.Definition.Directives {
directiveMap[v.Name]++
}
// for _, v := range field.Object.Directives {
// directiveMap[v.Name]++
// }
directive := make([]*codegen.Directive, 0, len(field.Directives))
for _, v := range field.Directives {
@ -48,18 +62,33 @@ func (fieldDirectiveFix) GenerateCode(cfg *codegen.Data) error {
return nil
}
func main() {
cfg, err := config.LoadConfigFromDefaultLocations()
if err != nil {
fmt.Fprintln(os.Stderr, "failed to load config", err.Error())
os.Exit(2)
type resolverDirective struct {
}
func (resolverDirective) Name() string {
return "Resolver directive support"
}
func (resolverDirective) GenerateCode(cfg *codegen.Data) error {
const directiveName = "resolver"
for _, obj := range cfg.Objects {
for _, field := range obj.Fields {
if field.FieldDefinition.Directives.ForName(directiveName) != nil {
fmt.Printf("Add resolver for field %s{%s}\n", obj.Name, field.Name)
field.IsResolver = true
// TODO
// field.FieldDefinition.Directives = removeDirective(field.FieldDefinition.Directives, directiveName)
}
}
}
err = api.Generate(cfg,
api.AddPlugin(&fieldDirectiveFix{}),
)
if err != nil {
fmt.Fprintln(os.Stderr, err.Error())
os.Exit(3)
}
return nil
}
// func removeDirective(directives ast.DirectiveList, name string) ast.DirectiveList {
// return slices.DeleteFunc(directives, func(directive *ast.Directive) bool {
// return directive.Name == name
// })
// }