move gotd fork into repo. (#111)
- update to latest telegram layer - remove some references to fields in tg.Entities that don't exist in the schema - originally added here: https://github.com/beeper/td/commit/820929062a2ba0104397bc01235ab58a9cff780e - referenced here - https://github.com/mautrix/telegramgo/commit/124f0967ed195b5a380c9bd02e170ada9710dde3 - https://github.com/mautrix/telegramgo/commit/4205047aab2e0639217148b5d125bfaab668bd8e
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"go/types"
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"go.mau.fi/mautrix-telegram/pkg/gotd/telegram/query/internal/genutil"
|
||||
)
|
||||
|
||||
// Param represents request parameter.
|
||||
type Param struct {
|
||||
// Name to use in function declaration.
|
||||
Name string
|
||||
// OriginalName in struct definition.
|
||||
OriginalName string
|
||||
// Go type.
|
||||
Type string
|
||||
}
|
||||
|
||||
func varToParam(field *types.Var) Param {
|
||||
fieldName := field.Name()
|
||||
fieldName = strings.ToLower(fieldName[:1]) + fieldName[1:]
|
||||
return Param{
|
||||
Name: fieldName,
|
||||
OriginalName: field.Name(),
|
||||
Type: genutil.PrintType(field.Type()),
|
||||
}
|
||||
}
|
||||
|
||||
func sortParams(p []Param) []Param {
|
||||
sort.SliceStable(p, func(i, j int) bool {
|
||||
return p[i].Name < p[j].Name
|
||||
})
|
||||
|
||||
return p
|
||||
}
|
||||
|
||||
// SpecialCaseChain represents special request parameter setter.
|
||||
type SpecialCaseChain struct {
|
||||
// ConstructorName to use in function body.
|
||||
ConstructorName string
|
||||
// ConstructorType to use in function body.
|
||||
ConstructorType string
|
||||
// Field of request struct.
|
||||
Field Param
|
||||
// Args is a slice of arguments. May be empty.
|
||||
Args []Param
|
||||
}
|
||||
|
||||
// RequestArgument represents request parameter passed by iterator.
|
||||
type RequestArgument struct {
|
||||
// Arg describes argument.
|
||||
Arg Param
|
||||
// Chain is flag to generate builder chain setter.
|
||||
Chain bool
|
||||
// RequiredByIter is flag to generate pass to iterator constructor.
|
||||
RequiredByIter bool
|
||||
}
|
||||
|
||||
// Method is a RPC method.
|
||||
type Method struct {
|
||||
// Name to use in function declaration.
|
||||
Name string
|
||||
// OriginalName is name of method of tg.Client.
|
||||
OriginalName string
|
||||
// RequestName is name of request struct.
|
||||
RequestName string
|
||||
// ResultName is name of result type.
|
||||
ResultName string
|
||||
// RequiredParams is a required params for query builder.
|
||||
RequiredParams []Param
|
||||
// AdditionalMapping is names of field from iterator.
|
||||
// Some type doesn't have AddOffset for example, so we customize mapping here.
|
||||
AdditionalMapping []RequestArgument
|
||||
|
||||
// SpecialCase is a slice of special case chains.
|
||||
// Like tg.MessagesFilterClass constructor field setters.
|
||||
SpecialCase []SpecialCaseChain
|
||||
|
||||
// Other parameters of request to pass it in constructor.
|
||||
AdditionalParams []Param
|
||||
|
||||
// IteratorName is name of iterator to build.
|
||||
IteratorName string
|
||||
// ElemName is name of iterator elem.
|
||||
ElemName string
|
||||
}
|
||||
|
||||
// Config is codegeneration config to use.
|
||||
type Config struct {
|
||||
// Methods to generate helpers and query builders.
|
||||
Methods []Method
|
||||
// ResultName package name
|
||||
Package string
|
||||
// ResultName is name of result type.
|
||||
ResultName string
|
||||
// RequestFields is a slice of request struct fields.
|
||||
RequestFields []Param
|
||||
}
|
||||
Reference in New Issue
Block a user