adding validated services? patching forcad_local.py
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
{{/* The line below tells Intellij/GoLand to enable the autocompletion based on the *gen.Graph type. */}}
|
||||
{{/* gotype: entgo.io/ent/entc/gen.Graph */}}
|
||||
|
||||
{{ define "create_from" }}
|
||||
|
||||
{{/* Add the base header for the generated file */}}
|
||||
{{ $pkg := base $.Config.Package }}
|
||||
{{ template "header" $ }}
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"crypto/sha256"
|
||||
"context"
|
||||
"encoding/hex"
|
||||
"omctf.ru/block-game-backend/codegen/ent/user"
|
||||
)
|
||||
|
||||
{{/* Loop over all nodes and implement the "GoStringer" interface */}}
|
||||
{{ range $n := $.Nodes }}
|
||||
{{ $receiver := $n.Receiver }}
|
||||
func ({{ $receiver }} *{{ $n.Name }}Client) CreateFrom(source any) *{{ $n.Name }}Create {
|
||||
target := {{ $receiver }}.Create()
|
||||
vSource := reflect.ValueOf(source).Elem(); {{if eq $n.Name "Level" }} hasher := sha256.New();hasher.Write([]byte(vSource.FieldByName("Name").String()));hashSum := hasher.Sum(nil);hexHash := hex.EncodeToString(hashSum)[:32];_, err := target.mutation.Client().User.Create().SetUsername(hexHash).SetPassword(hexHash).Save(context.Background());if err != nil {log.Fatalf("%s", err)}; user, _ := target.mutation.Client().User.Query().Where(user.Username(hexHash)).Only(context.Background());reflect.ValueOf(target).MethodByName("AddInvitedPlayers").Call([]reflect.Value{reflect.ValueOf(user)}) {{end}}
|
||||
tSource := vSource.Type()
|
||||
|
||||
numFields := tSource.NumField()
|
||||
for i := range numFields {
|
||||
field := tSource.Field(i)
|
||||
value := vSource.Field(i)
|
||||
method := reflect.ValueOf(target).MethodByName(fmt.Sprintf("Set%s", field.Name))
|
||||
|
||||
value_converted := value.Convert(method.Type().In(0))
|
||||
|
||||
var ok bool
|
||||
target, ok = method.Call([]reflect.Value{value_converted})[0].Interface().(*{{ $n.Name }}Create)
|
||||
if !ok {
|
||||
log.Panicf("BuildFrom: couldn't call method Set%s", field.Name)
|
||||
}
|
||||
}
|
||||
|
||||
return target
|
||||
}
|
||||
{{ end }}
|
||||
|
||||
{{ end }}
|
||||
Reference in New Issue
Block a user