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:
Adam Van Ymeren
2025-06-27 20:03:37 -07:00
committed by GitHub
parent 0952df0244
commit 7a04f298d2
19264 changed files with 1539697 additions and 84 deletions
@@ -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
}