Update for 0.19.0-rc.1

This commit is contained in:
2023-10-04 16:16:36 -07:00
parent 5a7463d006
commit 2511d0dcc7
9 changed files with 1425 additions and 1483 deletions

View File

@@ -22,7 +22,6 @@ func (r *RoutesGenerator) Generate(routes []extractor.Route) error {
f.HeaderComment("Code generated by go.elara.ws/go-lemmy/cmd/gen (routes generator). DO NOT EDIT.")
for _, r := range routes {
f.Comment(r.Summary)
f.Func().Params(
jen.Id("c").Id("*Client"),
@@ -37,27 +36,26 @@ func (r *RoutesGenerator) Generate(routes []extractor.Route) error {
}
g.Error()
}).BlockFunc(func(g *jen.Group) {
data := jen.Id("data")
// If there are no parameters, set the data to nil
if r.ParamsName == "" {
data = jen.Nil()
}
returnName := r.ReturnName
if returnName == "" {
returnName = "EmptyResponse"
}
if r.ParamsName == "" {
g.Id("data").Op(":=").Qual("go.elara.ws/go-lemmy/types", "EmptyData").Block()
}
g.Id("resData").Op(":=").Op("&").Qual("go.elara.ws/go-lemmy/types", returnName).Block()
var funcName string
switch r.Method {
case "GET":
funcName := "req"
if r.Method == "GET" {
funcName = "getReq"
default:
funcName = "req"
}
g.List(jen.Id("res"), jen.Err()).Op(":=").Id("c").Dot(funcName).Params(
jen.Id("ctx"), jen.Lit(r.Method), jen.Lit(r.Path), jen.Id("data"), jen.Op("&").Id("resData"),
jen.Id("ctx"), jen.Lit(r.Method), jen.Lit(r.Path), data, jen.Op("&").Id("resData"),
)
g.If(jen.Err().Op("!=").Nil()).BlockFunc(func(g *jen.Group) {
if returnName == "EmptyResponse" {

View File

@@ -35,7 +35,7 @@ func (s *StructGenerator) Generate(items []extractor.Struct) error {
} else {
f.Type().Id(item.Name).StructFunc(func(g *jen.Group) {
for _, field := range item.Fields {
g.Id(transformFieldName(field.Name)).Id(getType(field)).Tag(map[string]string{
g.Id(transformFieldName(field.Name)).Add(getType(field)).Tag(map[string]string{
"json": field.Name,
"url": field.Name + ",omitempty",
})
@@ -51,7 +51,19 @@ func (s *StructGenerator) Generate(items []extractor.Struct) error {
return f.Render(s.w)
}
func getType(f extractor.Field) string {
func getType(f extractor.Field) jen.Code {
// Some time fields are strings in the JS client,
// use time.Time for those
switch f.Name {
case "published", "updated", "when_":
return jen.Qual("time", "Time")
}
// Rank types such as hot_rank and hot_rank_active may be floats.
if strings.Contains(f.Name, "rank") {
return jen.Float64()
}
t := transformType(f.Name, f.Type)
if f.IsArray {
t = "[]" + t
@@ -59,17 +71,10 @@ func getType(f extractor.Field) string {
if f.IsOptional {
t = "Optional[" + t + "]"
}
return t
return jen.Id(t)
}
func transformType(name, t string) string {
// Some time fields are strings in the JS client,
// use LemmyTime for those
switch name {
case "published", "updated", "when_":
return "LemmyTime"
}
switch t {
case "number":
return "int64"
@@ -94,7 +99,6 @@ func transformFieldName(s string) string {
"Png", "PNG",
"Uuid", "UUID",
"Wav", "WAV",
"Ap", "AP",
).Replace(s)
return s
}