Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 993d64b9d1 | |||
| da7385572c | |||
| 966887f3ba | |||
| 5fd0a73741 | |||
| db30aeabf5 | |||
| 8b669910e4 | |||
| f01ac7b716 | |||
| 9edacef768 | |||
| b22e50d439 | |||
| 46c74e6b9b | |||
| 4711b2b160 | |||
| afa9507ee2 | |||
| 8a4f704788 | |||
| 7e2677c495 | |||
| c40ad29ae1 | |||
| 2511d0dcc7 | |||
| 5a7463d006 | |||
| 0d50afac8e | |||
| 833745395f | |||
| f8a84454d8 | |||
| fb99765a2a | |||
| 7e4c13d031 | |||
| 4bc9ac9276 | |||
| 44dbe8c934 | |||
| 9f4bae88f2 | |||
| 11c92ef2b1 | |||
| 329bf27ffd |
33
README.md
33
README.md
@@ -1,28 +1,33 @@
|
||||
# Go-Lemmy
|
||||
|
||||
[](https://pkg.go.dev/go.arsenm.dev/go-lemmy)
|
||||
[](https://pkg.go.dev/go.elara.ws/go-lemmy)
|
||||
|
||||
Go bindings to the [Lemmy](https://join-lemmy.org) API, automatically generated directly from Lemmy's source code using the generator in [cmd/gen](cmd/gen).
|
||||
Go bindings to the [Lemmy](https://join-lemmy.org) API, automatically generated from Lemmy's source code using the generator in [cmd/gen](cmd/gen).
|
||||
|
||||
Examples:
|
||||
### Examples
|
||||
|
||||
- HTTP: [examples/http](examples/http)
|
||||
- WebSocket: [examples/websocket](examples/websocket)
|
||||
Examples can be found in the [examples](examples) directory.
|
||||
|
||||
### How to generate
|
||||
|
||||
First, build the generator:
|
||||
First, clone the [lemmy-js-client](https://github.com/LemmyNet/lemmy-js-client) repo at whatever version you need:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/LemmyNet/lemmy-js-client -b 0.18.3
|
||||
```
|
||||
|
||||
Inside it, build the JSON docs file:
|
||||
|
||||
```bash
|
||||
npm run docs -- --json docs.json
|
||||
```
|
||||
|
||||
Next, build the generator:
|
||||
|
||||
```bash
|
||||
go build ./cmd/gen
|
||||
```
|
||||
|
||||
Clone Lemmy's source code at whatever version you need:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/LemmyNet/lemmy -b 0.16.7
|
||||
```
|
||||
|
||||
Remove all the existing generated code:
|
||||
|
||||
```bash
|
||||
@@ -32,7 +37,7 @@ rm **/*.gen.go
|
||||
Execute the generator:
|
||||
|
||||
```bash
|
||||
./gen -out-dir .
|
||||
./gen -json-file <path_to_docs.json> -out-dir .
|
||||
```
|
||||
|
||||
And that's it! Your generated code should be ready for use.
|
||||
And that's it! Your generated code should be ready for use.
|
||||
|
||||
224
cmd/gen/extractor/extractor.go
Normal file
224
cmd/gen/extractor/extractor.go
Normal file
@@ -0,0 +1,224 @@
|
||||
package extractor
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/tidwall/gjson"
|
||||
)
|
||||
|
||||
type Route struct {
|
||||
Name string
|
||||
Summary string
|
||||
Method string
|
||||
Path string
|
||||
ParamsName string
|
||||
ReturnName string
|
||||
}
|
||||
|
||||
type Struct struct {
|
||||
Name string
|
||||
Fields []Field
|
||||
UnionNames []string
|
||||
}
|
||||
|
||||
type Field struct {
|
||||
Name string
|
||||
IsArray bool
|
||||
IsOptional bool
|
||||
Type string
|
||||
}
|
||||
|
||||
type Extractor struct {
|
||||
root gjson.Result
|
||||
}
|
||||
|
||||
// New parses the file at path and returns an extractor with its contents.
|
||||
func New(path string) (*Extractor, error) {
|
||||
data, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &Extractor{gjson.ParseBytes(data)}, nil
|
||||
}
|
||||
|
||||
// Extract reads the JSON document and extracts all the routes and structs from it.
|
||||
func (e *Extractor) Extract() ([]Route, []Struct) {
|
||||
structs := map[int64]Struct{}
|
||||
var out []Route
|
||||
|
||||
// Get all the routes in the JSON document
|
||||
routes := e.root.Get("children.#.children.#(kind==2048)#|@flatten")
|
||||
|
||||
for _, route := range routes.Array() {
|
||||
name := route.Get("name").String()
|
||||
signature := route.Get(`signatures.0`)
|
||||
|
||||
// Get the code part of the route's summary.
|
||||
// This will contain the HTTP method and path.
|
||||
httpInfo := signature.Get(`comment.summary.#(kind=="code").text`).String()
|
||||
if !strings.HasPrefix(httpInfo, "`HTTP") {
|
||||
continue
|
||||
}
|
||||
method, path := parseHTTPInfo(httpInfo)
|
||||
|
||||
summary := strings.TrimSpace(signature.Get(`comment.summary.#(kind=="text").text`).String())
|
||||
if summary == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
// Get the ID and name of the type this function accepts
|
||||
paramsID := signature.Get("parameters.0.type.target").Int()
|
||||
paramsName := signature.Get("parameters.0.type.name").String()
|
||||
|
||||
// Get the ID and name of the type this function returns
|
||||
returnID := signature.Get("type.typeArguments.0.target").Int()
|
||||
returnName := signature.Get("type.typeArguments.0.name").String()
|
||||
|
||||
// Get the referenced structs from the JSON document
|
||||
e.getStructs([]int64{paramsID, returnID}, structs)
|
||||
|
||||
// If the parameters struct contains no fields or union names
|
||||
if len(structs[paramsID].Fields) == 0 && len(structs[paramsID].UnionNames) == 0 {
|
||||
// Delete the params struct from the structs map
|
||||
// to make sure it doesn't get generated
|
||||
delete(structs, paramsID)
|
||||
|
||||
// Set paramsName to an empty string to signify that this route
|
||||
// has no input parameters.
|
||||
paramsName = ""
|
||||
}
|
||||
|
||||
// If the return struct contains no fields or union names
|
||||
if len(structs[returnID].Fields) == 0 && len(structs[returnID].UnionNames) == 0 {
|
||||
// Delete the return struct from the structs map
|
||||
// to make sure it doesn't get generated
|
||||
delete(structs, returnID)
|
||||
|
||||
// Set paramsName to an empty string to signify that this route
|
||||
// has no return value.
|
||||
returnName = ""
|
||||
}
|
||||
|
||||
out = append(out, Route{
|
||||
Name: name,
|
||||
Summary: summary,
|
||||
Method: method,
|
||||
Path: path,
|
||||
ParamsName: paramsName,
|
||||
ReturnName: returnName,
|
||||
})
|
||||
}
|
||||
return out, getStructSlice(structs)
|
||||
}
|
||||
|
||||
func (e *Extractor) getStructs(ids []int64, structs map[int64]Struct) {
|
||||
for _, id := range ids {
|
||||
if _, ok := structs[id]; ok {
|
||||
continue
|
||||
}
|
||||
|
||||
// Get the struct with the given ID from the JSON document
|
||||
jstruct := e.root.Get(fmt.Sprintf("children.#(id==%d)", id))
|
||||
if !jstruct.Exists() {
|
||||
continue
|
||||
}
|
||||
|
||||
name := jstruct.Get("name").String()
|
||||
|
||||
if jstruct.Get("type.type").String() == "union" {
|
||||
structs[id] = Struct{
|
||||
Name: name,
|
||||
UnionNames: e.unionNames(jstruct),
|
||||
}
|
||||
} else {
|
||||
fields, newIDs := e.fields(jstruct)
|
||||
|
||||
structs[id] = Struct{
|
||||
Name: name,
|
||||
Fields: fields,
|
||||
}
|
||||
|
||||
// Recursively get any structs referenced by this one
|
||||
e.getStructs(newIDs, structs)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// unionNames gets all the names of union type members
|
||||
func (e *Extractor) unionNames(jstruct gjson.Result) []string {
|
||||
jnames := jstruct.Get("type.types").Array()
|
||||
out := make([]string, len(jnames))
|
||||
for i, name := range jnames {
|
||||
out[i] = name.Get("value").String()
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
// fields gets all the fields in a given struct from the JSON document.
|
||||
// It returns the fields and the IDs of any types they referenced.
|
||||
func (e *Extractor) fields(jstruct gjson.Result) ([]Field, []int64) {
|
||||
var fields []Field
|
||||
var ids []int64
|
||||
jfields := jstruct.Get("children").Array()
|
||||
for _, jfield := range jfields {
|
||||
var field Field
|
||||
|
||||
field.Name = jfield.Get("name").String()
|
||||
field.IsOptional = jfield.Get("flags.isOptional").Bool()
|
||||
|
||||
if jfield.Get("type.type").String() == "array" {
|
||||
field.IsArray = true
|
||||
field.Type = jfield.Get("type.elementType.name").String()
|
||||
|
||||
switch jfield.Get("type.elementType.type").String() {
|
||||
case "reference":
|
||||
// If this field is referencing another type, add that type's id
|
||||
// to the ids slice.
|
||||
ids = append(ids, jfield.Get("type.elementType.target").Int())
|
||||
case "union":
|
||||
// Convert unions to strings
|
||||
field.Type = "string"
|
||||
}
|
||||
} else {
|
||||
field.Type = jfield.Get("type.name").String()
|
||||
|
||||
switch jfield.Get("type.type").String() {
|
||||
case "reference":
|
||||
// If this field is referencing another type, add that type's id
|
||||
// to the ids slice.
|
||||
ids = append(ids, jfield.Get("type.target").Int())
|
||||
case "union":
|
||||
// Convert unions to strings
|
||||
field.Type = "string"
|
||||
}
|
||||
}
|
||||
|
||||
fields = append(fields, field)
|
||||
}
|
||||
return fields, ids
|
||||
}
|
||||
|
||||
// parseHTTPInfo parses the string from a route's summary,
|
||||
// and returns the method and path it uses
|
||||
func parseHTTPInfo(httpInfo string) (method, path string) {
|
||||
httpInfo = strings.Trim(httpInfo, "`")
|
||||
method, path, _ = strings.Cut(httpInfo, " ")
|
||||
method = strings.TrimPrefix(method, "HTTP.")
|
||||
method = strings.ToUpper(method)
|
||||
return method, path
|
||||
}
|
||||
|
||||
// getStructSlice returns all the structs in a map
|
||||
func getStructSlice(m map[int64]Struct) []Struct {
|
||||
out := make([]Struct, len(m))
|
||||
i := 0
|
||||
for _, s := range m {
|
||||
out[i] = s
|
||||
i++
|
||||
}
|
||||
return out
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/dave/jennifer/jen"
|
||||
"go.elara.ws/go-lemmy/cmd/gen/parser"
|
||||
"go.elara.ws/go-lemmy/cmd/gen/extractor"
|
||||
)
|
||||
|
||||
type RoutesGenerator struct {
|
||||
@@ -17,45 +17,68 @@ func NewRoutes(w io.Writer, pkgName string) *RoutesGenerator {
|
||||
return &RoutesGenerator{w, pkgName}
|
||||
}
|
||||
|
||||
func (r *RoutesGenerator) Generate(routes []parser.Route, impls map[string]string) error {
|
||||
func (r *RoutesGenerator) Generate(routes []extractor.Route) error {
|
||||
f := jen.NewFile(r.PkgName)
|
||||
f.HeaderComment("Code generated by go.elara.ws/go-lemmy/cmd/gen (routes generator). DO NOT EDIT.")
|
||||
|
||||
for _, r := range routes {
|
||||
resStruct := impls[r.Struct]
|
||||
|
||||
f.Comment(r.Summary)
|
||||
f.Func().Params(
|
||||
jen.Id("c").Id("*Client"),
|
||||
).Id(transformName(r.Struct)).Params(
|
||||
jen.Id("ctx").Qual("context", "Context"),
|
||||
jen.Id("data").Qual("go.elara.ws/go-lemmy/types", r.Struct),
|
||||
).Params(
|
||||
jen.Op("*").Qual("go.elara.ws/go-lemmy/types", resStruct),
|
||||
jen.Error(),
|
||||
).BlockFunc(func(g *jen.Group) {
|
||||
g.Id("resData").Op(":=").Op("&").Qual("go.elara.ws/go-lemmy/types", resStruct).Block()
|
||||
).Id(transformName(r.Name)).ParamsFunc(func(g *jen.Group) {
|
||||
g.Id("ctx").Qual("context", "Context")
|
||||
if r.ParamsName != "" {
|
||||
g.Id("data").Id(r.ParamsName)
|
||||
}
|
||||
}).ParamsFunc(func(g *jen.Group) {
|
||||
if r.ReturnName != "" {
|
||||
g.Op("*").Id(r.ReturnName)
|
||||
}
|
||||
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()
|
||||
}
|
||||
|
||||
var funcName string
|
||||
switch r.Method {
|
||||
case "GET":
|
||||
returnName := r.ReturnName
|
||||
if returnName == "" {
|
||||
returnName = "emptyResponse"
|
||||
}
|
||||
|
||||
g.Id("resData").Op(":=").Op("&").Id(returnName).Block()
|
||||
|
||||
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"),
|
||||
)
|
||||
g.If(jen.Err().Op("!=").Nil()).Block(
|
||||
jen.Return(jen.Nil(), jen.Err()),
|
||||
jen.Id("ctx"), jen.Lit(r.Method), jen.Lit(r.Path), data, jen.Id("resData"),
|
||||
)
|
||||
g.If(jen.Err().Op("!=").Nil()).BlockFunc(func(g *jen.Group) {
|
||||
if returnName == "emptyResponse" {
|
||||
g.Return(jen.Err())
|
||||
} else {
|
||||
g.Return(jen.Nil(), jen.Err())
|
||||
}
|
||||
})
|
||||
|
||||
g.Err().Op("=").Id("resError").Params(jen.Id("res"), jen.Id("resData").Dot("LemmyResponse"))
|
||||
g.If(jen.Err().Op("!=").Nil()).Block(
|
||||
jen.Return(jen.Nil(), jen.Err()),
|
||||
)
|
||||
g.Err().Op("=").Id("resError").Params(jen.Id("res"), jen.Id("resData").Dot("Error"))
|
||||
g.If(jen.Err().Op("!=").Nil()).BlockFunc(func(g *jen.Group) {
|
||||
if returnName == "emptyResponse" {
|
||||
g.Return(jen.Err())
|
||||
} else {
|
||||
g.Return(jen.Nil(), jen.Err())
|
||||
}
|
||||
})
|
||||
|
||||
g.Return(jen.Id("resData"), jen.Nil())
|
||||
if returnName == "emptyResponse" {
|
||||
g.Return(jen.Nil())
|
||||
} else {
|
||||
g.Return(jen.Id("resData"), jen.Nil())
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -63,6 +86,7 @@ func (r *RoutesGenerator) Generate(routes []parser.Route, impls map[string]strin
|
||||
}
|
||||
|
||||
func transformName(s string) string {
|
||||
s = strings.ToUpper(s[:1]) + s[1:]
|
||||
s = strings.TrimPrefix(s, "Get")
|
||||
s = strings.TrimPrefix(s, "List")
|
||||
return s
|
||||
|
||||
@@ -3,9 +3,10 @@ package generator
|
||||
import (
|
||||
"io"
|
||||
"strings"
|
||||
"unicode"
|
||||
|
||||
"github.com/dave/jennifer/jen"
|
||||
"go.elara.ws/go-lemmy/cmd/gen/parser"
|
||||
"go.elara.ws/go-lemmy/cmd/gen/extractor"
|
||||
)
|
||||
|
||||
type StructGenerator struct {
|
||||
@@ -17,32 +18,31 @@ func NewStruct(w io.Writer, pkgName string) *StructGenerator {
|
||||
return &StructGenerator{w, pkgName}
|
||||
}
|
||||
|
||||
func (s *StructGenerator) Generate(items []parser.Item) error {
|
||||
func (s *StructGenerator) Generate(items []extractor.Struct) error {
|
||||
f := jen.NewFile(s.PkgName)
|
||||
f.HeaderComment("Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.")
|
||||
|
||||
|
||||
for _, item := range items {
|
||||
if item.Struct != nil {
|
||||
st := item.Struct
|
||||
f.Type().Id(st.Name).StructFunc(func(g *jen.Group) {
|
||||
for _, field := range st.Fields {
|
||||
g.Id(field.Name).Id(field.Type).Tag(map[string]string{
|
||||
"json": field.OrigName,
|
||||
"url": field.OrigName + ",omitempty",
|
||||
if len(item.UnionNames) > 0 {
|
||||
f.Type().Id(item.Name).String()
|
||||
|
||||
f.Const().DefsFunc(func(g *jen.Group) {
|
||||
for _, member := range item.UnionNames {
|
||||
constName := strings.Replace(item.Name+string(member), " ", "", -1)
|
||||
g.Id(constName).Id(item.Name).Op("=").Lit(string(member))
|
||||
}
|
||||
})
|
||||
} else {
|
||||
f.Type().Id(item.Name).StructFunc(func(g *jen.Group) {
|
||||
for _, field := range item.Fields {
|
||||
g.Id(transformFieldName(field.Name)).Add(getType(field)).Tag(map[string]string{
|
||||
"json": field.Name,
|
||||
"url": field.Name + ",omitempty",
|
||||
})
|
||||
}
|
||||
|
||||
if strings.HasSuffix(st.Name, "Response") {
|
||||
g.Id("LemmyResponse")
|
||||
}
|
||||
})
|
||||
} else if item.Enum != nil {
|
||||
e := item.Enum
|
||||
f.Type().Id(e.Name).String()
|
||||
|
||||
f.Const().DefsFunc(func(g *jen.Group) {
|
||||
for _, member := range e.Members {
|
||||
g.Id(e.Name + string(member)).Id(e.Name).Op("=").Lit(string(member))
|
||||
if strings.HasSuffix(item.Name, "Response") {
|
||||
g.Id("Error").Id("Optional").Types(jen.String()).Tag(map[string]string{"json": "error"})
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -50,3 +50,74 @@ func (s *StructGenerator) Generate(items []parser.Item) error {
|
||||
|
||||
return f.Render(s.w)
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
if f.IsOptional {
|
||||
t = "Optional[" + t + "]"
|
||||
}
|
||||
return jen.Id(t)
|
||||
}
|
||||
|
||||
func transformType(name, t string) string {
|
||||
switch t {
|
||||
case "number":
|
||||
return "int64"
|
||||
case "boolean":
|
||||
return "bool"
|
||||
default:
|
||||
return t
|
||||
}
|
||||
}
|
||||
|
||||
func transformFieldName(s string) string {
|
||||
s = snakeToCamel(s)
|
||||
s = strings.NewReplacer(
|
||||
"Id", "ID",
|
||||
"Url", "URL",
|
||||
"Nsfw", "NSFW",
|
||||
"Jwt", "JWT",
|
||||
"Crud", "CRUD",
|
||||
"Pm", "PM",
|
||||
"Totp", "TOTP",
|
||||
"2fa", "2FA",
|
||||
"Png", "PNG",
|
||||
"Uuid", "UUID",
|
||||
"Wav", "WAV",
|
||||
).Replace(s)
|
||||
return s
|
||||
}
|
||||
|
||||
func snakeToCamel(s string) string {
|
||||
sb := &strings.Builder{}
|
||||
capitalizeNext := true
|
||||
for _, char := range s {
|
||||
if char == '_' {
|
||||
capitalizeNext = true
|
||||
continue
|
||||
}
|
||||
|
||||
if capitalizeNext {
|
||||
sb.WriteRune(unicode.ToUpper(char))
|
||||
capitalizeNext = false
|
||||
} else {
|
||||
sb.WriteRune(char)
|
||||
}
|
||||
}
|
||||
return sb.String()
|
||||
}
|
||||
|
||||
156
cmd/gen/main.go
156
cmd/gen/main.go
@@ -2,14 +2,11 @@ package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"io/fs"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"go.elara.ws/go-lemmy/cmd/gen/extractor"
|
||||
"go.elara.ws/go-lemmy/cmd/gen/generator"
|
||||
"go.elara.ws/go-lemmy/cmd/gen/parser"
|
||||
"go.elara.ws/logger"
|
||||
"go.elara.ws/logger/log"
|
||||
)
|
||||
@@ -18,145 +15,27 @@ func init() {
|
||||
log.Logger = logger.NewPretty(os.Stderr)
|
||||
}
|
||||
|
||||
var implDirs = [...]string{
|
||||
"crates/api_crud/src",
|
||||
"crates/apub/src/api",
|
||||
"crates/api/src",
|
||||
}
|
||||
|
||||
var structDirs = [...]string{
|
||||
"crates/api_common",
|
||||
"crates/db_schema/src/source",
|
||||
"crates/db_views_actor/src/structs.rs",
|
||||
"crates/db_views/src/structs.rs",
|
||||
"crates/db_views_moderator/src/structs.rs",
|
||||
"crates/db_schema/src/aggregates/structs.rs",
|
||||
"crates/db_schema/src/lib.rs",
|
||||
"crates/websocket/src/lib.rs",
|
||||
}
|
||||
|
||||
const routesFile = "src/api_routes_http.rs"
|
||||
|
||||
func main() {
|
||||
lemmyDir := flag.String("lemmy-dir", "lemmy", "Path to Lemmy repository")
|
||||
jsonFile := flag.String("json-file", "lemmy.json", "Path to the JSON file generated from lemmy's docs")
|
||||
outDir := flag.String("out-dir", "out", "Directory to write output in")
|
||||
flag.Parse()
|
||||
|
||||
baseStructDir := filepath.Join(*outDir, "types")
|
||||
sp := parser.NewStruct(nil)
|
||||
sp.Skip = []string{"LemmyContext", "Recipient", "WsMessage", "Connect", "SessionInfo"}
|
||||
for _, structDir := range structDirs {
|
||||
dir := filepath.Join(*lemmyDir, structDir)
|
||||
err := filepath.WalkDir(dir, func(path string, d fs.DirEntry, err error) error {
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
if d.IsDir() {
|
||||
return nil
|
||||
}
|
||||
if filepath.Ext(path) != ".rs" {
|
||||
return nil
|
||||
}
|
||||
|
||||
name := d.Name()
|
||||
if name == "context.rs" ||
|
||||
name == "local_user_language.rs" ||
|
||||
name == "chat_server.rs" {
|
||||
return nil
|
||||
}
|
||||
|
||||
fl, err := os.Open(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer fl.Close()
|
||||
|
||||
sp.Reset(fl)
|
||||
fileStructs, err := sp.Parse()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
nameNoExt := strings.TrimSuffix(d.Name(), ".rs")
|
||||
goFilePath := filepath.Join(baseStructDir, nameNoExt+".gen.go")
|
||||
|
||||
i := 1
|
||||
_, err = os.Stat(goFilePath)
|
||||
for err == nil {
|
||||
goFilePath = filepath.Join(baseStructDir, nameNoExt+"."+strconv.Itoa(i)+".gen.go")
|
||||
_, err = os.Stat(goFilePath)
|
||||
i++
|
||||
}
|
||||
|
||||
outFl, err := os.Create(goFilePath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer outFl.Close()
|
||||
|
||||
_, err = outFl.WriteString("// Source: " + path + "\n")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return generator.NewStruct(outFl, "types").Generate(fileStructs)
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatal("Error walking directory while parsing structs").Err(err).Str("dir", dir).Send()
|
||||
}
|
||||
}
|
||||
|
||||
ip := parser.NewImpl(nil)
|
||||
impls := map[string]string{}
|
||||
for _, implDir := range implDirs {
|
||||
dir := filepath.Join(*lemmyDir, implDir)
|
||||
err := filepath.WalkDir(dir, func(path string, d fs.DirEntry, err error) error {
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
if d.IsDir() {
|
||||
return nil
|
||||
}
|
||||
if filepath.Ext(path) != ".rs" {
|
||||
return nil
|
||||
}
|
||||
|
||||
fl, err := os.Open(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer fl.Close()
|
||||
|
||||
ip.Reset(fl)
|
||||
implMap, err := ip.Parse()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for reqStruct, resStruct := range implMap {
|
||||
impls[reqStruct] = resStruct
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatal("Error walking directory while parsing impls").Err(err).Str("dir", dir).Send()
|
||||
}
|
||||
}
|
||||
|
||||
routesPath := filepath.Join(*lemmyDir, routesFile)
|
||||
rf, err := os.Open(routesPath)
|
||||
e, err := extractor.New(*jsonFile)
|
||||
if err != nil {
|
||||
log.Fatal("Error opening routes file").Err(err).Send()
|
||||
log.Fatal("Error creating extractor").Err(err).Send()
|
||||
}
|
||||
defer rf.Close()
|
||||
|
||||
rp := parser.NewRoutes(rf)
|
||||
routes, err := rp.Parse()
|
||||
routes, structs := e.Extract()
|
||||
|
||||
otf, err := os.Create(filepath.Join(*outDir, "types.gen.go"))
|
||||
if err != nil {
|
||||
log.Fatal("Error parsing routes file").Err(err).Send()
|
||||
log.Fatal("Error creating types output file").Err(err).Send()
|
||||
}
|
||||
defer otf.Close()
|
||||
|
||||
err = generator.NewStruct(otf, "lemmy").Generate(structs)
|
||||
if err != nil {
|
||||
log.Fatal("Error generating output routes file").Err(err).Send()
|
||||
}
|
||||
|
||||
orf, err := os.Create(filepath.Join(*outDir, "routes.gen.go"))
|
||||
@@ -165,12 +44,7 @@ func main() {
|
||||
}
|
||||
defer orf.Close()
|
||||
|
||||
_, err = orf.WriteString("// Source: " + routesPath + "\n")
|
||||
if err != nil {
|
||||
log.Fatal("Error writing source string to routes file").Err(err).Send()
|
||||
}
|
||||
|
||||
err = generator.NewRoutes(orf, "lemmy").Generate(routes, impls)
|
||||
err = generator.NewRoutes(orf, "lemmy").Generate(routes)
|
||||
if err != nil {
|
||||
log.Fatal("Error generating output routes file").Err(err).Send()
|
||||
}
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
package parser
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"errors"
|
||||
"io"
|
||||
"regexp"
|
||||
)
|
||||
|
||||
var (
|
||||
implRegex = regexp.MustCompile(`impl Perform.* for (.+) {`)
|
||||
respTypeRegex = regexp.MustCompile(`type Response = (.+);`)
|
||||
)
|
||||
|
||||
var ErrNoType = errors.New("type line not found")
|
||||
|
||||
type ImplParser struct {
|
||||
r *bufio.Reader
|
||||
}
|
||||
|
||||
func NewImpl(r io.Reader) *ImplParser {
|
||||
return &ImplParser{
|
||||
r: bufio.NewReader(r),
|
||||
}
|
||||
}
|
||||
|
||||
func (i *ImplParser) Parse() (map[string]string, error) {
|
||||
out := map[string]string{}
|
||||
for {
|
||||
line, err := i.r.ReadString('\n')
|
||||
if errors.Is(err, io.EOF) {
|
||||
break
|
||||
} else if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if implRegex.MatchString(line) {
|
||||
im := implRegex.FindStringSubmatch(line)
|
||||
|
||||
line, err := i.r.ReadString('\n')
|
||||
if errors.Is(err, io.EOF) {
|
||||
return nil, io.ErrUnexpectedEOF
|
||||
} else if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if !respTypeRegex.MatchString(line) {
|
||||
return nil, ErrNoType
|
||||
}
|
||||
|
||||
rtm := respTypeRegex.FindStringSubmatch(line)
|
||||
|
||||
out[im[1]] = rtm[1]
|
||||
}
|
||||
}
|
||||
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (i *ImplParser) Reset(r io.Reader) {
|
||||
i.r.Reset(r)
|
||||
}
|
||||
@@ -1,121 +0,0 @@
|
||||
package parser
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"errors"
|
||||
"io"
|
||||
"net/url"
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var (
|
||||
scopeRegex = regexp.MustCompile(`web::(?:scope|resource)\("(.*)"\)\n`)
|
||||
routeRegex = regexp.MustCompile(`\.route\(\n?\s*(?:"(.*)",[ \n])?\s*web::(.+)\(\)\.to\(route_.*::<(.+)>`)
|
||||
)
|
||||
|
||||
type Route struct {
|
||||
Path string
|
||||
Method string
|
||||
Struct string
|
||||
}
|
||||
|
||||
type RoutesParser struct {
|
||||
r *bufio.Reader
|
||||
}
|
||||
|
||||
func NewRoutes(r io.Reader) *RoutesParser {
|
||||
return &RoutesParser{
|
||||
r: bufio.NewReader(r),
|
||||
}
|
||||
}
|
||||
|
||||
func (r *RoutesParser) Parse() ([]Route, error) {
|
||||
var out []Route
|
||||
for {
|
||||
line, err := r.r.ReadString('\n')
|
||||
if errors.Is(err, io.EOF) {
|
||||
break
|
||||
} else if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if scopeRegex.MatchString(line) {
|
||||
scopePath := scopeRegex.FindStringSubmatch(line)[1]
|
||||
if scopePath == "/api/v3" {
|
||||
continue
|
||||
}
|
||||
|
||||
routes, err := r.parseRoutes()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for i := range routes {
|
||||
path, err := url.JoinPath(scopePath, routes[i].Path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
routes[i].Path = path
|
||||
}
|
||||
|
||||
out = append(out, routes...)
|
||||
}
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (r *RoutesParser) parseRoutes() ([]Route, error) {
|
||||
var out []Route
|
||||
for {
|
||||
line, err := r.r.ReadString('\n')
|
||||
if errors.Is(err, io.EOF) {
|
||||
if strings.TrimSpace(line)[:1] == ")" {
|
||||
return out, nil
|
||||
} else {
|
||||
return nil, io.ErrUnexpectedEOF
|
||||
}
|
||||
} else if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if strings.TrimSpace(line) == ".route(" {
|
||||
lines, err := r.readLines(3)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
line += lines
|
||||
}
|
||||
|
||||
if strings.TrimSpace(line)[:1] == ")" {
|
||||
return out, nil
|
||||
} else if strings.HasPrefix(line, "//") {
|
||||
continue
|
||||
} else if !routeRegex.MatchString(line) {
|
||||
continue
|
||||
}
|
||||
|
||||
sm := routeRegex.FindStringSubmatch(line)
|
||||
out = append(out, Route{
|
||||
Path: sm[1],
|
||||
Method: strings.ToUpper(sm[2]),
|
||||
Struct: sm[3],
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (r *RoutesParser) readLines(n int) (string, error) {
|
||||
out := ""
|
||||
for i := 0; i < n; i++ {
|
||||
line, err := r.r.ReadString('\n')
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
out += line
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (r *RoutesParser) Reset(rd io.Reader) {
|
||||
r.r.Reset(rd)
|
||||
}
|
||||
@@ -1,274 +0,0 @@
|
||||
package parser
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"errors"
|
||||
"io"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"golang.org/x/exp/slices"
|
||||
)
|
||||
|
||||
var (
|
||||
structRegex = regexp.MustCompile(`pub struct (.+) \{`)
|
||||
fieldRegex = regexp.MustCompile(`(?U) {1,1}([^ ]+): (.+),`)
|
||||
|
||||
enumRegex = regexp.MustCompile(`pub enum (.+) \{`)
|
||||
memberRegex = regexp.MustCompile(` ([^ #]+),\n`)
|
||||
)
|
||||
|
||||
type Item struct {
|
||||
Struct *Struct
|
||||
Enum *Enum
|
||||
}
|
||||
|
||||
type Struct struct {
|
||||
Name string
|
||||
Fields []Field
|
||||
}
|
||||
|
||||
type Field struct {
|
||||
OrigName string
|
||||
Name string
|
||||
Type string
|
||||
}
|
||||
|
||||
type Enum struct {
|
||||
Name string
|
||||
Members []Member
|
||||
}
|
||||
|
||||
type Member string
|
||||
|
||||
type StructParser struct {
|
||||
r *bufio.Reader
|
||||
Skip []string
|
||||
TransformName func(string) string
|
||||
TransformType func(string) string
|
||||
}
|
||||
|
||||
func NewStruct(r io.Reader) *StructParser {
|
||||
return &StructParser{
|
||||
r: bufio.NewReader(r),
|
||||
TransformName: TransformNameGo,
|
||||
TransformType: TransformTypeGo,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *StructParser) Parse() ([]Item, error) {
|
||||
var out []Item
|
||||
for {
|
||||
line, err := s.r.ReadString('\n')
|
||||
if errors.Is(err, io.EOF) {
|
||||
break
|
||||
} else if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if structRegex.MatchString(line) {
|
||||
structName := structRegex.FindStringSubmatch(line)[1]
|
||||
if slices.Contains(s.Skip, structName) {
|
||||
continue
|
||||
}
|
||||
structName = s.TransformName(structName)
|
||||
|
||||
// If the line ends with "}", this is a struct with no fields
|
||||
if strings.HasSuffix(line, "}\n") {
|
||||
out = append(out, Item{
|
||||
Struct: &Struct{
|
||||
Name: structRegex.FindStringSubmatch(line)[1],
|
||||
},
|
||||
})
|
||||
continue
|
||||
}
|
||||
|
||||
fields, err := s.parseStructFields()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
out = append(out, Item{
|
||||
Struct: &Struct{
|
||||
Name: structName,
|
||||
Fields: fields,
|
||||
},
|
||||
})
|
||||
} else if enumRegex.MatchString(line) {
|
||||
enumName := enumRegex.FindStringSubmatch(line)[1]
|
||||
if slices.Contains(s.Skip, enumName) {
|
||||
continue
|
||||
}
|
||||
enumName = s.TransformName(enumName)
|
||||
|
||||
members, err := s.parseEnumMemebers()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
out = append(out, Item{
|
||||
Enum: &Enum{
|
||||
Name: enumName,
|
||||
Members: members,
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (s *StructParser) parseStructFields() ([]Field, error) {
|
||||
encountered := map[string]struct{}{}
|
||||
var out []Field
|
||||
for {
|
||||
line, err := s.r.ReadString('\n')
|
||||
if errors.Is(err, io.EOF) {
|
||||
if strings.HasPrefix(line, "}") {
|
||||
return out, nil
|
||||
} else {
|
||||
return nil, io.ErrUnexpectedEOF
|
||||
}
|
||||
} else if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if strings.HasPrefix(line, "}") {
|
||||
return out, nil
|
||||
} else if strings.HasPrefix(line, "//") {
|
||||
continue
|
||||
} else if !fieldRegex.MatchString(line) {
|
||||
continue
|
||||
}
|
||||
|
||||
sm := fieldRegex.FindStringSubmatch(line)
|
||||
if sm[1] == "Example" {
|
||||
continue
|
||||
}
|
||||
|
||||
if _, ok := encountered[sm[1]]; ok {
|
||||
continue
|
||||
} else {
|
||||
encountered[sm[1]] = struct{}{}
|
||||
}
|
||||
|
||||
out = append(out, Field{
|
||||
OrigName: sm[1],
|
||||
Name: s.TransformName(sm[1]),
|
||||
Type: s.TransformType(sm[2]),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (s *StructParser) parseEnumMemebers() ([]Member, error) {
|
||||
var out []Member
|
||||
for {
|
||||
line, err := s.r.ReadString('\n')
|
||||
if errors.Is(err, io.EOF) {
|
||||
if strings.HasPrefix(line, "}") {
|
||||
return out, nil
|
||||
} else {
|
||||
return nil, io.ErrUnexpectedEOF
|
||||
}
|
||||
} else if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if strings.HasPrefix(line, "}") {
|
||||
return out, nil
|
||||
} else if strings.HasPrefix(line, "//") {
|
||||
continue
|
||||
} else if !memberRegex.MatchString(line) {
|
||||
continue
|
||||
}
|
||||
|
||||
sm := memberRegex.FindStringSubmatch(line)
|
||||
|
||||
out = append(out, Member(sm[1]))
|
||||
}
|
||||
}
|
||||
|
||||
// TransformTypeGo transforms Rust types to Go
|
||||
//
|
||||
// Example: TransformTypeGo("Option<Vec<i64>>") // returns "Optional[[]int64]"
|
||||
func TransformTypeGo(t string) string {
|
||||
prefix := ""
|
||||
suffix := ""
|
||||
|
||||
for strings.HasPrefix(t, "Option<") {
|
||||
t = strings.TrimPrefix(strings.TrimSuffix(t, ">"), "Option<")
|
||||
prefix += "Optional["
|
||||
suffix += "]"
|
||||
}
|
||||
|
||||
for strings.HasPrefix(t, "Vec<") {
|
||||
t = strings.TrimPrefix(strings.TrimSuffix(t, ">"), "Vec<")
|
||||
prefix += "[]"
|
||||
}
|
||||
|
||||
for strings.HasPrefix(t, "Sensitive<") {
|
||||
t = strings.TrimPrefix(strings.TrimSuffix(t, ">"), "Sensitive<")
|
||||
}
|
||||
|
||||
if strings.HasSuffix(t, "Id") {
|
||||
t = "int"
|
||||
}
|
||||
|
||||
switch t {
|
||||
case "String", "Url", "DbUrl", "Ltree":
|
||||
t = "string"
|
||||
case "usize":
|
||||
t = "uint"
|
||||
case "i64":
|
||||
t = "int64"
|
||||
case "i32":
|
||||
t = "int32"
|
||||
case "i16":
|
||||
t = "int16"
|
||||
case "i8":
|
||||
t = "int8"
|
||||
case "chrono::NaiveDateTime":
|
||||
return "LemmyTime"
|
||||
case "Value":
|
||||
return "any"
|
||||
}
|
||||
|
||||
return prefix + t + suffix
|
||||
}
|
||||
|
||||
// TransformNameGo transforms conventional Rust naming to
|
||||
// conventional Go naming.
|
||||
//
|
||||
// Example: TransformNameGo("post_id") // returns "PostID"
|
||||
func TransformNameGo(s string) string {
|
||||
out := ""
|
||||
|
||||
s = strings.ReplaceAll(s, "Crud", "CRUD")
|
||||
|
||||
splitName := strings.Split(s, "_")
|
||||
for _, segment := range splitName {
|
||||
switch segment {
|
||||
case "id":
|
||||
out += "ID"
|
||||
case "url":
|
||||
out += "URL"
|
||||
case "nsfw":
|
||||
out += "NSFW"
|
||||
case "jwt":
|
||||
out += "JWT"
|
||||
case "crud":
|
||||
out += "CRUD"
|
||||
default:
|
||||
if len(segment) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
out += strings.ToUpper(segment[:1]) + segment[1:]
|
||||
}
|
||||
}
|
||||
|
||||
return out
|
||||
}
|
||||
|
||||
func (s *StructParser) Reset(r io.Reader) {
|
||||
s.r.Reset(r)
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
package parser
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestTransformNameGo(t *testing.T) {
|
||||
type testcase struct {
|
||||
name string
|
||||
expect string
|
||||
}
|
||||
|
||||
cases := []testcase{
|
||||
{"post_id", "PostID"},
|
||||
{"nsfw", "NSFW"},
|
||||
{"test_url", "TestURL"},
|
||||
{"some_complex_name_with_id_and_nsfw_and_url", "SomeComplexNameWithIDAndNSFWAndURL"},
|
||||
}
|
||||
|
||||
for _, testcase := range cases {
|
||||
t.Run(testcase.name, func(t *testing.T) {
|
||||
got := TransformNameGo(testcase.name)
|
||||
if got != testcase.expect {
|
||||
t.Errorf("Expected %s, got %s", testcase.expect, got)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestTransformTypeGo(t *testing.T) {
|
||||
type testcase struct {
|
||||
typeName string
|
||||
expect string
|
||||
}
|
||||
|
||||
cases := []testcase{
|
||||
{"i16", "int16"},
|
||||
{"Option<Vec<i64>>", "Optional[[]int64]"},
|
||||
{"Url", "string"},
|
||||
{"Sensitive<String>", "string"},
|
||||
}
|
||||
|
||||
for _, testcase := range cases {
|
||||
t.Run(testcase.typeName, func(t *testing.T) {
|
||||
got := TransformTypeGo(testcase.typeName)
|
||||
if got != testcase.expect {
|
||||
t.Errorf("Expected %s, got %s", testcase.expect, got)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -4,18 +4,17 @@ import (
|
||||
"context"
|
||||
|
||||
"go.elara.ws/go-lemmy"
|
||||
"go.elara.ws/go-lemmy/types"
|
||||
)
|
||||
|
||||
func main() {
|
||||
ctx := context.Background()
|
||||
|
||||
c, err := lemmy.New("https://lemmygrad.ml")
|
||||
c, err := lemmy.New("https://lemmy.ml")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = c.ClientLogin(ctx, types.Login{
|
||||
err = c.ClientLogin(ctx, lemmy.Login{
|
||||
UsernameOrEmail: "user@example.com",
|
||||
Password: `TestPwd`,
|
||||
})
|
||||
@@ -23,8 +22,8 @@ func main() {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
_, err = c.SaveUserSettings(ctx, types.SaveUserSettings{
|
||||
BotAccount: types.NewOptional(true),
|
||||
_, err = c.SaveUserSettings(ctx, lemmy.SaveUserSettings{
|
||||
BotAccount: lemmy.NewOptional(true),
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
48
examples/comments/main.go
Normal file
48
examples/comments/main.go
Normal file
@@ -0,0 +1,48 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
|
||||
"go.elara.ws/go-lemmy"
|
||||
)
|
||||
|
||||
func main() {
|
||||
ctx := context.Background()
|
||||
|
||||
c, err := lemmy.New("https://lemmy.ml")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = c.ClientLogin(ctx, lemmy.Login{
|
||||
UsernameOrEmail: "user@example.com",
|
||||
Password: `TestPwd`,
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
cr, err := c.CreateComment(ctx, lemmy.CreateComment{
|
||||
PostID: 2,
|
||||
Content: "Hello from go-lemmy!",
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
cr2, err := c.CreateComment(ctx, lemmy.CreateComment{
|
||||
PostID: 2,
|
||||
ParentID: lemmy.NewOptional(cr.CommentView.Comment.ID),
|
||||
Content: "Reply from go-lemmy",
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
log.Printf(
|
||||
"Created comment %d and replied to it with comment %d!\n",
|
||||
cr.CommentView.Comment.ID,
|
||||
cr2.CommentView.Comment.ID,
|
||||
)
|
||||
}
|
||||
43
examples/posts/main.go
Normal file
43
examples/posts/main.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
|
||||
"go.elara.ws/go-lemmy"
|
||||
)
|
||||
|
||||
func main() {
|
||||
ctx := context.Background()
|
||||
|
||||
c, err := lemmy.New("https://lemmy.ml")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// Log in to lemmy.ml
|
||||
err = c.ClientLogin(ctx, lemmy.Login{
|
||||
UsernameOrEmail: "user@example.com",
|
||||
Password: `TestPwd`,
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// Get the linux community to get its ID.
|
||||
gcr, err := c.Community(ctx, lemmy.GetCommunity{
|
||||
Name: lemmy.NewOptional("linux"),
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// Create a Hello World post in the linux community.
|
||||
pr, err := c.CreatePost(ctx, lemmy.CreatePost{
|
||||
CommunityID: gcr.CommunityView.Community.ID,
|
||||
Name: "Hello, World!",
|
||||
Body: lemmy.NewOptional("This is an example post"),
|
||||
})
|
||||
|
||||
log.Println("Created post:", pr.PostView.Post.ID)
|
||||
}
|
||||
@@ -1,66 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
|
||||
"go.elara.ws/go-lemmy"
|
||||
"go.elara.ws/go-lemmy/types"
|
||||
)
|
||||
|
||||
func main() {
|
||||
ctx := context.Background()
|
||||
|
||||
c, err := lemmy.NewWebSocket("https://lemmygrad.ml")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = c.ClientLogin(ctx, types.Login{
|
||||
UsernameOrEmail: "user@example.com",
|
||||
Password: `TestPwd`,
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// If nil is passed as data, go-lemmy will just send
|
||||
// the auth token, which is all that's needed for
|
||||
// the UserJoin operation.
|
||||
c.Request(types.UserOperationUserJoin, nil)
|
||||
|
||||
// Subscribe to all communities
|
||||
c.Request(types.UserOperationCommunityJoin, types.CommunityJoin{
|
||||
CommunityID: 0,
|
||||
})
|
||||
|
||||
go handleErrors(c)
|
||||
handleResponses(c)
|
||||
}
|
||||
|
||||
func handleResponses(c *lemmy.WSClient) {
|
||||
for res := range c.Responses() {
|
||||
if res.IsOneOf(types.UserOperationCRUDCreateComment) {
|
||||
var data types.CommentResponse
|
||||
err := lemmy.DecodeResponse(res.Data, &data)
|
||||
if err != nil {
|
||||
log.Println("Error decoding response:", err)
|
||||
continue
|
||||
}
|
||||
|
||||
err = c.Request(types.UserOperationCreateCommentLike, types.CreateCommentLike{
|
||||
CommentID: data.CommentView.Comment.ID,
|
||||
})
|
||||
if err != nil {
|
||||
log.Println("Error decoding response:", err)
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func handleErrors(c *lemmy.WSClient) {
|
||||
for err := range c.Errors() {
|
||||
log.Println("Error decoding response:", err)
|
||||
}
|
||||
}
|
||||
5
go.mod
5
go.mod
@@ -3,10 +3,9 @@ module go.elara.ws/go-lemmy
|
||||
go 1.19
|
||||
|
||||
require (
|
||||
github.com/cenkalti/backoff/v4 v4.2.0
|
||||
github.com/dave/jennifer v1.6.0
|
||||
github.com/google/go-querystring v1.1.0
|
||||
github.com/gorilla/websocket v1.4.2
|
||||
github.com/tidwall/gjson v1.17.0
|
||||
go.elara.ws/logger v0.0.0-20230421022458-e80700db2090
|
||||
golang.org/x/exp v0.0.0-20230105000112-eab7a2c85304
|
||||
)
|
||||
@@ -14,6 +13,8 @@ require (
|
||||
require (
|
||||
github.com/gookit/color v1.5.1 // indirect
|
||||
github.com/mattn/go-isatty v0.0.14 // indirect
|
||||
github.com/tidwall/match v1.1.1 // indirect
|
||||
github.com/tidwall/pretty v1.2.0 // indirect
|
||||
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect
|
||||
golang.org/x/sys v0.1.0 // indirect
|
||||
)
|
||||
|
||||
10
go.sum
10
go.sum
@@ -1,5 +1,3 @@
|
||||
github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4=
|
||||
github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
|
||||
github.com/dave/jennifer v1.6.0 h1:MQ/6emI2xM7wt0tJzJzyUik2Q3Tcn2eE0vtYgh4GPVI=
|
||||
github.com/dave/jennifer v1.6.0/go.mod h1:AxTG893FiZKqxy3FP1kL80VMshSMuz2G+EgvszgGRnk=
|
||||
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||
@@ -10,8 +8,6 @@ github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD
|
||||
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
|
||||
github.com/gookit/color v1.5.1 h1:Vjg2VEcdHpwq+oY63s/ksHrgJYCTo0bwWvmmYWdE9fQ=
|
||||
github.com/gookit/color v1.5.1/go.mod h1:wZFzea4X8qN6vHOSP2apMb4/+w/orMznEzYsIHPaqKM=
|
||||
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
|
||||
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
|
||||
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
@@ -19,6 +15,12 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
|
||||
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
|
||||
github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM=
|
||||
github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
|
||||
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
|
||||
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
|
||||
github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
|
||||
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
|
||||
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 h1:QldyIu/L63oPpyvQmHgvgickp1Yw510KJOqX7H24mg8=
|
||||
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs=
|
||||
go.elara.ws/logger v0.0.0-20230421022458-e80700db2090 h1:RVC8XvWo6Yw4HUshqx4TSzuBDScDghafU6QFRJ4xPZg=
|
||||
|
||||
115
lemmy.go
115
lemmy.go
@@ -4,15 +4,18 @@ import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"reflect"
|
||||
|
||||
"github.com/google/go-querystring/query"
|
||||
"go.elara.ws/go-lemmy/types"
|
||||
)
|
||||
|
||||
// ErrNoToken is an error returned by ClientLogin if the server sends a null or empty token
|
||||
var ErrNoToken = errors.New("the server didn't provide a token value in its response")
|
||||
|
||||
// Client is a client for Lemmy's HTTP API
|
||||
type Client struct {
|
||||
client *http.Client
|
||||
@@ -32,27 +35,30 @@ func NewWithClient(baseURL string, client *http.Client) (*Client, error) {
|
||||
return nil, err
|
||||
}
|
||||
u = u.JoinPath("/api/v3")
|
||||
|
||||
return &Client{baseURL: u, client: client}, nil
|
||||
}
|
||||
|
||||
// ClientLogin logs in to Lemmy by sending an HTTP request to the
|
||||
// login endpoint. It stores the returned token in the client
|
||||
// for future use.
|
||||
func (c *Client) ClientLogin(ctx context.Context, l types.Login) error {
|
||||
lr, err := c.Login(ctx, l)
|
||||
// ClientLogin logs in to Lemmy by calling the login endpoint, and
|
||||
// stores the returned token in the Token field for use in future requests.
|
||||
//
|
||||
// The Token field can be set manually if you'd like to persist the
|
||||
// token somewhere.
|
||||
func (c *Client) ClientLogin(ctx context.Context, data Login) error {
|
||||
lr, err := c.Login(ctx, data)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
c.Token = lr.JWT.MustValue()
|
||||
token, ok := lr.JWT.Value()
|
||||
if !ok || token == "" {
|
||||
return ErrNoToken
|
||||
}
|
||||
c.Token = token
|
||||
return nil
|
||||
}
|
||||
|
||||
// req makes a request to the server
|
||||
func (c *Client) req(ctx context.Context, method string, path string, data, resp any) (*http.Response, error) {
|
||||
data = c.setAuth(data)
|
||||
|
||||
var r io.Reader
|
||||
if data != nil {
|
||||
jsonData, err := json.Marshal(data)
|
||||
@@ -74,6 +80,10 @@ func (c *Client) req(ctx context.Context, method string, path string, data, resp
|
||||
|
||||
req.Header.Add("Content-Type", "application/json")
|
||||
|
||||
if c.Token != "" {
|
||||
req.Header.Add("Authorization", "Bearer "+c.Token)
|
||||
}
|
||||
|
||||
res, err := c.client.Do(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -91,17 +101,17 @@ func (c *Client) req(ctx context.Context, method string, path string, data, resp
|
||||
}
|
||||
|
||||
// getReq makes a get request to the Lemmy server.
|
||||
// It is separate from req() because it uses query
|
||||
// It's separate from req() because it uses query
|
||||
// parameters rather than a JSON request body.
|
||||
func (c *Client) getReq(ctx context.Context, method string, path string, data, resp any) (*http.Response, error) {
|
||||
data = c.setAuth(data)
|
||||
|
||||
getURL := c.baseURL.JoinPath(path)
|
||||
vals, err := query.Values(data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
if data != nil {
|
||||
vals, err := query.Values(data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
getURL.RawQuery = vals.Encode()
|
||||
}
|
||||
getURL.RawQuery = vals.Encode()
|
||||
|
||||
req, err := http.NewRequestWithContext(
|
||||
ctx,
|
||||
@@ -113,6 +123,10 @@ func (c *Client) getReq(ctx context.Context, method string, path string, data, r
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if c.Token != "" {
|
||||
req.Header.Add("Authorization", "Bearer "+c.Token)
|
||||
}
|
||||
|
||||
res, err := c.client.Do(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -129,50 +143,39 @@ func (c *Client) getReq(ctx context.Context, method string, path string, data, r
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// resError returns an error if the given response is an error
|
||||
func resError(res *http.Response, lr types.LemmyResponse) error {
|
||||
if lr.Error.IsValid() {
|
||||
return types.LemmyError{
|
||||
// Error represents an error returned by the Lemmy API
|
||||
type Error struct {
|
||||
ErrStr string
|
||||
Code int
|
||||
}
|
||||
|
||||
func (le Error) Error() string {
|
||||
if le.ErrStr != "" {
|
||||
return fmt.Sprintf("%d %s: %s", le.Code, http.StatusText(le.Code), le.ErrStr)
|
||||
} else {
|
||||
return fmt.Sprintf("%d %s", le.Code, http.StatusText(le.Code))
|
||||
}
|
||||
}
|
||||
|
||||
// emptyResponse is a response without any fields.
|
||||
// It has an Error field to capture any errors.
|
||||
type emptyResponse struct {
|
||||
Error Optional[string] `json:"error"`
|
||||
}
|
||||
|
||||
// resError checks if the response contains an error, and if so, returns
|
||||
// a Go error representing it.
|
||||
func resError(res *http.Response, err Optional[string]) error {
|
||||
if errstr, ok := err.Value(); ok {
|
||||
return Error{
|
||||
Code: res.StatusCode,
|
||||
ErrStr: lr.Error.MustValue(),
|
||||
ErrStr: errstr,
|
||||
}
|
||||
} else if res.StatusCode != http.StatusOK {
|
||||
return types.HTTPError{
|
||||
return Error{
|
||||
Code: res.StatusCode,
|
||||
}
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// setAuth uses reflection to automatically
|
||||
// set struct fields called Auth of type
|
||||
// string or types.Optional[string] to the
|
||||
// authentication token, then returns the
|
||||
// updated struct
|
||||
func (c *Client) setAuth(data any) any {
|
||||
if data == nil {
|
||||
return data
|
||||
}
|
||||
|
||||
val := reflect.New(reflect.TypeOf(data))
|
||||
val.Elem().Set(reflect.ValueOf(data))
|
||||
|
||||
authField := val.Elem().FieldByName("Auth")
|
||||
if !authField.IsValid() {
|
||||
return data
|
||||
}
|
||||
|
||||
switch authField.Type().String() {
|
||||
case "string":
|
||||
authField.SetString(c.Token)
|
||||
case "types.Optional[string]":
|
||||
setMtd := authField.MethodByName("Set")
|
||||
out := setMtd.Call([]reflect.Value{reflect.ValueOf(c.Token)})
|
||||
authField.Set(out[0])
|
||||
default:
|
||||
return data
|
||||
}
|
||||
|
||||
return val.Elem().Interface()
|
||||
}
|
||||
|
||||
@@ -1,64 +1,53 @@
|
||||
package types
|
||||
package lemmy
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
var ErrOptionalEmpty = errors.New("optional value is empty")
|
||||
|
||||
// Optional represents an optional value
|
||||
type Optional[T any] struct {
|
||||
value *T
|
||||
}
|
||||
|
||||
// NewOptional creates an optional with value v
|
||||
func NewOptional[T any](v T) Optional[T] {
|
||||
return Optional[T]{value: &v}
|
||||
}
|
||||
|
||||
func NewOptionalPtr[T any](v *T) Optional[T] {
|
||||
return Optional[T]{value: v}
|
||||
}
|
||||
|
||||
// NewOptionalNil creates a new nil optional value
|
||||
func NewOptionalNil[T any]() Optional[T] {
|
||||
return Optional[T]{}
|
||||
}
|
||||
|
||||
// Set sets the value of the optional
|
||||
func (o Optional[T]) Set(v T) Optional[T] {
|
||||
o.value = &v
|
||||
return o
|
||||
}
|
||||
|
||||
func (o Optional[T]) SetPtr(v *T) Optional[T] {
|
||||
o.value = v
|
||||
return o
|
||||
}
|
||||
|
||||
// SetNil sets the optional value to nil
|
||||
func (o Optional[T]) SetNil() Optional[T] {
|
||||
o.value = nil
|
||||
return o
|
||||
}
|
||||
|
||||
// IsValid returns true if the value of the optional is not nil
|
||||
func (o Optional[T]) IsValid() bool {
|
||||
return o.value != nil
|
||||
}
|
||||
|
||||
func (o Optional[T]) MustValue() T {
|
||||
if o.value == nil {
|
||||
panic("optional value is nil")
|
||||
}
|
||||
return *o.value
|
||||
}
|
||||
|
||||
func (o Optional[T]) Value() (T, error) {
|
||||
// Value returns the value in the optional.
|
||||
func (o Optional[T]) Value() (T, bool) {
|
||||
if o.value != nil {
|
||||
return *o.value, ErrOptionalEmpty
|
||||
return *o.value, true
|
||||
}
|
||||
return *new(T), nil
|
||||
return *new(T), false
|
||||
}
|
||||
|
||||
// ValueOr returns the value inside the optional if it exists, or else it returns fallback
|
||||
func (o Optional[T]) ValueOr(fallback T) T {
|
||||
if o.value != nil {
|
||||
return *o.value
|
||||
@@ -66,10 +55,21 @@ func (o Optional[T]) ValueOr(fallback T) T {
|
||||
return fallback
|
||||
}
|
||||
|
||||
// ValueOrZero returns the value inside the optional if it exists, or else it returns the zero value of T
|
||||
func (o Optional[T]) ValueOrZero() T {
|
||||
if o.value != nil {
|
||||
return *o.value
|
||||
}
|
||||
var value T
|
||||
return value
|
||||
}
|
||||
|
||||
// MarshalJSON encodes the optional value as JSON
|
||||
func (o Optional[T]) MarshalJSON() ([]byte, error) {
|
||||
return json.Marshal(o.value)
|
||||
}
|
||||
|
||||
// UnmarshalJSON decodes JSON into the optional value
|
||||
func (o *Optional[T]) UnmarshalJSON(b []byte) error {
|
||||
if bytes.Equal(b, []byte("null")) {
|
||||
o.value = nil
|
||||
@@ -80,6 +80,7 @@ func (o *Optional[T]) UnmarshalJSON(b []byte) error {
|
||||
return json.Unmarshal(b, o.value)
|
||||
}
|
||||
|
||||
// EncodeValues encodes the optional as a URL query parameter
|
||||
func (o Optional[T]) EncodeValues(key string, v *url.Values) error {
|
||||
s := o.String()
|
||||
if s != "<nil>" {
|
||||
@@ -88,6 +89,7 @@ func (o Optional[T]) EncodeValues(key string, v *url.Values) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// String returns the string representation of the optional value
|
||||
func (o Optional[T]) String() string {
|
||||
if o.value == nil {
|
||||
return "<nil>"
|
||||
@@ -95,6 +97,7 @@ func (o Optional[T]) String() string {
|
||||
return fmt.Sprint(*o.value)
|
||||
}
|
||||
|
||||
// GoString returns the Go representation of the optional value
|
||||
func (o Optional[T]) GoString() string {
|
||||
if o.value == nil {
|
||||
return "nil"
|
||||
942
routes.gen.go
942
routes.gen.go
File diff suppressed because it is too large
Load Diff
1552
types.gen.go
Normal file
1552
types.gen.go
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,27 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/activity.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type Activity struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
Data any `json:"data" url:"data,omitempty"`
|
||||
Local bool `json:"local" url:"local,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
ApID string `json:"ap_id" url:"ap_id,omitempty"`
|
||||
Sensitive bool `json:"sensitive" url:"sensitive,omitempty"`
|
||||
}
|
||||
type ActivityInsertForm struct {
|
||||
Data any `json:"data" url:"data,omitempty"`
|
||||
Local Optional[bool] `json:"local" url:"local,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
ApID string `json:"ap_id" url:"ap_id,omitempty"`
|
||||
Sensitive Optional[bool] `json:"sensitive" url:"sensitive,omitempty"`
|
||||
}
|
||||
type ActivityUpdateForm struct {
|
||||
Data any `json:"data" url:"data,omitempty"`
|
||||
Local Optional[bool] `json:"local" url:"local,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
Sensitive Optional[bool] `json:"sensitive" url:"sensitive,omitempty"`
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/actor_language.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type LocalUserLanguage struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
LocalUserID int `json:"local_user_id" url:"local_user_id,omitempty"`
|
||||
LanguageID int `json:"language_id" url:"language_id,omitempty"`
|
||||
}
|
||||
type LocalUserLanguageForm struct {
|
||||
LocalUserID int `json:"local_user_id" url:"local_user_id,omitempty"`
|
||||
LanguageID int `json:"language_id" url:"language_id,omitempty"`
|
||||
}
|
||||
type CommunityLanguage struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
LanguageID int `json:"language_id" url:"language_id,omitempty"`
|
||||
}
|
||||
type CommunityLanguageForm struct {
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
LanguageID int `json:"language_id" url:"language_id,omitempty"`
|
||||
}
|
||||
type SiteLanguage struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
SiteID int `json:"site_id" url:"site_id,omitempty"`
|
||||
LanguageID int `json:"language_id" url:"language_id,omitempty"`
|
||||
}
|
||||
type SiteLanguageForm struct {
|
||||
SiteID int `json:"site_id" url:"site_id,omitempty"`
|
||||
LanguageID int `json:"language_id" url:"language_id,omitempty"`
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
// Source: lemmy/crates/api_common/src/build_response.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
@@ -1,67 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/comment.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type Comment struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
CreatorID int `json:"creator_id" url:"creator_id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Content string `json:"content" url:"content,omitempty"`
|
||||
Removed bool `json:"removed" url:"removed,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
Deleted bool `json:"deleted" url:"deleted,omitempty"`
|
||||
ApID string `json:"ap_id" url:"ap_id,omitempty"`
|
||||
Local bool `json:"local" url:"local,omitempty"`
|
||||
Path string `json:"path" url:"path,omitempty"`
|
||||
Distinguished bool `json:"distinguished" url:"distinguished,omitempty"`
|
||||
LanguageID int `json:"language_id" url:"language_id,omitempty"`
|
||||
}
|
||||
type CommentInsertForm struct {
|
||||
CreatorID int `json:"creator_id" url:"creator_id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Content string `json:"content" url:"content,omitempty"`
|
||||
Removed Optional[bool] `json:"removed" url:"removed,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
Deleted Optional[bool] `json:"deleted" url:"deleted,omitempty"`
|
||||
ApID Optional[string] `json:"ap_id" url:"ap_id,omitempty"`
|
||||
Local Optional[bool] `json:"local" url:"local,omitempty"`
|
||||
Distinguished Optional[bool] `json:"distinguished" url:"distinguished,omitempty"`
|
||||
LanguageID Optional[int] `json:"language_id" url:"language_id,omitempty"`
|
||||
}
|
||||
type CommentUpdateForm struct {
|
||||
Content Optional[string] `json:"content" url:"content,omitempty"`
|
||||
Removed Optional[bool] `json:"removed" url:"removed,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
Deleted Optional[bool] `json:"deleted" url:"deleted,omitempty"`
|
||||
ApID Optional[string] `json:"ap_id" url:"ap_id,omitempty"`
|
||||
Local Optional[bool] `json:"local" url:"local,omitempty"`
|
||||
Distinguished Optional[bool] `json:"distinguished" url:"distinguished,omitempty"`
|
||||
LanguageID Optional[int] `json:"language_id" url:"language_id,omitempty"`
|
||||
}
|
||||
type CommentLike struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Score int16 `json:"score" url:"score,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
}
|
||||
type CommentLikeForm struct {
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Score int16 `json:"score" url:"score,omitempty"`
|
||||
}
|
||||
type CommentSaved struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
}
|
||||
type CommentSavedForm struct {
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
}
|
||||
@@ -1,98 +0,0 @@
|
||||
// Source: lemmy/crates/api_common/src/comment.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type CreateComment struct {
|
||||
Content string `json:"content" url:"content,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
ParentID Optional[int] `json:"parent_id" url:"parent_id,omitempty"`
|
||||
LanguageID Optional[int] `json:"language_id" url:"language_id,omitempty"`
|
||||
FormID Optional[string] `json:"form_id" url:"form_id,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type GetComment struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
Auth Optional[string] `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type EditComment struct {
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
Content Optional[string] `json:"content" url:"content,omitempty"`
|
||||
LanguageID Optional[int] `json:"language_id" url:"language_id,omitempty"`
|
||||
FormID Optional[string] `json:"form_id" url:"form_id,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type DistinguishComment struct {
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
Distinguished bool `json:"distinguished" url:"distinguished,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type DeleteComment struct {
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
Deleted bool `json:"deleted" url:"deleted,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type RemoveComment struct {
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
Removed bool `json:"removed" url:"removed,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type SaveComment struct {
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
Save bool `json:"save" url:"save,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type CommentResponse struct {
|
||||
CommentView CommentView `json:"comment_view" url:"comment_view,omitempty"`
|
||||
RecipientIds []int `json:"recipient_ids" url:"recipient_ids,omitempty"`
|
||||
FormID Optional[string] `json:"form_id" url:"form_id,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type CreateCommentLike struct {
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
Score int16 `json:"score" url:"score,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type GetComments struct {
|
||||
Type Optional[ListingType] `json:"type_" url:"type_,omitempty"`
|
||||
Sort Optional[CommentSortType] `json:"sort" url:"sort,omitempty"`
|
||||
MaxDepth Optional[int32] `json:"max_depth" url:"max_depth,omitempty"`
|
||||
Page Optional[int64] `json:"page" url:"page,omitempty"`
|
||||
Limit Optional[int64] `json:"limit" url:"limit,omitempty"`
|
||||
CommunityID Optional[int] `json:"community_id" url:"community_id,omitempty"`
|
||||
CommunityName Optional[string] `json:"community_name" url:"community_name,omitempty"`
|
||||
PostID Optional[int] `json:"post_id" url:"post_id,omitempty"`
|
||||
ParentID Optional[int] `json:"parent_id" url:"parent_id,omitempty"`
|
||||
SavedOnly Optional[bool] `json:"saved_only" url:"saved_only,omitempty"`
|
||||
Auth Optional[string] `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type GetCommentsResponse struct {
|
||||
Comments []CommentView `json:"comments" url:"comments,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type CreateCommentReport struct {
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
Reason string `json:"reason" url:"reason,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type CommentReportResponse struct {
|
||||
CommentReportView CommentReportView `json:"comment_report_view" url:"comment_report_view,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type ResolveCommentReport struct {
|
||||
ReportID int `json:"report_id" url:"report_id,omitempty"`
|
||||
Resolved bool `json:"resolved" url:"resolved,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type ListCommentReports struct {
|
||||
Page Optional[int64] `json:"page" url:"page,omitempty"`
|
||||
Limit Optional[int64] `json:"limit" url:"limit,omitempty"`
|
||||
UnresolvedOnly Optional[bool] `json:"unresolved_only" url:"unresolved_only,omitempty"`
|
||||
CommunityID Optional[int] `json:"community_id" url:"community_id,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type ListCommentReportsResponse struct {
|
||||
CommentReports []CommentReportView `json:"comment_reports" url:"comment_reports,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/comment_reply.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type CommentReply struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
RecipientID int `json:"recipient_id" url:"recipient_id,omitempty"`
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
Read bool `json:"read" url:"read,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
}
|
||||
type CommentReplyInsertForm struct {
|
||||
RecipientID int `json:"recipient_id" url:"recipient_id,omitempty"`
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
Read Optional[bool] `json:"read" url:"read,omitempty"`
|
||||
}
|
||||
type CommentReplyUpdateForm struct {
|
||||
Read Optional[bool] `json:"read" url:"read,omitempty"`
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/comment_report.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type CommentReport struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
CreatorID int `json:"creator_id" url:"creator_id,omitempty"`
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
OriginalCommentText string `json:"original_comment_text" url:"original_comment_text,omitempty"`
|
||||
Reason string `json:"reason" url:"reason,omitempty"`
|
||||
Resolved bool `json:"resolved" url:"resolved,omitempty"`
|
||||
ResolverID Optional[int] `json:"resolver_id" url:"resolver_id,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
}
|
||||
type CommentReportForm struct {
|
||||
CreatorID int `json:"creator_id" url:"creator_id,omitempty"`
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
OriginalCommentText string `json:"original_comment_text" url:"original_comment_text,omitempty"`
|
||||
Reason string `json:"reason" url:"reason,omitempty"`
|
||||
}
|
||||
@@ -1,113 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/community.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type Community struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
Name string `json:"name" url:"name,omitempty"`
|
||||
Title string `json:"title" url:"title,omitempty"`
|
||||
Description Optional[string] `json:"description" url:"description,omitempty"`
|
||||
Removed bool `json:"removed" url:"removed,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
Deleted bool `json:"deleted" url:"deleted,omitempty"`
|
||||
NSFW bool `json:"nsfw" url:"nsfw,omitempty"`
|
||||
ActorID string `json:"actor_id" url:"actor_id,omitempty"`
|
||||
Local bool `json:"local" url:"local,omitempty"`
|
||||
PrivateKey Optional[string] `json:"private_key" url:"private_key,omitempty"`
|
||||
PublicKey string `json:"public_key" url:"public_key,omitempty"`
|
||||
LastRefreshedAt LemmyTime `json:"last_refreshed_at" url:"last_refreshed_at,omitempty"`
|
||||
Icon Optional[string] `json:"icon" url:"icon,omitempty"`
|
||||
Banner Optional[string] `json:"banner" url:"banner,omitempty"`
|
||||
FollowersURL string `json:"followers_url" url:"followers_url,omitempty"`
|
||||
InboxURL string `json:"inbox_url" url:"inbox_url,omitempty"`
|
||||
SharedInboxURL Optional[string] `json:"shared_inbox_url" url:"shared_inbox_url,omitempty"`
|
||||
Hidden bool `json:"hidden" url:"hidden,omitempty"`
|
||||
PostingRestrictedToMods bool `json:"posting_restricted_to_mods" url:"posting_restricted_to_mods,omitempty"`
|
||||
InstanceID int `json:"instance_id" url:"instance_id,omitempty"`
|
||||
ModeratorsURL Optional[string] `json:"moderators_url" url:"moderators_url,omitempty"`
|
||||
FeaturedURL Optional[string] `json:"featured_url" url:"featured_url,omitempty"`
|
||||
}
|
||||
type CommunityInsertForm struct {
|
||||
Name string `json:"name" url:"name,omitempty"`
|
||||
Title string `json:"title" url:"title,omitempty"`
|
||||
Description Optional[string] `json:"description" url:"description,omitempty"`
|
||||
Removed Optional[bool] `json:"removed" url:"removed,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
Deleted Optional[bool] `json:"deleted" url:"deleted,omitempty"`
|
||||
NSFW Optional[bool] `json:"nsfw" url:"nsfw,omitempty"`
|
||||
ActorID Optional[string] `json:"actor_id" url:"actor_id,omitempty"`
|
||||
Local Optional[bool] `json:"local" url:"local,omitempty"`
|
||||
PrivateKey Optional[string] `json:"private_key" url:"private_key,omitempty"`
|
||||
PublicKey string `json:"public_key" url:"public_key,omitempty"`
|
||||
LastRefreshedAt LemmyTime `json:"last_refreshed_at" url:"last_refreshed_at,omitempty"`
|
||||
Icon Optional[string] `json:"icon" url:"icon,omitempty"`
|
||||
Banner Optional[string] `json:"banner" url:"banner,omitempty"`
|
||||
FollowersURL Optional[string] `json:"followers_url" url:"followers_url,omitempty"`
|
||||
InboxURL Optional[string] `json:"inbox_url" url:"inbox_url,omitempty"`
|
||||
SharedInboxURL Optional[string] `json:"shared_inbox_url" url:"shared_inbox_url,omitempty"`
|
||||
ModeratorsURL Optional[string] `json:"moderators_url" url:"moderators_url,omitempty"`
|
||||
FeaturedURL Optional[string] `json:"featured_url" url:"featured_url,omitempty"`
|
||||
Hidden Optional[bool] `json:"hidden" url:"hidden,omitempty"`
|
||||
PostingRestrictedToMods Optional[bool] `json:"posting_restricted_to_mods" url:"posting_restricted_to_mods,omitempty"`
|
||||
InstanceID int `json:"instance_id" url:"instance_id,omitempty"`
|
||||
}
|
||||
type CommunityUpdateForm struct {
|
||||
Title Optional[string] `json:"title" url:"title,omitempty"`
|
||||
Description Optional[Optional[string]] `json:"description" url:"description,omitempty"`
|
||||
Removed Optional[bool] `json:"removed" url:"removed,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
Deleted Optional[bool] `json:"deleted" url:"deleted,omitempty"`
|
||||
NSFW Optional[bool] `json:"nsfw" url:"nsfw,omitempty"`
|
||||
ActorID Optional[string] `json:"actor_id" url:"actor_id,omitempty"`
|
||||
Local Optional[bool] `json:"local" url:"local,omitempty"`
|
||||
PublicKey Optional[string] `json:"public_key" url:"public_key,omitempty"`
|
||||
PrivateKey Optional[Optional[string]] `json:"private_key" url:"private_key,omitempty"`
|
||||
LastRefreshedAt LemmyTime `json:"last_refreshed_at" url:"last_refreshed_at,omitempty"`
|
||||
Icon Optional[Optional[string]] `json:"icon" url:"icon,omitempty"`
|
||||
Banner Optional[Optional[string]] `json:"banner" url:"banner,omitempty"`
|
||||
FollowersURL Optional[string] `json:"followers_url" url:"followers_url,omitempty"`
|
||||
InboxURL Optional[string] `json:"inbox_url" url:"inbox_url,omitempty"`
|
||||
SharedInboxURL Optional[Optional[string]] `json:"shared_inbox_url" url:"shared_inbox_url,omitempty"`
|
||||
ModeratorsURL Optional[string] `json:"moderators_url" url:"moderators_url,omitempty"`
|
||||
FeaturedURL Optional[string] `json:"featured_url" url:"featured_url,omitempty"`
|
||||
Hidden Optional[bool] `json:"hidden" url:"hidden,omitempty"`
|
||||
PostingRestrictedToMods Optional[bool] `json:"posting_restricted_to_mods" url:"posting_restricted_to_mods,omitempty"`
|
||||
}
|
||||
type CommunityModerator struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
}
|
||||
type CommunityModeratorForm struct {
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
}
|
||||
type CommunityPersonBan struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Expires LemmyTime `json:"expires" url:"expires,omitempty"`
|
||||
}
|
||||
type CommunityPersonBanForm struct {
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
Expires LemmyTime `json:"expires" url:"expires,omitempty"`
|
||||
}
|
||||
type CommunityFollower struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Pending bool `json:"pending" url:"pending,omitempty"`
|
||||
}
|
||||
type CommunityFollowerForm struct {
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
Pending bool `json:"pending" url:"pending,omitempty"`
|
||||
}
|
||||
@@ -1,117 +0,0 @@
|
||||
// Source: lemmy/crates/api_common/src/community.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type GetCommunity struct {
|
||||
ID Optional[int] `json:"id" url:"id,omitempty"`
|
||||
Name Optional[string] `json:"name" url:"name,omitempty"`
|
||||
Auth Optional[string] `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type GetCommunityResponse struct {
|
||||
CommunityView CommunityView `json:"community_view" url:"community_view,omitempty"`
|
||||
Site Optional[Site] `json:"site" url:"site,omitempty"`
|
||||
Moderators []CommunityModeratorView `json:"moderators" url:"moderators,omitempty"`
|
||||
DiscussionLanguages []int `json:"discussion_languages" url:"discussion_languages,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type CreateCommunity struct {
|
||||
Name string `json:"name" url:"name,omitempty"`
|
||||
Title string `json:"title" url:"title,omitempty"`
|
||||
Description Optional[string] `json:"description" url:"description,omitempty"`
|
||||
Icon Optional[string] `json:"icon" url:"icon,omitempty"`
|
||||
Banner Optional[string] `json:"banner" url:"banner,omitempty"`
|
||||
NSFW Optional[bool] `json:"nsfw" url:"nsfw,omitempty"`
|
||||
PostingRestrictedToMods Optional[bool] `json:"posting_restricted_to_mods" url:"posting_restricted_to_mods,omitempty"`
|
||||
DiscussionLanguages Optional[[]int] `json:"discussion_languages" url:"discussion_languages,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type CommunityResponse struct {
|
||||
CommunityView CommunityView `json:"community_view" url:"community_view,omitempty"`
|
||||
DiscussionLanguages []int `json:"discussion_languages" url:"discussion_languages,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type ListCommunities struct {
|
||||
Type Optional[ListingType] `json:"type_" url:"type_,omitempty"`
|
||||
Sort Optional[SortType] `json:"sort" url:"sort,omitempty"`
|
||||
Page Optional[int64] `json:"page" url:"page,omitempty"`
|
||||
Limit Optional[int64] `json:"limit" url:"limit,omitempty"`
|
||||
Auth Optional[string] `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type ListCommunitiesResponse struct {
|
||||
Communities []CommunityView `json:"communities" url:"communities,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type BanFromCommunity struct {
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
Ban bool `json:"ban" url:"ban,omitempty"`
|
||||
RemoveData Optional[bool] `json:"remove_data" url:"remove_data,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Expires Optional[int64] `json:"expires" url:"expires,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type BanFromCommunityResponse struct {
|
||||
PersonView PersonView `json:"person_view" url:"person_view,omitempty"`
|
||||
Banned bool `json:"banned" url:"banned,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type AddModToCommunity struct {
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
Added bool `json:"added" url:"added,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type AddModToCommunityResponse struct {
|
||||
Moderators []CommunityModeratorView `json:"moderators" url:"moderators,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type EditCommunity struct {
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
Title Optional[string] `json:"title" url:"title,omitempty"`
|
||||
Description Optional[string] `json:"description" url:"description,omitempty"`
|
||||
Icon Optional[string] `json:"icon" url:"icon,omitempty"`
|
||||
Banner Optional[string] `json:"banner" url:"banner,omitempty"`
|
||||
NSFW Optional[bool] `json:"nsfw" url:"nsfw,omitempty"`
|
||||
PostingRestrictedToMods Optional[bool] `json:"posting_restricted_to_mods" url:"posting_restricted_to_mods,omitempty"`
|
||||
DiscussionLanguages Optional[[]int] `json:"discussion_languages" url:"discussion_languages,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type HideCommunity struct {
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
Hidden bool `json:"hidden" url:"hidden,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type DeleteCommunity struct {
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
Deleted bool `json:"deleted" url:"deleted,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type RemoveCommunity struct {
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
Removed bool `json:"removed" url:"removed,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Expires Optional[int64] `json:"expires" url:"expires,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type FollowCommunity struct {
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
Follow bool `json:"follow" url:"follow,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type BlockCommunity struct {
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
Block bool `json:"block" url:"block,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type BlockCommunityResponse struct {
|
||||
CommunityView CommunityView `json:"community_view" url:"community_view,omitempty"`
|
||||
Blocked bool `json:"blocked" url:"blocked,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type TransferCommunity struct {
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/community_block.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type CommunityBlock struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
}
|
||||
type CommunityBlockForm struct {
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/custom_emoji.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type CustomEmoji struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
LocalSiteID int `json:"local_site_id" url:"local_site_id,omitempty"`
|
||||
Shortcode string `json:"shortcode" url:"shortcode,omitempty"`
|
||||
ImageURL string `json:"image_url" url:"image_url,omitempty"`
|
||||
AltText string `json:"alt_text" url:"alt_text,omitempty"`
|
||||
Category string `json:"category" url:"category,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
}
|
||||
type CustomEmojiInsertForm struct {
|
||||
LocalSiteID int `json:"local_site_id" url:"local_site_id,omitempty"`
|
||||
Shortcode string `json:"shortcode" url:"shortcode,omitempty"`
|
||||
ImageURL string `json:"image_url" url:"image_url,omitempty"`
|
||||
AltText string `json:"alt_text" url:"alt_text,omitempty"`
|
||||
Category string `json:"category" url:"category,omitempty"`
|
||||
}
|
||||
type CustomEmojiUpdateForm struct {
|
||||
LocalSiteID int `json:"local_site_id" url:"local_site_id,omitempty"`
|
||||
ImageURL string `json:"image_url" url:"image_url,omitempty"`
|
||||
AltText string `json:"alt_text" url:"alt_text,omitempty"`
|
||||
Category string `json:"category" url:"category,omitempty"`
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
// Source: lemmy/crates/api_common/src/custom_emoji.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type CreateCustomEmoji struct {
|
||||
Category string `json:"category" url:"category,omitempty"`
|
||||
Shortcode string `json:"shortcode" url:"shortcode,omitempty"`
|
||||
ImageURL string `json:"image_url" url:"image_url,omitempty"`
|
||||
AltText string `json:"alt_text" url:"alt_text,omitempty"`
|
||||
Keywords []string `json:"keywords" url:"keywords,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type EditCustomEmoji struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
Category string `json:"category" url:"category,omitempty"`
|
||||
ImageURL string `json:"image_url" url:"image_url,omitempty"`
|
||||
AltText string `json:"alt_text" url:"alt_text,omitempty"`
|
||||
Keywords []string `json:"keywords" url:"keywords,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type DeleteCustomEmoji struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type DeleteCustomEmojiResponse struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
Success bool `json:"success" url:"success,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type CustomEmojiResponse struct {
|
||||
CustomEmoji CustomEmojiView `json:"custom_emoji" url:"custom_emoji,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/custom_emoji_keyword.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type CustomEmojiKeyword struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
CustomEmojiID int `json:"custom_emoji_id" url:"custom_emoji_id,omitempty"`
|
||||
Keyword string `json:"keyword" url:"keyword,omitempty"`
|
||||
}
|
||||
type CustomEmojiKeywordInsertForm struct {
|
||||
CustomEmojiID int `json:"custom_emoji_id" url:"custom_emoji_id,omitempty"`
|
||||
Keyword string `json:"keyword" url:"keyword,omitempty"`
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/email_verification.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type EmailVerification struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
LocalUserID int `json:"local_user_id" url:"local_user_id,omitempty"`
|
||||
Email string `json:"email" url:"email,omitempty"`
|
||||
VerificationCode string `json:"verification_code" url:"verification_code,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
}
|
||||
type EmailVerificationForm struct {
|
||||
LocalUserID int `json:"local_user_id" url:"local_user_id,omitempty"`
|
||||
Email string `json:"email" url:"email,omitempty"`
|
||||
VerificationToken string `json:"verification_token" url:"verification_token,omitempty"`
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/federation_allowlist.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type FederationAllowList struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
InstanceID int `json:"instance_id" url:"instance_id,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
}
|
||||
type FederationAllowListForm struct {
|
||||
InstanceID int `json:"instance_id" url:"instance_id,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/federation_blocklist.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type FederationBlockList struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
InstanceID int `json:"instance_id" url:"instance_id,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
}
|
||||
type FederationBlockListForm struct {
|
||||
InstanceID int `json:"instance_id" url:"instance_id,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/instance.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type Instance struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
Domain string `json:"domain" url:"domain,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
Software Optional[string] `json:"software" url:"software,omitempty"`
|
||||
Version Optional[string] `json:"version" url:"version,omitempty"`
|
||||
}
|
||||
type InstanceForm struct {
|
||||
Domain string `json:"domain" url:"domain,omitempty"`
|
||||
Software Optional[string] `json:"software" url:"software,omitempty"`
|
||||
Version Optional[string] `json:"version" url:"version,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/language.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type Language struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
Code string `json:"code" url:"code,omitempty"`
|
||||
Name string `json:"name" url:"name,omitempty"`
|
||||
}
|
||||
@@ -1,95 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/lib.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type SortType string
|
||||
|
||||
const (
|
||||
SortTypeActive SortType = "Active"
|
||||
SortTypeHot SortType = "Hot"
|
||||
SortTypeNew SortType = "New"
|
||||
SortTypeOld SortType = "Old"
|
||||
SortTypeTopDay SortType = "TopDay"
|
||||
SortTypeTopWeek SortType = "TopWeek"
|
||||
SortTypeTopMonth SortType = "TopMonth"
|
||||
SortTypeTopYear SortType = "TopYear"
|
||||
SortTypeTopAll SortType = "TopAll"
|
||||
SortTypeMostComments SortType = "MostComments"
|
||||
SortTypeNewComments SortType = "NewComments"
|
||||
SortTypeTopHour SortType = "TopHour"
|
||||
SortTypeTopSixHour SortType = "TopSixHour"
|
||||
SortTypeTopTwelveHour SortType = "TopTwelveHour"
|
||||
)
|
||||
|
||||
type CommentSortType string
|
||||
|
||||
const (
|
||||
CommentSortTypeHot CommentSortType = "Hot"
|
||||
CommentSortTypeTop CommentSortType = "Top"
|
||||
CommentSortTypeNew CommentSortType = "New"
|
||||
CommentSortTypeOld CommentSortType = "Old"
|
||||
)
|
||||
|
||||
type ListingType string
|
||||
|
||||
const (
|
||||
ListingTypeAll ListingType = "All"
|
||||
ListingTypeLocal ListingType = "Local"
|
||||
ListingTypeSubscribed ListingType = "Subscribed"
|
||||
)
|
||||
|
||||
type RegistrationMode string
|
||||
|
||||
const (
|
||||
RegistrationModeClosed RegistrationMode = "Closed"
|
||||
RegistrationModeRequireApplication RegistrationMode = "RequireApplication"
|
||||
RegistrationModeOpen RegistrationMode = "Open"
|
||||
)
|
||||
|
||||
type SearchType string
|
||||
|
||||
const (
|
||||
SearchTypeAll SearchType = "All"
|
||||
SearchTypeComments SearchType = "Comments"
|
||||
SearchTypePosts SearchType = "Posts"
|
||||
SearchTypeCommunities SearchType = "Communities"
|
||||
SearchTypeUsers SearchType = "Users"
|
||||
SearchTypeUrl SearchType = "Url"
|
||||
)
|
||||
|
||||
type SubscribedType string
|
||||
|
||||
const (
|
||||
SubscribedTypeSubscribed SubscribedType = "Subscribed"
|
||||
SubscribedTypeNotSubscribed SubscribedType = "NotSubscribed"
|
||||
SubscribedTypePending SubscribedType = "Pending"
|
||||
)
|
||||
|
||||
type ModlogActionType string
|
||||
|
||||
const (
|
||||
ModlogActionTypeAll ModlogActionType = "All"
|
||||
ModlogActionTypeModRemovePost ModlogActionType = "ModRemovePost"
|
||||
ModlogActionTypeModLockPost ModlogActionType = "ModLockPost"
|
||||
ModlogActionTypeModFeaturePost ModlogActionType = "ModFeaturePost"
|
||||
ModlogActionTypeModRemoveComment ModlogActionType = "ModRemoveComment"
|
||||
ModlogActionTypeModRemoveCommunity ModlogActionType = "ModRemoveCommunity"
|
||||
ModlogActionTypeModBanFromCommunity ModlogActionType = "ModBanFromCommunity"
|
||||
ModlogActionTypeModAddCommunity ModlogActionType = "ModAddCommunity"
|
||||
ModlogActionTypeModTransferCommunity ModlogActionType = "ModTransferCommunity"
|
||||
ModlogActionTypeModAdd ModlogActionType = "ModAdd"
|
||||
ModlogActionTypeModBan ModlogActionType = "ModBan"
|
||||
ModlogActionTypeModHideCommunity ModlogActionType = "ModHideCommunity"
|
||||
ModlogActionTypeAdminPurgePerson ModlogActionType = "AdminPurgePerson"
|
||||
ModlogActionTypeAdminPurgeCommunity ModlogActionType = "AdminPurgeCommunity"
|
||||
ModlogActionTypeAdminPurgePost ModlogActionType = "AdminPurgePost"
|
||||
ModlogActionTypeAdminPurgeComment ModlogActionType = "AdminPurgeComment"
|
||||
)
|
||||
|
||||
type PostFeatureType string
|
||||
|
||||
const (
|
||||
PostFeatureTypeLocal PostFeatureType = "Local"
|
||||
PostFeatureTypeCommunity PostFeatureType = "Community"
|
||||
)
|
||||
@@ -1,4 +0,0 @@
|
||||
// Source: lemmy/crates/api_common/src/lib.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
@@ -1,77 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/local_site.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type LocalSite struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
SiteID int `json:"site_id" url:"site_id,omitempty"`
|
||||
SiteSetup bool `json:"site_setup" url:"site_setup,omitempty"`
|
||||
EnableDownvotes bool `json:"enable_downvotes" url:"enable_downvotes,omitempty"`
|
||||
EnableNSFW bool `json:"enable_nsfw" url:"enable_nsfw,omitempty"`
|
||||
CommunityCreationAdminOnly bool `json:"community_creation_admin_only" url:"community_creation_admin_only,omitempty"`
|
||||
RequireEmailVerification bool `json:"require_email_verification" url:"require_email_verification,omitempty"`
|
||||
ApplicationQuestion Optional[string] `json:"application_question" url:"application_question,omitempty"`
|
||||
PrivateInstance bool `json:"private_instance" url:"private_instance,omitempty"`
|
||||
DefaultTheme string `json:"default_theme" url:"default_theme,omitempty"`
|
||||
DefaultPostListingType ListingType `json:"default_post_listing_type" url:"default_post_listing_type,omitempty"`
|
||||
LegalInformation Optional[string] `json:"legal_information" url:"legal_information,omitempty"`
|
||||
HideModlogModNames bool `json:"hide_modlog_mod_names" url:"hide_modlog_mod_names,omitempty"`
|
||||
ApplicationEmailAdmins bool `json:"application_email_admins" url:"application_email_admins,omitempty"`
|
||||
SlurFilterRegex Optional[string] `json:"slur_filter_regex" url:"slur_filter_regex,omitempty"`
|
||||
ActorNameMaxLength int32 `json:"actor_name_max_length" url:"actor_name_max_length,omitempty"`
|
||||
FederationEnabled bool `json:"federation_enabled" url:"federation_enabled,omitempty"`
|
||||
FederationWorkerCount int32 `json:"federation_worker_count" url:"federation_worker_count,omitempty"`
|
||||
CaptchaEnabled bool `json:"captcha_enabled" url:"captcha_enabled,omitempty"`
|
||||
CaptchaDifficulty string `json:"captcha_difficulty" url:"captcha_difficulty,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
RegistrationMode RegistrationMode `json:"registration_mode" url:"registration_mode,omitempty"`
|
||||
ReportsEmailAdmins bool `json:"reports_email_admins" url:"reports_email_admins,omitempty"`
|
||||
}
|
||||
type LocalSiteInsertForm struct {
|
||||
SiteID int `json:"site_id" url:"site_id,omitempty"`
|
||||
SiteSetup Optional[bool] `json:"site_setup" url:"site_setup,omitempty"`
|
||||
EnableDownvotes Optional[bool] `json:"enable_downvotes" url:"enable_downvotes,omitempty"`
|
||||
EnableNSFW Optional[bool] `json:"enable_nsfw" url:"enable_nsfw,omitempty"`
|
||||
CommunityCreationAdminOnly Optional[bool] `json:"community_creation_admin_only" url:"community_creation_admin_only,omitempty"`
|
||||
RequireEmailVerification Optional[bool] `json:"require_email_verification" url:"require_email_verification,omitempty"`
|
||||
ApplicationQuestion Optional[string] `json:"application_question" url:"application_question,omitempty"`
|
||||
PrivateInstance Optional[bool] `json:"private_instance" url:"private_instance,omitempty"`
|
||||
DefaultTheme Optional[string] `json:"default_theme" url:"default_theme,omitempty"`
|
||||
DefaultPostListingType Optional[ListingType] `json:"default_post_listing_type" url:"default_post_listing_type,omitempty"`
|
||||
LegalInformation Optional[string] `json:"legal_information" url:"legal_information,omitempty"`
|
||||
HideModlogModNames Optional[bool] `json:"hide_modlog_mod_names" url:"hide_modlog_mod_names,omitempty"`
|
||||
ApplicationEmailAdmins Optional[bool] `json:"application_email_admins" url:"application_email_admins,omitempty"`
|
||||
SlurFilterRegex Optional[string] `json:"slur_filter_regex" url:"slur_filter_regex,omitempty"`
|
||||
ActorNameMaxLength Optional[int32] `json:"actor_name_max_length" url:"actor_name_max_length,omitempty"`
|
||||
FederationEnabled Optional[bool] `json:"federation_enabled" url:"federation_enabled,omitempty"`
|
||||
FederationWorkerCount Optional[int32] `json:"federation_worker_count" url:"federation_worker_count,omitempty"`
|
||||
CaptchaEnabled Optional[bool] `json:"captcha_enabled" url:"captcha_enabled,omitempty"`
|
||||
CaptchaDifficulty Optional[string] `json:"captcha_difficulty" url:"captcha_difficulty,omitempty"`
|
||||
RegistrationMode Optional[RegistrationMode] `json:"registration_mode" url:"registration_mode,omitempty"`
|
||||
ReportsEmailAdmins Optional[bool] `json:"reports_email_admins" url:"reports_email_admins,omitempty"`
|
||||
}
|
||||
type LocalSiteUpdateForm struct {
|
||||
SiteSetup Optional[bool] `json:"site_setup" url:"site_setup,omitempty"`
|
||||
EnableDownvotes Optional[bool] `json:"enable_downvotes" url:"enable_downvotes,omitempty"`
|
||||
EnableNSFW Optional[bool] `json:"enable_nsfw" url:"enable_nsfw,omitempty"`
|
||||
CommunityCreationAdminOnly Optional[bool] `json:"community_creation_admin_only" url:"community_creation_admin_only,omitempty"`
|
||||
RequireEmailVerification Optional[bool] `json:"require_email_verification" url:"require_email_verification,omitempty"`
|
||||
ApplicationQuestion Optional[Optional[string]] `json:"application_question" url:"application_question,omitempty"`
|
||||
PrivateInstance Optional[bool] `json:"private_instance" url:"private_instance,omitempty"`
|
||||
DefaultTheme Optional[string] `json:"default_theme" url:"default_theme,omitempty"`
|
||||
DefaultPostListingType Optional[ListingType] `json:"default_post_listing_type" url:"default_post_listing_type,omitempty"`
|
||||
LegalInformation Optional[Optional[string]] `json:"legal_information" url:"legal_information,omitempty"`
|
||||
HideModlogModNames Optional[bool] `json:"hide_modlog_mod_names" url:"hide_modlog_mod_names,omitempty"`
|
||||
ApplicationEmailAdmins Optional[bool] `json:"application_email_admins" url:"application_email_admins,omitempty"`
|
||||
SlurFilterRegex Optional[Optional[string]] `json:"slur_filter_regex" url:"slur_filter_regex,omitempty"`
|
||||
ActorNameMaxLength Optional[int32] `json:"actor_name_max_length" url:"actor_name_max_length,omitempty"`
|
||||
FederationEnabled Optional[bool] `json:"federation_enabled" url:"federation_enabled,omitempty"`
|
||||
FederationWorkerCount Optional[int32] `json:"federation_worker_count" url:"federation_worker_count,omitempty"`
|
||||
CaptchaEnabled Optional[bool] `json:"captcha_enabled" url:"captcha_enabled,omitempty"`
|
||||
CaptchaDifficulty Optional[string] `json:"captcha_difficulty" url:"captcha_difficulty,omitempty"`
|
||||
RegistrationMode Optional[RegistrationMode] `json:"registration_mode" url:"registration_mode,omitempty"`
|
||||
ReportsEmailAdmins Optional[bool] `json:"reports_email_admins" url:"reports_email_admins,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/local_site_rate_limit.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type LocalSiteRateLimit struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
LocalSiteID int `json:"local_site_id" url:"local_site_id,omitempty"`
|
||||
Message int32 `json:"message" url:"message,omitempty"`
|
||||
MessagePerSecond int32 `json:"message_per_second" url:"message_per_second,omitempty"`
|
||||
Post int32 `json:"post" url:"post,omitempty"`
|
||||
PostPerSecond int32 `json:"post_per_second" url:"post_per_second,omitempty"`
|
||||
Register int32 `json:"register" url:"register,omitempty"`
|
||||
RegisterPerSecond int32 `json:"register_per_second" url:"register_per_second,omitempty"`
|
||||
Image int32 `json:"image" url:"image,omitempty"`
|
||||
ImagePerSecond int32 `json:"image_per_second" url:"image_per_second,omitempty"`
|
||||
Comment int32 `json:"comment" url:"comment,omitempty"`
|
||||
CommentPerSecond int32 `json:"comment_per_second" url:"comment_per_second,omitempty"`
|
||||
Search int32 `json:"search" url:"search,omitempty"`
|
||||
SearchPerSecond int32 `json:"search_per_second" url:"search_per_second,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
}
|
||||
type LocalSiteRateLimitInsertForm struct {
|
||||
LocalSiteID int `json:"local_site_id" url:"local_site_id,omitempty"`
|
||||
Message Optional[int32] `json:"message" url:"message,omitempty"`
|
||||
MessagePerSecond Optional[int32] `json:"message_per_second" url:"message_per_second,omitempty"`
|
||||
Post Optional[int32] `json:"post" url:"post,omitempty"`
|
||||
PostPerSecond Optional[int32] `json:"post_per_second" url:"post_per_second,omitempty"`
|
||||
Register Optional[int32] `json:"register" url:"register,omitempty"`
|
||||
RegisterPerSecond Optional[int32] `json:"register_per_second" url:"register_per_second,omitempty"`
|
||||
Image Optional[int32] `json:"image" url:"image,omitempty"`
|
||||
ImagePerSecond Optional[int32] `json:"image_per_second" url:"image_per_second,omitempty"`
|
||||
Comment Optional[int32] `json:"comment" url:"comment,omitempty"`
|
||||
CommentPerSecond Optional[int32] `json:"comment_per_second" url:"comment_per_second,omitempty"`
|
||||
Search Optional[int32] `json:"search" url:"search,omitempty"`
|
||||
SearchPerSecond Optional[int32] `json:"search_per_second" url:"search_per_second,omitempty"`
|
||||
}
|
||||
type LocalSiteRateLimitUpdateForm struct {
|
||||
Message Optional[int32] `json:"message" url:"message,omitempty"`
|
||||
MessagePerSecond Optional[int32] `json:"message_per_second" url:"message_per_second,omitempty"`
|
||||
Post Optional[int32] `json:"post" url:"post,omitempty"`
|
||||
PostPerSecond Optional[int32] `json:"post_per_second" url:"post_per_second,omitempty"`
|
||||
Register Optional[int32] `json:"register" url:"register,omitempty"`
|
||||
RegisterPerSecond Optional[int32] `json:"register_per_second" url:"register_per_second,omitempty"`
|
||||
Image Optional[int32] `json:"image" url:"image,omitempty"`
|
||||
ImagePerSecond Optional[int32] `json:"image_per_second" url:"image_per_second,omitempty"`
|
||||
Comment Optional[int32] `json:"comment" url:"comment,omitempty"`
|
||||
CommentPerSecond Optional[int32] `json:"comment_per_second" url:"comment_per_second,omitempty"`
|
||||
Search Optional[int32] `json:"search" url:"search,omitempty"`
|
||||
SearchPerSecond Optional[int32] `json:"search_per_second" url:"search_per_second,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
}
|
||||
@@ -1,66 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/local_user.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type LocalUser struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
PasswordEncrypted string `json:"password_encrypted" url:"password_encrypted,omitempty"`
|
||||
Email Optional[string] `json:"email" url:"email,omitempty"`
|
||||
ShowNSFW bool `json:"show_nsfw" url:"show_nsfw,omitempty"`
|
||||
Theme string `json:"theme" url:"theme,omitempty"`
|
||||
DefaultSortType SortType `json:"default_sort_type" url:"default_sort_type,omitempty"`
|
||||
DefaultListingType ListingType `json:"default_listing_type" url:"default_listing_type,omitempty"`
|
||||
InterfaceLanguage string `json:"interface_language" url:"interface_language,omitempty"`
|
||||
ShowAvatars bool `json:"show_avatars" url:"show_avatars,omitempty"`
|
||||
SendNotificationsToEmail bool `json:"send_notifications_to_email" url:"send_notifications_to_email,omitempty"`
|
||||
ValidatorTime LemmyTime `json:"validator_time" url:"validator_time,omitempty"`
|
||||
ShowScores bool `json:"show_scores" url:"show_scores,omitempty"`
|
||||
ShowBotAccounts bool `json:"show_bot_accounts" url:"show_bot_accounts,omitempty"`
|
||||
ShowReadPosts bool `json:"show_read_posts" url:"show_read_posts,omitempty"`
|
||||
ShowNewPostNotifs bool `json:"show_new_post_notifs" url:"show_new_post_notifs,omitempty"`
|
||||
EmailVerified bool `json:"email_verified" url:"email_verified,omitempty"`
|
||||
AcceptedApplication bool `json:"accepted_application" url:"accepted_application,omitempty"`
|
||||
Totp2faSecret Optional[string] `json:"totp_2fa_secret" url:"totp_2fa_secret,omitempty"`
|
||||
Totp2faURL Optional[string] `json:"totp_2fa_url" url:"totp_2fa_url,omitempty"`
|
||||
}
|
||||
type LocalUserInsertForm struct {
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
PasswordEncrypted string `json:"password_encrypted" url:"password_encrypted,omitempty"`
|
||||
Email Optional[string] `json:"email" url:"email,omitempty"`
|
||||
ShowNSFW Optional[bool] `json:"show_nsfw" url:"show_nsfw,omitempty"`
|
||||
Theme Optional[string] `json:"theme" url:"theme,omitempty"`
|
||||
DefaultSortType Optional[SortType] `json:"default_sort_type" url:"default_sort_type,omitempty"`
|
||||
DefaultListingType Optional[ListingType] `json:"default_listing_type" url:"default_listing_type,omitempty"`
|
||||
InterfaceLanguage Optional[string] `json:"interface_language" url:"interface_language,omitempty"`
|
||||
ShowAvatars Optional[bool] `json:"show_avatars" url:"show_avatars,omitempty"`
|
||||
SendNotificationsToEmail Optional[bool] `json:"send_notifications_to_email" url:"send_notifications_to_email,omitempty"`
|
||||
ShowBotAccounts Optional[bool] `json:"show_bot_accounts" url:"show_bot_accounts,omitempty"`
|
||||
ShowScores Optional[bool] `json:"show_scores" url:"show_scores,omitempty"`
|
||||
ShowReadPosts Optional[bool] `json:"show_read_posts" url:"show_read_posts,omitempty"`
|
||||
ShowNewPostNotifs Optional[bool] `json:"show_new_post_notifs" url:"show_new_post_notifs,omitempty"`
|
||||
EmailVerified Optional[bool] `json:"email_verified" url:"email_verified,omitempty"`
|
||||
AcceptedApplication Optional[bool] `json:"accepted_application" url:"accepted_application,omitempty"`
|
||||
Totp2faSecret Optional[Optional[string]] `json:"totp_2fa_secret" url:"totp_2fa_secret,omitempty"`
|
||||
Totp2faURL Optional[Optional[string]] `json:"totp_2fa_url" url:"totp_2fa_url,omitempty"`
|
||||
}
|
||||
type LocalUserUpdateForm struct {
|
||||
PasswordEncrypted Optional[string] `json:"password_encrypted" url:"password_encrypted,omitempty"`
|
||||
Email Optional[Optional[string]] `json:"email" url:"email,omitempty"`
|
||||
ShowNSFW Optional[bool] `json:"show_nsfw" url:"show_nsfw,omitempty"`
|
||||
Theme Optional[string] `json:"theme" url:"theme,omitempty"`
|
||||
DefaultSortType Optional[SortType] `json:"default_sort_type" url:"default_sort_type,omitempty"`
|
||||
DefaultListingType Optional[ListingType] `json:"default_listing_type" url:"default_listing_type,omitempty"`
|
||||
InterfaceLanguage Optional[string] `json:"interface_language" url:"interface_language,omitempty"`
|
||||
ShowAvatars Optional[bool] `json:"show_avatars" url:"show_avatars,omitempty"`
|
||||
SendNotificationsToEmail Optional[bool] `json:"send_notifications_to_email" url:"send_notifications_to_email,omitempty"`
|
||||
ShowBotAccounts Optional[bool] `json:"show_bot_accounts" url:"show_bot_accounts,omitempty"`
|
||||
ShowScores Optional[bool] `json:"show_scores" url:"show_scores,omitempty"`
|
||||
ShowReadPosts Optional[bool] `json:"show_read_posts" url:"show_read_posts,omitempty"`
|
||||
ShowNewPostNotifs Optional[bool] `json:"show_new_post_notifs" url:"show_new_post_notifs,omitempty"`
|
||||
EmailVerified Optional[bool] `json:"email_verified" url:"email_verified,omitempty"`
|
||||
AcceptedApplication Optional[bool] `json:"accepted_application" url:"accepted_application,omitempty"`
|
||||
Totp2faSecret Optional[Optional[string]] `json:"totp_2fa_secret" url:"totp_2fa_secret,omitempty"`
|
||||
Totp2faURL Optional[Optional[string]] `json:"totp_2fa_url" url:"totp_2fa_url,omitempty"`
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/mod.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
@@ -1,205 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/moderator.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type ModRemovePost struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Removed bool `json:"removed" url:"removed,omitempty"`
|
||||
When LemmyTime `json:"when_" url:"when_,omitempty"`
|
||||
}
|
||||
type ModRemovePostForm struct {
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Removed Optional[bool] `json:"removed" url:"removed,omitempty"`
|
||||
}
|
||||
type ModLockPost struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Locked bool `json:"locked" url:"locked,omitempty"`
|
||||
When LemmyTime `json:"when_" url:"when_,omitempty"`
|
||||
}
|
||||
type ModLockPostForm struct {
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Locked Optional[bool] `json:"locked" url:"locked,omitempty"`
|
||||
}
|
||||
type ModFeaturePost struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Featured bool `json:"featured" url:"featured,omitempty"`
|
||||
When LemmyTime `json:"when_" url:"when_,omitempty"`
|
||||
IsFeaturedCommunity bool `json:"is_featured_community" url:"is_featured_community,omitempty"`
|
||||
}
|
||||
type ModFeaturePostForm struct {
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Featured bool `json:"featured" url:"featured,omitempty"`
|
||||
IsFeaturedCommunity bool `json:"is_featured_community" url:"is_featured_community,omitempty"`
|
||||
}
|
||||
type ModRemoveComment struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Removed bool `json:"removed" url:"removed,omitempty"`
|
||||
When LemmyTime `json:"when_" url:"when_,omitempty"`
|
||||
}
|
||||
type ModRemoveCommentForm struct {
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Removed Optional[bool] `json:"removed" url:"removed,omitempty"`
|
||||
}
|
||||
type ModRemoveCommunity struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Removed bool `json:"removed" url:"removed,omitempty"`
|
||||
Expires LemmyTime `json:"expires" url:"expires,omitempty"`
|
||||
When LemmyTime `json:"when_" url:"when_,omitempty"`
|
||||
}
|
||||
type ModRemoveCommunityForm struct {
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Removed Optional[bool] `json:"removed" url:"removed,omitempty"`
|
||||
Expires LemmyTime `json:"expires" url:"expires,omitempty"`
|
||||
}
|
||||
type ModBanFromCommunity struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
OtherPersonID int `json:"other_person_id" url:"other_person_id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Banned bool `json:"banned" url:"banned,omitempty"`
|
||||
Expires LemmyTime `json:"expires" url:"expires,omitempty"`
|
||||
When LemmyTime `json:"when_" url:"when_,omitempty"`
|
||||
}
|
||||
type ModBanFromCommunityForm struct {
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
OtherPersonID int `json:"other_person_id" url:"other_person_id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Banned Optional[bool] `json:"banned" url:"banned,omitempty"`
|
||||
Expires LemmyTime `json:"expires" url:"expires,omitempty"`
|
||||
}
|
||||
type ModBan struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
OtherPersonID int `json:"other_person_id" url:"other_person_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Banned bool `json:"banned" url:"banned,omitempty"`
|
||||
Expires LemmyTime `json:"expires" url:"expires,omitempty"`
|
||||
When LemmyTime `json:"when_" url:"when_,omitempty"`
|
||||
}
|
||||
type ModHideCommunityForm struct {
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
Hidden Optional[bool] `json:"hidden" url:"hidden,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
}
|
||||
type ModHideCommunity struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
When LemmyTime `json:"when_" url:"when_,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Hidden bool `json:"hidden" url:"hidden,omitempty"`
|
||||
}
|
||||
type ModBanForm struct {
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
OtherPersonID int `json:"other_person_id" url:"other_person_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Banned Optional[bool] `json:"banned" url:"banned,omitempty"`
|
||||
Expires LemmyTime `json:"expires" url:"expires,omitempty"`
|
||||
}
|
||||
type ModAddCommunity struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
OtherPersonID int `json:"other_person_id" url:"other_person_id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
Removed bool `json:"removed" url:"removed,omitempty"`
|
||||
When LemmyTime `json:"when_" url:"when_,omitempty"`
|
||||
}
|
||||
type ModAddCommunityForm struct {
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
OtherPersonID int `json:"other_person_id" url:"other_person_id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
Removed Optional[bool] `json:"removed" url:"removed,omitempty"`
|
||||
}
|
||||
type ModTransferCommunity struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
OtherPersonID int `json:"other_person_id" url:"other_person_id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
When LemmyTime `json:"when_" url:"when_,omitempty"`
|
||||
}
|
||||
type ModTransferCommunityForm struct {
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
OtherPersonID int `json:"other_person_id" url:"other_person_id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
}
|
||||
type ModAdd struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
OtherPersonID int `json:"other_person_id" url:"other_person_id,omitempty"`
|
||||
Removed bool `json:"removed" url:"removed,omitempty"`
|
||||
When LemmyTime `json:"when_" url:"when_,omitempty"`
|
||||
}
|
||||
type ModAddForm struct {
|
||||
ModPersonID int `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
OtherPersonID int `json:"other_person_id" url:"other_person_id,omitempty"`
|
||||
Removed Optional[bool] `json:"removed" url:"removed,omitempty"`
|
||||
}
|
||||
type AdminPurgePerson struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
AdminPersonID int `json:"admin_person_id" url:"admin_person_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
When LemmyTime `json:"when_" url:"when_,omitempty"`
|
||||
}
|
||||
type AdminPurgePersonForm struct {
|
||||
AdminPersonID int `json:"admin_person_id" url:"admin_person_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
}
|
||||
type AdminPurgeCommunity struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
AdminPersonID int `json:"admin_person_id" url:"admin_person_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
When LemmyTime `json:"when_" url:"when_,omitempty"`
|
||||
}
|
||||
type AdminPurgeCommunityForm struct {
|
||||
AdminPersonID int `json:"admin_person_id" url:"admin_person_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
}
|
||||
type AdminPurgePost struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
AdminPersonID int `json:"admin_person_id" url:"admin_person_id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
When LemmyTime `json:"when_" url:"when_,omitempty"`
|
||||
}
|
||||
type AdminPurgePostForm struct {
|
||||
AdminPersonID int `json:"admin_person_id" url:"admin_person_id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
}
|
||||
type AdminPurgeComment struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
AdminPersonID int `json:"admin_person_id" url:"admin_person_id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
When LemmyTime `json:"when_" url:"when_,omitempty"`
|
||||
}
|
||||
type AdminPurgeCommentForm struct {
|
||||
AdminPersonID int `json:"admin_person_id" url:"admin_person_id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/password_reset_request.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type PasswordResetRequest struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
TokenEncrypted string `json:"token_encrypted" url:"token_encrypted,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
LocalUserID int `json:"local_user_id" url:"local_user_id,omitempty"`
|
||||
}
|
||||
type PasswordResetRequestForm struct {
|
||||
LocalUserID int `json:"local_user_id" url:"local_user_id,omitempty"`
|
||||
TokenEncrypted string `json:"token_encrypted" url:"token_encrypted,omitempty"`
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/person.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type Person struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
Name string `json:"name" url:"name,omitempty"`
|
||||
DisplayName Optional[string] `json:"display_name" url:"display_name,omitempty"`
|
||||
Avatar Optional[string] `json:"avatar" url:"avatar,omitempty"`
|
||||
Banned bool `json:"banned" url:"banned,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
ActorID string `json:"actor_id" url:"actor_id,omitempty"`
|
||||
Bio Optional[string] `json:"bio" url:"bio,omitempty"`
|
||||
Local bool `json:"local" url:"local,omitempty"`
|
||||
PrivateKey Optional[string] `json:"private_key" url:"private_key,omitempty"`
|
||||
PublicKey string `json:"public_key" url:"public_key,omitempty"`
|
||||
LastRefreshedAt LemmyTime `json:"last_refreshed_at" url:"last_refreshed_at,omitempty"`
|
||||
Banner Optional[string] `json:"banner" url:"banner,omitempty"`
|
||||
Deleted bool `json:"deleted" url:"deleted,omitempty"`
|
||||
InboxURL string `json:"inbox_url" url:"inbox_url,omitempty"`
|
||||
SharedInboxURL Optional[string] `json:"shared_inbox_url" url:"shared_inbox_url,omitempty"`
|
||||
MatrixUserID Optional[string] `json:"matrix_user_id" url:"matrix_user_id,omitempty"`
|
||||
Admin bool `json:"admin" url:"admin,omitempty"`
|
||||
BotAccount bool `json:"bot_account" url:"bot_account,omitempty"`
|
||||
BanExpires LemmyTime `json:"ban_expires" url:"ban_expires,omitempty"`
|
||||
InstanceID int `json:"instance_id" url:"instance_id,omitempty"`
|
||||
}
|
||||
type PersonInsertForm struct {
|
||||
Name string `json:"name" url:"name,omitempty"`
|
||||
PublicKey string `json:"public_key" url:"public_key,omitempty"`
|
||||
InstanceID int `json:"instance_id" url:"instance_id,omitempty"`
|
||||
DisplayName Optional[string] `json:"display_name" url:"display_name,omitempty"`
|
||||
Avatar Optional[string] `json:"avatar" url:"avatar,omitempty"`
|
||||
Banned Optional[bool] `json:"banned" url:"banned,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
ActorID Optional[string] `json:"actor_id" url:"actor_id,omitempty"`
|
||||
Bio Optional[string] `json:"bio" url:"bio,omitempty"`
|
||||
Local Optional[bool] `json:"local" url:"local,omitempty"`
|
||||
PrivateKey Optional[string] `json:"private_key" url:"private_key,omitempty"`
|
||||
LastRefreshedAt LemmyTime `json:"last_refreshed_at" url:"last_refreshed_at,omitempty"`
|
||||
Banner Optional[string] `json:"banner" url:"banner,omitempty"`
|
||||
Deleted Optional[bool] `json:"deleted" url:"deleted,omitempty"`
|
||||
InboxURL Optional[string] `json:"inbox_url" url:"inbox_url,omitempty"`
|
||||
SharedInboxURL Optional[string] `json:"shared_inbox_url" url:"shared_inbox_url,omitempty"`
|
||||
MatrixUserID Optional[string] `json:"matrix_user_id" url:"matrix_user_id,omitempty"`
|
||||
Admin Optional[bool] `json:"admin" url:"admin,omitempty"`
|
||||
BotAccount Optional[bool] `json:"bot_account" url:"bot_account,omitempty"`
|
||||
BanExpires LemmyTime `json:"ban_expires" url:"ban_expires,omitempty"`
|
||||
}
|
||||
type PersonUpdateForm struct {
|
||||
DisplayName Optional[Optional[string]] `json:"display_name" url:"display_name,omitempty"`
|
||||
Avatar Optional[Optional[string]] `json:"avatar" url:"avatar,omitempty"`
|
||||
Banned Optional[bool] `json:"banned" url:"banned,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
ActorID Optional[string] `json:"actor_id" url:"actor_id,omitempty"`
|
||||
Bio Optional[Optional[string]] `json:"bio" url:"bio,omitempty"`
|
||||
Local Optional[bool] `json:"local" url:"local,omitempty"`
|
||||
PublicKey Optional[string] `json:"public_key" url:"public_key,omitempty"`
|
||||
PrivateKey Optional[Optional[string]] `json:"private_key" url:"private_key,omitempty"`
|
||||
LastRefreshedAt LemmyTime `json:"last_refreshed_at" url:"last_refreshed_at,omitempty"`
|
||||
Banner Optional[Optional[string]] `json:"banner" url:"banner,omitempty"`
|
||||
Deleted Optional[bool] `json:"deleted" url:"deleted,omitempty"`
|
||||
InboxURL Optional[string] `json:"inbox_url" url:"inbox_url,omitempty"`
|
||||
SharedInboxURL Optional[Optional[string]] `json:"shared_inbox_url" url:"shared_inbox_url,omitempty"`
|
||||
MatrixUserID Optional[Optional[string]] `json:"matrix_user_id" url:"matrix_user_id,omitempty"`
|
||||
Admin Optional[bool] `json:"admin" url:"admin,omitempty"`
|
||||
BotAccount Optional[bool] `json:"bot_account" url:"bot_account,omitempty"`
|
||||
BanExpires LemmyTime `json:"ban_expires" url:"ban_expires,omitempty"`
|
||||
}
|
||||
type PersonFollower struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
FollowerID int `json:"follower_id" url:"follower_id,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Pending bool `json:"pending" url:"pending,omitempty"`
|
||||
}
|
||||
type PersonFollowerForm struct {
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
FollowerID int `json:"follower_id" url:"follower_id,omitempty"`
|
||||
Pending bool `json:"pending" url:"pending,omitempty"`
|
||||
}
|
||||
@@ -1,212 +0,0 @@
|
||||
// Source: lemmy/crates/api_common/src/person.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type Login struct {
|
||||
UsernameOrEmail string `json:"username_or_email" url:"username_or_email,omitempty"`
|
||||
Password string `json:"password" url:"password,omitempty"`
|
||||
Totp2faToken Optional[string] `json:"totp_2fa_token" url:"totp_2fa_token,omitempty"`
|
||||
}
|
||||
type Register struct {
|
||||
Username string `json:"username" url:"username,omitempty"`
|
||||
Password string `json:"password" url:"password,omitempty"`
|
||||
PasswordVerify string `json:"password_verify" url:"password_verify,omitempty"`
|
||||
ShowNSFW bool `json:"show_nsfw" url:"show_nsfw,omitempty"`
|
||||
Email Optional[string] `json:"email" url:"email,omitempty"`
|
||||
CaptchaUuid Optional[string] `json:"captcha_uuid" url:"captcha_uuid,omitempty"`
|
||||
CaptchaAnswer Optional[string] `json:"captcha_answer" url:"captcha_answer,omitempty"`
|
||||
Honeypot Optional[string] `json:"honeypot" url:"honeypot,omitempty"`
|
||||
Answer Optional[string] `json:"answer" url:"answer,omitempty"`
|
||||
}
|
||||
type GetCaptcha struct {
|
||||
Auth Optional[string] `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type GetCaptchaResponse struct {
|
||||
Ok Optional[CaptchaResponse] `json:"ok" url:"ok,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type CaptchaResponse struct {
|
||||
Png string `json:"png" url:"png,omitempty"`
|
||||
Wav string `json:"wav" url:"wav,omitempty"`
|
||||
Uuid string `json:"uuid" url:"uuid,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type SaveUserSettings struct {
|
||||
ShowNSFW Optional[bool] `json:"show_nsfw" url:"show_nsfw,omitempty"`
|
||||
ShowScores Optional[bool] `json:"show_scores" url:"show_scores,omitempty"`
|
||||
Theme Optional[string] `json:"theme" url:"theme,omitempty"`
|
||||
DefaultSortType Optional[SortType] `json:"default_sort_type" url:"default_sort_type,omitempty"`
|
||||
DefaultListingType Optional[ListingType] `json:"default_listing_type" url:"default_listing_type,omitempty"`
|
||||
InterfaceLanguage Optional[string] `json:"interface_language" url:"interface_language,omitempty"`
|
||||
Avatar Optional[string] `json:"avatar" url:"avatar,omitempty"`
|
||||
Banner Optional[string] `json:"banner" url:"banner,omitempty"`
|
||||
DisplayName Optional[string] `json:"display_name" url:"display_name,omitempty"`
|
||||
Email Optional[string] `json:"email" url:"email,omitempty"`
|
||||
Bio Optional[string] `json:"bio" url:"bio,omitempty"`
|
||||
MatrixUserID Optional[string] `json:"matrix_user_id" url:"matrix_user_id,omitempty"`
|
||||
ShowAvatars Optional[bool] `json:"show_avatars" url:"show_avatars,omitempty"`
|
||||
SendNotificationsToEmail Optional[bool] `json:"send_notifications_to_email" url:"send_notifications_to_email,omitempty"`
|
||||
BotAccount Optional[bool] `json:"bot_account" url:"bot_account,omitempty"`
|
||||
ShowBotAccounts Optional[bool] `json:"show_bot_accounts" url:"show_bot_accounts,omitempty"`
|
||||
ShowReadPosts Optional[bool] `json:"show_read_posts" url:"show_read_posts,omitempty"`
|
||||
ShowNewPostNotifs Optional[bool] `json:"show_new_post_notifs" url:"show_new_post_notifs,omitempty"`
|
||||
DiscussionLanguages Optional[[]int] `json:"discussion_languages" url:"discussion_languages,omitempty"`
|
||||
GenerateTotp2fa Optional[bool] `json:"generate_totp_2fa" url:"generate_totp_2fa,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type ChangePassword struct {
|
||||
NewPassword string `json:"new_password" url:"new_password,omitempty"`
|
||||
NewPasswordVerify string `json:"new_password_verify" url:"new_password_verify,omitempty"`
|
||||
OldPassword string `json:"old_password" url:"old_password,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type LoginResponse struct {
|
||||
JWT Optional[string] `json:"jwt" url:"jwt,omitempty"`
|
||||
RegistrationCreated bool `json:"registration_created" url:"registration_created,omitempty"`
|
||||
VerifyEmailSent bool `json:"verify_email_sent" url:"verify_email_sent,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type GetPersonDetails struct {
|
||||
PersonID Optional[int] `json:"person_id" url:"person_id,omitempty"`
|
||||
Username Optional[string] `json:"username" url:"username,omitempty"`
|
||||
Sort Optional[SortType] `json:"sort" url:"sort,omitempty"`
|
||||
Page Optional[int64] `json:"page" url:"page,omitempty"`
|
||||
Limit Optional[int64] `json:"limit" url:"limit,omitempty"`
|
||||
CommunityID Optional[int] `json:"community_id" url:"community_id,omitempty"`
|
||||
SavedOnly Optional[bool] `json:"saved_only" url:"saved_only,omitempty"`
|
||||
Auth Optional[string] `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type GetPersonDetailsResponse struct {
|
||||
PersonView PersonView `json:"person_view" url:"person_view,omitempty"`
|
||||
Comments []CommentView `json:"comments" url:"comments,omitempty"`
|
||||
Posts []PostView `json:"posts" url:"posts,omitempty"`
|
||||
Moderates []CommunityModeratorView `json:"moderates" url:"moderates,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type MarkAllAsRead struct {
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type AddAdmin struct {
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
Added bool `json:"added" url:"added,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type AddAdminResponse struct {
|
||||
Admins []PersonView `json:"admins" url:"admins,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type BanPerson struct {
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
Ban bool `json:"ban" url:"ban,omitempty"`
|
||||
RemoveData Optional[bool] `json:"remove_data" url:"remove_data,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Expires Optional[int64] `json:"expires" url:"expires,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type GetBannedPersons struct {
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type BannedPersonsResponse struct {
|
||||
Banned []PersonView `json:"banned" url:"banned,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type BanPersonResponse struct {
|
||||
PersonView PersonView `json:"person_view" url:"person_view,omitempty"`
|
||||
Banned bool `json:"banned" url:"banned,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type BlockPerson struct {
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
Block bool `json:"block" url:"block,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type BlockPersonResponse struct {
|
||||
PersonView PersonView `json:"person_view" url:"person_view,omitempty"`
|
||||
Blocked bool `json:"blocked" url:"blocked,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type GetReplies struct {
|
||||
Sort Optional[CommentSortType] `json:"sort" url:"sort,omitempty"`
|
||||
Page Optional[int64] `json:"page" url:"page,omitempty"`
|
||||
Limit Optional[int64] `json:"limit" url:"limit,omitempty"`
|
||||
UnreadOnly Optional[bool] `json:"unread_only" url:"unread_only,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type GetRepliesResponse struct {
|
||||
Replies []CommentReplyView `json:"replies" url:"replies,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type GetPersonMentions struct {
|
||||
Sort Optional[CommentSortType] `json:"sort" url:"sort,omitempty"`
|
||||
Page Optional[int64] `json:"page" url:"page,omitempty"`
|
||||
Limit Optional[int64] `json:"limit" url:"limit,omitempty"`
|
||||
UnreadOnly Optional[bool] `json:"unread_only" url:"unread_only,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type GetPersonMentionsResponse struct {
|
||||
Mentions []PersonMentionView `json:"mentions" url:"mentions,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type MarkPersonMentionAsRead struct {
|
||||
PersonMentionID int `json:"person_mention_id" url:"person_mention_id,omitempty"`
|
||||
Read bool `json:"read" url:"read,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type PersonMentionResponse struct {
|
||||
PersonMentionView PersonMentionView `json:"person_mention_view" url:"person_mention_view,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type MarkCommentReplyAsRead struct {
|
||||
CommentReplyID int `json:"comment_reply_id" url:"comment_reply_id,omitempty"`
|
||||
Read bool `json:"read" url:"read,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type CommentReplyResponse struct {
|
||||
CommentReplyView CommentReplyView `json:"comment_reply_view" url:"comment_reply_view,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type DeleteAccount struct {
|
||||
Password string `json:"password" url:"password,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type DeleteAccountResponse struct {
|
||||
LemmyResponse
|
||||
}
|
||||
type PasswordReset struct {
|
||||
Email string `json:"email" url:"email,omitempty"`
|
||||
}
|
||||
type PasswordResetResponse struct {
|
||||
LemmyResponse
|
||||
}
|
||||
type PasswordChangeAfterReset struct {
|
||||
Token string `json:"token" url:"token,omitempty"`
|
||||
Password string `json:"password" url:"password,omitempty"`
|
||||
PasswordVerify string `json:"password_verify" url:"password_verify,omitempty"`
|
||||
}
|
||||
type GetReportCount struct {
|
||||
CommunityID Optional[int] `json:"community_id" url:"community_id,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type GetReportCountResponse struct {
|
||||
CommunityID Optional[int] `json:"community_id" url:"community_id,omitempty"`
|
||||
CommentReports int64 `json:"comment_reports" url:"comment_reports,omitempty"`
|
||||
PostReports int64 `json:"post_reports" url:"post_reports,omitempty"`
|
||||
PrivateMessageReports Optional[int64] `json:"private_message_reports" url:"private_message_reports,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type GetUnreadCount struct {
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type GetUnreadCountResponse struct {
|
||||
Replies int64 `json:"replies" url:"replies,omitempty"`
|
||||
Mentions int64 `json:"mentions" url:"mentions,omitempty"`
|
||||
PrivateMessages int64 `json:"private_messages" url:"private_messages,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type VerifyEmail struct {
|
||||
Token string `json:"token" url:"token,omitempty"`
|
||||
}
|
||||
type VerifyEmailResponse struct {
|
||||
LemmyResponse
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/person_block.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type PersonBlock struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
TargetID int `json:"target_id" url:"target_id,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
}
|
||||
type PersonBlockForm struct {
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
TargetID int `json:"target_id" url:"target_id,omitempty"`
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/person_mention.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type PersonMention struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
RecipientID int `json:"recipient_id" url:"recipient_id,omitempty"`
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
Read bool `json:"read" url:"read,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
}
|
||||
type PersonMentionInsertForm struct {
|
||||
RecipientID int `json:"recipient_id" url:"recipient_id,omitempty"`
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
Read Optional[bool] `json:"read" url:"read,omitempty"`
|
||||
}
|
||||
type PersonMentionUpdateForm struct {
|
||||
Read Optional[bool] `json:"read" url:"read,omitempty"`
|
||||
}
|
||||
@@ -1,102 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/post.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type Post struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
Name string `json:"name" url:"name,omitempty"`
|
||||
URL Optional[string] `json:"url" url:"url,omitempty"`
|
||||
Body Optional[string] `json:"body" url:"body,omitempty"`
|
||||
CreatorID int `json:"creator_id" url:"creator_id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
Removed bool `json:"removed" url:"removed,omitempty"`
|
||||
Locked bool `json:"locked" url:"locked,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
Deleted bool `json:"deleted" url:"deleted,omitempty"`
|
||||
NSFW bool `json:"nsfw" url:"nsfw,omitempty"`
|
||||
EmbedTitle Optional[string] `json:"embed_title" url:"embed_title,omitempty"`
|
||||
EmbedDescription Optional[string] `json:"embed_description" url:"embed_description,omitempty"`
|
||||
ThumbnailURL Optional[string] `json:"thumbnail_url" url:"thumbnail_url,omitempty"`
|
||||
ApID string `json:"ap_id" url:"ap_id,omitempty"`
|
||||
Local bool `json:"local" url:"local,omitempty"`
|
||||
EmbedVideoURL Optional[string] `json:"embed_video_url" url:"embed_video_url,omitempty"`
|
||||
LanguageID int `json:"language_id" url:"language_id,omitempty"`
|
||||
FeaturedCommunity bool `json:"featured_community" url:"featured_community,omitempty"`
|
||||
FeaturedLocal bool `json:"featured_local" url:"featured_local,omitempty"`
|
||||
}
|
||||
type PostInsertForm struct {
|
||||
Name string `json:"name" url:"name,omitempty"`
|
||||
CreatorID int `json:"creator_id" url:"creator_id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
NSFW Optional[bool] `json:"nsfw" url:"nsfw,omitempty"`
|
||||
URL Optional[string] `json:"url" url:"url,omitempty"`
|
||||
Body Optional[string] `json:"body" url:"body,omitempty"`
|
||||
Removed Optional[bool] `json:"removed" url:"removed,omitempty"`
|
||||
Locked Optional[bool] `json:"locked" url:"locked,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Deleted Optional[bool] `json:"deleted" url:"deleted,omitempty"`
|
||||
EmbedTitle Optional[string] `json:"embed_title" url:"embed_title,omitempty"`
|
||||
EmbedDescription Optional[string] `json:"embed_description" url:"embed_description,omitempty"`
|
||||
EmbedVideoURL Optional[string] `json:"embed_video_url" url:"embed_video_url,omitempty"`
|
||||
ThumbnailURL Optional[string] `json:"thumbnail_url" url:"thumbnail_url,omitempty"`
|
||||
ApID Optional[string] `json:"ap_id" url:"ap_id,omitempty"`
|
||||
Local Optional[bool] `json:"local" url:"local,omitempty"`
|
||||
LanguageID Optional[int] `json:"language_id" url:"language_id,omitempty"`
|
||||
FeaturedCommunity Optional[bool] `json:"featured_community" url:"featured_community,omitempty"`
|
||||
FeaturedLocal Optional[bool] `json:"featured_local" url:"featured_local,omitempty"`
|
||||
}
|
||||
type PostUpdateForm struct {
|
||||
Name Optional[string] `json:"name" url:"name,omitempty"`
|
||||
NSFW Optional[bool] `json:"nsfw" url:"nsfw,omitempty"`
|
||||
URL Optional[Optional[string]] `json:"url" url:"url,omitempty"`
|
||||
Body Optional[Optional[string]] `json:"body" url:"body,omitempty"`
|
||||
Removed Optional[bool] `json:"removed" url:"removed,omitempty"`
|
||||
Locked Optional[bool] `json:"locked" url:"locked,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
Deleted Optional[bool] `json:"deleted" url:"deleted,omitempty"`
|
||||
EmbedTitle Optional[Optional[string]] `json:"embed_title" url:"embed_title,omitempty"`
|
||||
EmbedDescription Optional[Optional[string]] `json:"embed_description" url:"embed_description,omitempty"`
|
||||
EmbedVideoURL Optional[Optional[string]] `json:"embed_video_url" url:"embed_video_url,omitempty"`
|
||||
ThumbnailURL Optional[Optional[string]] `json:"thumbnail_url" url:"thumbnail_url,omitempty"`
|
||||
ApID Optional[string] `json:"ap_id" url:"ap_id,omitempty"`
|
||||
Local Optional[bool] `json:"local" url:"local,omitempty"`
|
||||
LanguageID Optional[int] `json:"language_id" url:"language_id,omitempty"`
|
||||
FeaturedCommunity Optional[bool] `json:"featured_community" url:"featured_community,omitempty"`
|
||||
FeaturedLocal Optional[bool] `json:"featured_local" url:"featured_local,omitempty"`
|
||||
}
|
||||
type PostLike struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
Score int16 `json:"score" url:"score,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
}
|
||||
type PostLikeForm struct {
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
Score int16 `json:"score" url:"score,omitempty"`
|
||||
}
|
||||
type PostSaved struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
}
|
||||
type PostSavedForm struct {
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
}
|
||||
type PostRead struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
}
|
||||
type PostReadForm struct {
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
}
|
||||
@@ -1,129 +0,0 @@
|
||||
// Source: lemmy/crates/api_common/src/post.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type CreatePost struct {
|
||||
Name string `json:"name" url:"name,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
URL Optional[string] `json:"url" url:"url,omitempty"`
|
||||
Body Optional[string] `json:"body" url:"body,omitempty"`
|
||||
Honeypot Optional[string] `json:"honeypot" url:"honeypot,omitempty"`
|
||||
NSFW Optional[bool] `json:"nsfw" url:"nsfw,omitempty"`
|
||||
LanguageID Optional[int] `json:"language_id" url:"language_id,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type PostResponse struct {
|
||||
PostView PostView `json:"post_view" url:"post_view,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type GetPost struct {
|
||||
ID Optional[int] `json:"id" url:"id,omitempty"`
|
||||
CommentID Optional[int] `json:"comment_id" url:"comment_id,omitempty"`
|
||||
Auth Optional[string] `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type GetPostResponse struct {
|
||||
PostView PostView `json:"post_view" url:"post_view,omitempty"`
|
||||
CommunityView CommunityView `json:"community_view" url:"community_view,omitempty"`
|
||||
Moderators []CommunityModeratorView `json:"moderators" url:"moderators,omitempty"`
|
||||
CrossPosts []PostView `json:"cross_posts" url:"cross_posts,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type GetPosts struct {
|
||||
Type Optional[ListingType] `json:"type_" url:"type_,omitempty"`
|
||||
Sort Optional[SortType] `json:"sort" url:"sort,omitempty"`
|
||||
Page Optional[int64] `json:"page" url:"page,omitempty"`
|
||||
Limit Optional[int64] `json:"limit" url:"limit,omitempty"`
|
||||
CommunityID Optional[int] `json:"community_id" url:"community_id,omitempty"`
|
||||
CommunityName Optional[string] `json:"community_name" url:"community_name,omitempty"`
|
||||
SavedOnly Optional[bool] `json:"saved_only" url:"saved_only,omitempty"`
|
||||
Auth Optional[string] `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type GetPostsResponse struct {
|
||||
Posts []PostView `json:"posts" url:"posts,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type CreatePostLike struct {
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Score int16 `json:"score" url:"score,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type EditPost struct {
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Name Optional[string] `json:"name" url:"name,omitempty"`
|
||||
URL Optional[string] `json:"url" url:"url,omitempty"`
|
||||
Body Optional[string] `json:"body" url:"body,omitempty"`
|
||||
NSFW Optional[bool] `json:"nsfw" url:"nsfw,omitempty"`
|
||||
LanguageID Optional[int] `json:"language_id" url:"language_id,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type DeletePost struct {
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Deleted bool `json:"deleted" url:"deleted,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type RemovePost struct {
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Removed bool `json:"removed" url:"removed,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type MarkPostAsRead struct {
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Read bool `json:"read" url:"read,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type LockPost struct {
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Locked bool `json:"locked" url:"locked,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type FeaturePost struct {
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Featured bool `json:"featured" url:"featured,omitempty"`
|
||||
FeatureType PostFeatureType `json:"feature_type" url:"feature_type,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type SavePost struct {
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Save bool `json:"save" url:"save,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type CreatePostReport struct {
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Reason string `json:"reason" url:"reason,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type PostReportResponse struct {
|
||||
PostReportView PostReportView `json:"post_report_view" url:"post_report_view,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type ResolvePostReport struct {
|
||||
ReportID int `json:"report_id" url:"report_id,omitempty"`
|
||||
Resolved bool `json:"resolved" url:"resolved,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type ListPostReports struct {
|
||||
Page Optional[int64] `json:"page" url:"page,omitempty"`
|
||||
Limit Optional[int64] `json:"limit" url:"limit,omitempty"`
|
||||
UnresolvedOnly Optional[bool] `json:"unresolved_only" url:"unresolved_only,omitempty"`
|
||||
CommunityID Optional[int] `json:"community_id" url:"community_id,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type ListPostReportsResponse struct {
|
||||
PostReports []PostReportView `json:"post_reports" url:"post_reports,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type GetSiteMetadata struct {
|
||||
URL string `json:"url" url:"url,omitempty"`
|
||||
}
|
||||
type GetSiteMetadataResponse struct {
|
||||
Metadata SiteMetadata `json:"metadata" url:"metadata,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type SiteMetadata struct {
|
||||
Title Optional[string] `json:"title" url:"title,omitempty"`
|
||||
Description Optional[string] `json:"description" url:"description,omitempty"`
|
||||
Image Optional[string] `json:"image" url:"image,omitempty"`
|
||||
EmbedVideoURL Optional[string] `json:"embed_video_url" url:"embed_video_url,omitempty"`
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/post_report.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type PostReport struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
CreatorID int `json:"creator_id" url:"creator_id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
OriginalPostName string `json:"original_post_name" url:"original_post_name,omitempty"`
|
||||
OriginalPostURL Optional[string] `json:"original_post_url" url:"original_post_url,omitempty"`
|
||||
OriginalPostBody Optional[string] `json:"original_post_body" url:"original_post_body,omitempty"`
|
||||
Reason string `json:"reason" url:"reason,omitempty"`
|
||||
Resolved bool `json:"resolved" url:"resolved,omitempty"`
|
||||
ResolverID Optional[int] `json:"resolver_id" url:"resolver_id,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
}
|
||||
type PostReportForm struct {
|
||||
CreatorID int `json:"creator_id" url:"creator_id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
OriginalPostName string `json:"original_post_name" url:"original_post_name,omitempty"`
|
||||
OriginalPostURL Optional[string] `json:"original_post_url" url:"original_post_url,omitempty"`
|
||||
OriginalPostBody Optional[string] `json:"original_post_body" url:"original_post_body,omitempty"`
|
||||
Reason string `json:"reason" url:"reason,omitempty"`
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/private_message.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type PrivateMessage struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
CreatorID int `json:"creator_id" url:"creator_id,omitempty"`
|
||||
RecipientID int `json:"recipient_id" url:"recipient_id,omitempty"`
|
||||
Content string `json:"content" url:"content,omitempty"`
|
||||
Deleted bool `json:"deleted" url:"deleted,omitempty"`
|
||||
Read bool `json:"read" url:"read,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
ApID string `json:"ap_id" url:"ap_id,omitempty"`
|
||||
Local bool `json:"local" url:"local,omitempty"`
|
||||
}
|
||||
type PrivateMessageInsertForm struct {
|
||||
CreatorID int `json:"creator_id" url:"creator_id,omitempty"`
|
||||
RecipientID int `json:"recipient_id" url:"recipient_id,omitempty"`
|
||||
Content string `json:"content" url:"content,omitempty"`
|
||||
Deleted Optional[bool] `json:"deleted" url:"deleted,omitempty"`
|
||||
Read Optional[bool] `json:"read" url:"read,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
ApID Optional[string] `json:"ap_id" url:"ap_id,omitempty"`
|
||||
Local Optional[bool] `json:"local" url:"local,omitempty"`
|
||||
}
|
||||
type PrivateMessageUpdateForm struct {
|
||||
Content Optional[string] `json:"content" url:"content,omitempty"`
|
||||
Deleted Optional[bool] `json:"deleted" url:"deleted,omitempty"`
|
||||
Read Optional[bool] `json:"read" url:"read,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
ApID Optional[string] `json:"ap_id" url:"ap_id,omitempty"`
|
||||
Local Optional[bool] `json:"local" url:"local,omitempty"`
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
// Source: lemmy/crates/api_common/src/private_message.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type CreatePrivateMessage struct {
|
||||
Content string `json:"content" url:"content,omitempty"`
|
||||
RecipientID int `json:"recipient_id" url:"recipient_id,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type EditPrivateMessage struct {
|
||||
PrivateMessageID int `json:"private_message_id" url:"private_message_id,omitempty"`
|
||||
Content string `json:"content" url:"content,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type DeletePrivateMessage struct {
|
||||
PrivateMessageID int `json:"private_message_id" url:"private_message_id,omitempty"`
|
||||
Deleted bool `json:"deleted" url:"deleted,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type MarkPrivateMessageAsRead struct {
|
||||
PrivateMessageID int `json:"private_message_id" url:"private_message_id,omitempty"`
|
||||
Read bool `json:"read" url:"read,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type GetPrivateMessages struct {
|
||||
UnreadOnly Optional[bool] `json:"unread_only" url:"unread_only,omitempty"`
|
||||
Page Optional[int64] `json:"page" url:"page,omitempty"`
|
||||
Limit Optional[int64] `json:"limit" url:"limit,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type PrivateMessagesResponse struct {
|
||||
PrivateMessages []PrivateMessageView `json:"private_messages" url:"private_messages,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type PrivateMessageResponse struct {
|
||||
PrivateMessageView PrivateMessageView `json:"private_message_view" url:"private_message_view,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type CreatePrivateMessageReport struct {
|
||||
PrivateMessageID int `json:"private_message_id" url:"private_message_id,omitempty"`
|
||||
Reason string `json:"reason" url:"reason,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type PrivateMessageReportResponse struct {
|
||||
PrivateMessageReportView PrivateMessageReportView `json:"private_message_report_view" url:"private_message_report_view,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type ResolvePrivateMessageReport struct {
|
||||
ReportID int `json:"report_id" url:"report_id,omitempty"`
|
||||
Resolved bool `json:"resolved" url:"resolved,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type ListPrivateMessageReports struct {
|
||||
Page Optional[int64] `json:"page" url:"page,omitempty"`
|
||||
Limit Optional[int64] `json:"limit" url:"limit,omitempty"`
|
||||
UnresolvedOnly Optional[bool] `json:"unresolved_only" url:"unresolved_only,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type ListPrivateMessageReportsResponse struct {
|
||||
PrivateMessageReports []PrivateMessageReportView `json:"private_message_reports" url:"private_message_reports,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/private_message_report.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type PrivateMessageReport struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
CreatorID int `json:"creator_id" url:"creator_id,omitempty"`
|
||||
PrivateMessageID int `json:"private_message_id" url:"private_message_id,omitempty"`
|
||||
OriginalPmText string `json:"original_pm_text" url:"original_pm_text,omitempty"`
|
||||
Reason string `json:"reason" url:"reason,omitempty"`
|
||||
Resolved bool `json:"resolved" url:"resolved,omitempty"`
|
||||
ResolverID Optional[int] `json:"resolver_id" url:"resolver_id,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
}
|
||||
type PrivateMessageReportForm struct {
|
||||
CreatorID int `json:"creator_id" url:"creator_id,omitempty"`
|
||||
PrivateMessageID int `json:"private_message_id" url:"private_message_id,omitempty"`
|
||||
OriginalPmText string `json:"original_pm_text" url:"original_pm_text,omitempty"`
|
||||
Reason string `json:"reason" url:"reason,omitempty"`
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/registration_application.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type RegistrationApplication struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
LocalUserID int `json:"local_user_id" url:"local_user_id,omitempty"`
|
||||
Answer string `json:"answer" url:"answer,omitempty"`
|
||||
AdminID Optional[int] `json:"admin_id" url:"admin_id,omitempty"`
|
||||
DenyReason Optional[string] `json:"deny_reason" url:"deny_reason,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
}
|
||||
type RegistrationApplicationInsertForm struct {
|
||||
LocalUserID int `json:"local_user_id" url:"local_user_id,omitempty"`
|
||||
Answer string `json:"answer" url:"answer,omitempty"`
|
||||
}
|
||||
type RegistrationApplicationUpdateForm struct {
|
||||
AdminID Optional[Optional[int]] `json:"admin_id" url:"admin_id,omitempty"`
|
||||
DenyReason Optional[Optional[string]] `json:"deny_reason" url:"deny_reason,omitempty"`
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
// Source: lemmy/crates/api_common/src/request.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
@@ -1,9 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/secret.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type Secret struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
JWTSecret string `json:"jwt_secret" url:"jwt_secret,omitempty"`
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
// Source: lemmy/crates/api_common/src/sensitive.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
@@ -1,48 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/site.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type Site struct {
|
||||
ID int `json:"id" url:"id,omitempty"`
|
||||
Name string `json:"name" url:"name,omitempty"`
|
||||
Sidebar Optional[string] `json:"sidebar" url:"sidebar,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
Icon Optional[string] `json:"icon" url:"icon,omitempty"`
|
||||
Banner Optional[string] `json:"banner" url:"banner,omitempty"`
|
||||
Description Optional[string] `json:"description" url:"description,omitempty"`
|
||||
ActorID string `json:"actor_id" url:"actor_id,omitempty"`
|
||||
LastRefreshedAt LemmyTime `json:"last_refreshed_at" url:"last_refreshed_at,omitempty"`
|
||||
InboxURL string `json:"inbox_url" url:"inbox_url,omitempty"`
|
||||
PrivateKey Optional[string] `json:"private_key" url:"private_key,omitempty"`
|
||||
PublicKey string `json:"public_key" url:"public_key,omitempty"`
|
||||
InstanceID int `json:"instance_id" url:"instance_id,omitempty"`
|
||||
}
|
||||
type SiteInsertForm struct {
|
||||
Name string `json:"name" url:"name,omitempty"`
|
||||
Sidebar Optional[string] `json:"sidebar" url:"sidebar,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
Icon Optional[string] `json:"icon" url:"icon,omitempty"`
|
||||
Banner Optional[string] `json:"banner" url:"banner,omitempty"`
|
||||
Description Optional[string] `json:"description" url:"description,omitempty"`
|
||||
ActorID Optional[string] `json:"actor_id" url:"actor_id,omitempty"`
|
||||
LastRefreshedAt LemmyTime `json:"last_refreshed_at" url:"last_refreshed_at,omitempty"`
|
||||
InboxURL Optional[string] `json:"inbox_url" url:"inbox_url,omitempty"`
|
||||
PrivateKey Optional[string] `json:"private_key" url:"private_key,omitempty"`
|
||||
PublicKey Optional[string] `json:"public_key" url:"public_key,omitempty"`
|
||||
InstanceID int `json:"instance_id" url:"instance_id,omitempty"`
|
||||
}
|
||||
type SiteUpdateForm struct {
|
||||
Name Optional[string] `json:"name" url:"name,omitempty"`
|
||||
Sidebar Optional[Optional[string]] `json:"sidebar" url:"sidebar,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
Icon Optional[Optional[string]] `json:"icon" url:"icon,omitempty"`
|
||||
Banner Optional[Optional[string]] `json:"banner" url:"banner,omitempty"`
|
||||
Description Optional[Optional[string]] `json:"description" url:"description,omitempty"`
|
||||
ActorID Optional[string] `json:"actor_id" url:"actor_id,omitempty"`
|
||||
LastRefreshedAt LemmyTime `json:"last_refreshed_at" url:"last_refreshed_at,omitempty"`
|
||||
InboxURL Optional[string] `json:"inbox_url" url:"inbox_url,omitempty"`
|
||||
PrivateKey Optional[Optional[string]] `json:"private_key" url:"private_key,omitempty"`
|
||||
PublicKey Optional[string] `json:"public_key" url:"public_key,omitempty"`
|
||||
}
|
||||
@@ -1,243 +0,0 @@
|
||||
// Source: lemmy/crates/api_common/src/site.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type Search struct {
|
||||
Q string `json:"q" url:"q,omitempty"`
|
||||
CommunityID Optional[int] `json:"community_id" url:"community_id,omitempty"`
|
||||
CommunityName Optional[string] `json:"community_name" url:"community_name,omitempty"`
|
||||
CreatorID Optional[int] `json:"creator_id" url:"creator_id,omitempty"`
|
||||
Type Optional[SearchType] `json:"type_" url:"type_,omitempty"`
|
||||
Sort Optional[SortType] `json:"sort" url:"sort,omitempty"`
|
||||
ListingType Optional[ListingType] `json:"listing_type" url:"listing_type,omitempty"`
|
||||
Page Optional[int64] `json:"page" url:"page,omitempty"`
|
||||
Limit Optional[int64] `json:"limit" url:"limit,omitempty"`
|
||||
Auth Optional[string] `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type SearchResponse struct {
|
||||
Type SearchType `json:"type_" url:"type_,omitempty"`
|
||||
Comments []CommentView `json:"comments" url:"comments,omitempty"`
|
||||
Posts []PostView `json:"posts" url:"posts,omitempty"`
|
||||
Communities []CommunityView `json:"communities" url:"communities,omitempty"`
|
||||
Users []PersonView `json:"users" url:"users,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type ResolveObject struct {
|
||||
Q string `json:"q" url:"q,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type ResolveObjectResponse struct {
|
||||
Comment Optional[CommentView] `json:"comment" url:"comment,omitempty"`
|
||||
Post Optional[PostView] `json:"post" url:"post,omitempty"`
|
||||
Community Optional[CommunityView] `json:"community" url:"community,omitempty"`
|
||||
Person Optional[PersonView] `json:"person" url:"person,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type GetModlog struct {
|
||||
ModPersonID Optional[int] `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
CommunityID Optional[int] `json:"community_id" url:"community_id,omitempty"`
|
||||
Page Optional[int64] `json:"page" url:"page,omitempty"`
|
||||
Limit Optional[int64] `json:"limit" url:"limit,omitempty"`
|
||||
Type Optional[ModlogActionType] `json:"type_" url:"type_,omitempty"`
|
||||
OtherPersonID Optional[int] `json:"other_person_id" url:"other_person_id,omitempty"`
|
||||
Auth Optional[string] `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type GetModlogResponse struct {
|
||||
RemovedPosts []ModRemovePostView `json:"removed_posts" url:"removed_posts,omitempty"`
|
||||
LockedPosts []ModLockPostView `json:"locked_posts" url:"locked_posts,omitempty"`
|
||||
FeaturedPosts []ModFeaturePostView `json:"featured_posts" url:"featured_posts,omitempty"`
|
||||
RemovedComments []ModRemoveCommentView `json:"removed_comments" url:"removed_comments,omitempty"`
|
||||
RemovedCommunities []ModRemoveCommunityView `json:"removed_communities" url:"removed_communities,omitempty"`
|
||||
BannedFromCommunity []ModBanFromCommunityView `json:"banned_from_community" url:"banned_from_community,omitempty"`
|
||||
Banned []ModBanView `json:"banned" url:"banned,omitempty"`
|
||||
AddedToCommunity []ModAddCommunityView `json:"added_to_community" url:"added_to_community,omitempty"`
|
||||
TransferredToCommunity []ModTransferCommunityView `json:"transferred_to_community" url:"transferred_to_community,omitempty"`
|
||||
Added []ModAddView `json:"added" url:"added,omitempty"`
|
||||
AdminPurgedPersons []AdminPurgePersonView `json:"admin_purged_persons" url:"admin_purged_persons,omitempty"`
|
||||
AdminPurgedCommunities []AdminPurgeCommunityView `json:"admin_purged_communities" url:"admin_purged_communities,omitempty"`
|
||||
AdminPurgedPosts []AdminPurgePostView `json:"admin_purged_posts" url:"admin_purged_posts,omitempty"`
|
||||
AdminPurgedComments []AdminPurgeCommentView `json:"admin_purged_comments" url:"admin_purged_comments,omitempty"`
|
||||
HiddenCommunities []ModHideCommunityView `json:"hidden_communities" url:"hidden_communities,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type CreateSite struct {
|
||||
Name string `json:"name" url:"name,omitempty"`
|
||||
Sidebar Optional[string] `json:"sidebar" url:"sidebar,omitempty"`
|
||||
Description Optional[string] `json:"description" url:"description,omitempty"`
|
||||
Icon Optional[string] `json:"icon" url:"icon,omitempty"`
|
||||
Banner Optional[string] `json:"banner" url:"banner,omitempty"`
|
||||
EnableDownvotes Optional[bool] `json:"enable_downvotes" url:"enable_downvotes,omitempty"`
|
||||
EnableNSFW Optional[bool] `json:"enable_nsfw" url:"enable_nsfw,omitempty"`
|
||||
CommunityCreationAdminOnly Optional[bool] `json:"community_creation_admin_only" url:"community_creation_admin_only,omitempty"`
|
||||
RequireEmailVerification Optional[bool] `json:"require_email_verification" url:"require_email_verification,omitempty"`
|
||||
ApplicationQuestion Optional[string] `json:"application_question" url:"application_question,omitempty"`
|
||||
PrivateInstance Optional[bool] `json:"private_instance" url:"private_instance,omitempty"`
|
||||
DefaultTheme Optional[string] `json:"default_theme" url:"default_theme,omitempty"`
|
||||
DefaultPostListingType Optional[ListingType] `json:"default_post_listing_type" url:"default_post_listing_type,omitempty"`
|
||||
LegalInformation Optional[string] `json:"legal_information" url:"legal_information,omitempty"`
|
||||
ApplicationEmailAdmins Optional[bool] `json:"application_email_admins" url:"application_email_admins,omitempty"`
|
||||
HideModlogModNames Optional[bool] `json:"hide_modlog_mod_names" url:"hide_modlog_mod_names,omitempty"`
|
||||
DiscussionLanguages Optional[[]int] `json:"discussion_languages" url:"discussion_languages,omitempty"`
|
||||
SlurFilterRegex Optional[string] `json:"slur_filter_regex" url:"slur_filter_regex,omitempty"`
|
||||
ActorNameMaxLength Optional[int32] `json:"actor_name_max_length" url:"actor_name_max_length,omitempty"`
|
||||
RateLimitMessage Optional[int32] `json:"rate_limit_message" url:"rate_limit_message,omitempty"`
|
||||
RateLimitMessagePerSecond Optional[int32] `json:"rate_limit_message_per_second" url:"rate_limit_message_per_second,omitempty"`
|
||||
RateLimitPost Optional[int32] `json:"rate_limit_post" url:"rate_limit_post,omitempty"`
|
||||
RateLimitPostPerSecond Optional[int32] `json:"rate_limit_post_per_second" url:"rate_limit_post_per_second,omitempty"`
|
||||
RateLimitRegister Optional[int32] `json:"rate_limit_register" url:"rate_limit_register,omitempty"`
|
||||
RateLimitRegisterPerSecond Optional[int32] `json:"rate_limit_register_per_second" url:"rate_limit_register_per_second,omitempty"`
|
||||
RateLimitImage Optional[int32] `json:"rate_limit_image" url:"rate_limit_image,omitempty"`
|
||||
RateLimitImagePerSecond Optional[int32] `json:"rate_limit_image_per_second" url:"rate_limit_image_per_second,omitempty"`
|
||||
RateLimitComment Optional[int32] `json:"rate_limit_comment" url:"rate_limit_comment,omitempty"`
|
||||
RateLimitCommentPerSecond Optional[int32] `json:"rate_limit_comment_per_second" url:"rate_limit_comment_per_second,omitempty"`
|
||||
RateLimitSearch Optional[int32] `json:"rate_limit_search" url:"rate_limit_search,omitempty"`
|
||||
RateLimitSearchPerSecond Optional[int32] `json:"rate_limit_search_per_second" url:"rate_limit_search_per_second,omitempty"`
|
||||
FederationEnabled Optional[bool] `json:"federation_enabled" url:"federation_enabled,omitempty"`
|
||||
FederationDebug Optional[bool] `json:"federation_debug" url:"federation_debug,omitempty"`
|
||||
FederationWorkerCount Optional[int32] `json:"federation_worker_count" url:"federation_worker_count,omitempty"`
|
||||
CaptchaEnabled Optional[bool] `json:"captcha_enabled" url:"captcha_enabled,omitempty"`
|
||||
CaptchaDifficulty Optional[string] `json:"captcha_difficulty" url:"captcha_difficulty,omitempty"`
|
||||
AllowedInstances Optional[[]string] `json:"allowed_instances" url:"allowed_instances,omitempty"`
|
||||
BlockedInstances Optional[[]string] `json:"blocked_instances" url:"blocked_instances,omitempty"`
|
||||
Taglines Optional[[]string] `json:"taglines" url:"taglines,omitempty"`
|
||||
RegistrationMode Optional[RegistrationMode] `json:"registration_mode" url:"registration_mode,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type EditSite struct {
|
||||
Name Optional[string] `json:"name" url:"name,omitempty"`
|
||||
Sidebar Optional[string] `json:"sidebar" url:"sidebar,omitempty"`
|
||||
Description Optional[string] `json:"description" url:"description,omitempty"`
|
||||
Icon Optional[string] `json:"icon" url:"icon,omitempty"`
|
||||
Banner Optional[string] `json:"banner" url:"banner,omitempty"`
|
||||
EnableDownvotes Optional[bool] `json:"enable_downvotes" url:"enable_downvotes,omitempty"`
|
||||
EnableNSFW Optional[bool] `json:"enable_nsfw" url:"enable_nsfw,omitempty"`
|
||||
CommunityCreationAdminOnly Optional[bool] `json:"community_creation_admin_only" url:"community_creation_admin_only,omitempty"`
|
||||
RequireEmailVerification Optional[bool] `json:"require_email_verification" url:"require_email_verification,omitempty"`
|
||||
ApplicationQuestion Optional[string] `json:"application_question" url:"application_question,omitempty"`
|
||||
PrivateInstance Optional[bool] `json:"private_instance" url:"private_instance,omitempty"`
|
||||
DefaultTheme Optional[string] `json:"default_theme" url:"default_theme,omitempty"`
|
||||
DefaultPostListingType Optional[ListingType] `json:"default_post_listing_type" url:"default_post_listing_type,omitempty"`
|
||||
LegalInformation Optional[string] `json:"legal_information" url:"legal_information,omitempty"`
|
||||
ApplicationEmailAdmins Optional[bool] `json:"application_email_admins" url:"application_email_admins,omitempty"`
|
||||
HideModlogModNames Optional[bool] `json:"hide_modlog_mod_names" url:"hide_modlog_mod_names,omitempty"`
|
||||
DiscussionLanguages Optional[[]int] `json:"discussion_languages" url:"discussion_languages,omitempty"`
|
||||
SlurFilterRegex Optional[string] `json:"slur_filter_regex" url:"slur_filter_regex,omitempty"`
|
||||
ActorNameMaxLength Optional[int32] `json:"actor_name_max_length" url:"actor_name_max_length,omitempty"`
|
||||
RateLimitMessage Optional[int32] `json:"rate_limit_message" url:"rate_limit_message,omitempty"`
|
||||
RateLimitMessagePerSecond Optional[int32] `json:"rate_limit_message_per_second" url:"rate_limit_message_per_second,omitempty"`
|
||||
RateLimitPost Optional[int32] `json:"rate_limit_post" url:"rate_limit_post,omitempty"`
|
||||
RateLimitPostPerSecond Optional[int32] `json:"rate_limit_post_per_second" url:"rate_limit_post_per_second,omitempty"`
|
||||
RateLimitRegister Optional[int32] `json:"rate_limit_register" url:"rate_limit_register,omitempty"`
|
||||
RateLimitRegisterPerSecond Optional[int32] `json:"rate_limit_register_per_second" url:"rate_limit_register_per_second,omitempty"`
|
||||
RateLimitImage Optional[int32] `json:"rate_limit_image" url:"rate_limit_image,omitempty"`
|
||||
RateLimitImagePerSecond Optional[int32] `json:"rate_limit_image_per_second" url:"rate_limit_image_per_second,omitempty"`
|
||||
RateLimitComment Optional[int32] `json:"rate_limit_comment" url:"rate_limit_comment,omitempty"`
|
||||
RateLimitCommentPerSecond Optional[int32] `json:"rate_limit_comment_per_second" url:"rate_limit_comment_per_second,omitempty"`
|
||||
RateLimitSearch Optional[int32] `json:"rate_limit_search" url:"rate_limit_search,omitempty"`
|
||||
RateLimitSearchPerSecond Optional[int32] `json:"rate_limit_search_per_second" url:"rate_limit_search_per_second,omitempty"`
|
||||
FederationEnabled Optional[bool] `json:"federation_enabled" url:"federation_enabled,omitempty"`
|
||||
FederationDebug Optional[bool] `json:"federation_debug" url:"federation_debug,omitempty"`
|
||||
FederationWorkerCount Optional[int32] `json:"federation_worker_count" url:"federation_worker_count,omitempty"`
|
||||
CaptchaEnabled Optional[bool] `json:"captcha_enabled" url:"captcha_enabled,omitempty"`
|
||||
CaptchaDifficulty Optional[string] `json:"captcha_difficulty" url:"captcha_difficulty,omitempty"`
|
||||
AllowedInstances Optional[[]string] `json:"allowed_instances" url:"allowed_instances,omitempty"`
|
||||
BlockedInstances Optional[[]string] `json:"blocked_instances" url:"blocked_instances,omitempty"`
|
||||
Taglines Optional[[]string] `json:"taglines" url:"taglines,omitempty"`
|
||||
RegistrationMode Optional[RegistrationMode] `json:"registration_mode" url:"registration_mode,omitempty"`
|
||||
ReportsEmailAdmins Optional[bool] `json:"reports_email_admins" url:"reports_email_admins,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type GetSite struct {
|
||||
Auth Optional[string] `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type SiteResponse struct {
|
||||
SiteView SiteView `json:"site_view" url:"site_view,omitempty"`
|
||||
Taglines []Tagline `json:"taglines" url:"taglines,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type GetSiteResponse struct {
|
||||
SiteView SiteView `json:"site_view" url:"site_view,omitempty"`
|
||||
Admins []PersonView `json:"admins" url:"admins,omitempty"`
|
||||
Version string `json:"version" url:"version,omitempty"`
|
||||
MyUser Optional[MyUserInfo] `json:"my_user" url:"my_user,omitempty"`
|
||||
AllLanguages []Language `json:"all_languages" url:"all_languages,omitempty"`
|
||||
DiscussionLanguages []int `json:"discussion_languages" url:"discussion_languages,omitempty"`
|
||||
Taglines []Tagline `json:"taglines" url:"taglines,omitempty"`
|
||||
CustomEmojis []CustomEmojiView `json:"custom_emojis" url:"custom_emojis,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type GetFederatedInstances struct {
|
||||
Auth Optional[string] `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type GetFederatedInstancesResponse struct {
|
||||
FederatedInstances Optional[FederatedInstances] `json:"federated_instances" url:"federated_instances,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type MyUserInfo struct {
|
||||
LocalUserView LocalUserView `json:"local_user_view" url:"local_user_view,omitempty"`
|
||||
Follows []CommunityFollowerView `json:"follows" url:"follows,omitempty"`
|
||||
Moderates []CommunityModeratorView `json:"moderates" url:"moderates,omitempty"`
|
||||
CommunityBlocks []CommunityBlockView `json:"community_blocks" url:"community_blocks,omitempty"`
|
||||
PersonBlocks []PersonBlockView `json:"person_blocks" url:"person_blocks,omitempty"`
|
||||
DiscussionLanguages []int `json:"discussion_languages" url:"discussion_languages,omitempty"`
|
||||
}
|
||||
type LeaveAdmin struct {
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type FederatedInstances struct {
|
||||
Linked []Instance `json:"linked" url:"linked,omitempty"`
|
||||
Allowed []Instance `json:"allowed" url:"allowed,omitempty"`
|
||||
Blocked []Instance `json:"blocked" url:"blocked,omitempty"`
|
||||
}
|
||||
type PurgePerson struct {
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type PurgeCommunity struct {
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type PurgePost struct {
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type PurgeComment struct {
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
Reason Optional[string] `json:"reason" url:"reason,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type PurgeItemResponse struct {
|
||||
Success bool `json:"success" url:"success,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type ListRegistrationApplications struct {
|
||||
UnreadOnly Optional[bool] `json:"unread_only" url:"unread_only,omitempty"`
|
||||
Page Optional[int64] `json:"page" url:"page,omitempty"`
|
||||
Limit Optional[int64] `json:"limit" url:"limit,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type ListRegistrationApplicationsResponse struct {
|
||||
RegistrationApplications []RegistrationApplicationView `json:"registration_applications" url:"registration_applications,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type ApproveRegistrationApplication struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
Approve bool `json:"approve" url:"approve,omitempty"`
|
||||
DenyReason Optional[string] `json:"deny_reason" url:"deny_reason,omitempty"`
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type RegistrationApplicationResponse struct {
|
||||
RegistrationApplication RegistrationApplicationView `json:"registration_application" url:"registration_application,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
type GetUnreadRegistrationApplicationCount struct {
|
||||
Auth string `json:"auth" url:"auth,omitempty"`
|
||||
}
|
||||
type GetUnreadRegistrationApplicationCountResponse struct {
|
||||
RegistrationApplications int64 `json:"registration_applications" url:"registration_applications,omitempty"`
|
||||
LemmyResponse
|
||||
}
|
||||
@@ -1,86 +0,0 @@
|
||||
// Source: lemmy/crates/db_views/src/structs.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type CommentReportView struct {
|
||||
CommentReport CommentReport `json:"comment_report" url:"comment_report,omitempty"`
|
||||
Comment Comment `json:"comment" url:"comment,omitempty"`
|
||||
Post Post `json:"post" url:"post,omitempty"`
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
Creator Person `json:"creator" url:"creator,omitempty"`
|
||||
CommentCreator Person `json:"comment_creator" url:"comment_creator,omitempty"`
|
||||
Counts CommentAggregates `json:"counts" url:"counts,omitempty"`
|
||||
CreatorBannedFromCommunity bool `json:"creator_banned_from_community" url:"creator_banned_from_community,omitempty"`
|
||||
MyVote Optional[int16] `json:"my_vote" url:"my_vote,omitempty"`
|
||||
Resolver Optional[Person] `json:"resolver" url:"resolver,omitempty"`
|
||||
}
|
||||
type CommentView struct {
|
||||
Comment Comment `json:"comment" url:"comment,omitempty"`
|
||||
Creator Person `json:"creator" url:"creator,omitempty"`
|
||||
Post Post `json:"post" url:"post,omitempty"`
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
Counts CommentAggregates `json:"counts" url:"counts,omitempty"`
|
||||
CreatorBannedFromCommunity bool `json:"creator_banned_from_community" url:"creator_banned_from_community,omitempty"`
|
||||
Subscribed SubscribedType `json:"subscribed" url:"subscribed,omitempty"`
|
||||
Saved bool `json:"saved" url:"saved,omitempty"`
|
||||
CreatorBlocked bool `json:"creator_blocked" url:"creator_blocked,omitempty"`
|
||||
MyVote Optional[int16] `json:"my_vote" url:"my_vote,omitempty"`
|
||||
}
|
||||
type LocalUserView struct {
|
||||
LocalUser LocalUser `json:"local_user" url:"local_user,omitempty"`
|
||||
Person Person `json:"person" url:"person,omitempty"`
|
||||
Counts PersonAggregates `json:"counts" url:"counts,omitempty"`
|
||||
}
|
||||
type PostReportView struct {
|
||||
PostReport PostReport `json:"post_report" url:"post_report,omitempty"`
|
||||
Post Post `json:"post" url:"post,omitempty"`
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
Creator Person `json:"creator" url:"creator,omitempty"`
|
||||
PostCreator Person `json:"post_creator" url:"post_creator,omitempty"`
|
||||
CreatorBannedFromCommunity bool `json:"creator_banned_from_community" url:"creator_banned_from_community,omitempty"`
|
||||
MyVote Optional[int16] `json:"my_vote" url:"my_vote,omitempty"`
|
||||
Counts PostAggregates `json:"counts" url:"counts,omitempty"`
|
||||
Resolver Optional[Person] `json:"resolver" url:"resolver,omitempty"`
|
||||
}
|
||||
type PostView struct {
|
||||
Post Post `json:"post" url:"post,omitempty"`
|
||||
Creator Person `json:"creator" url:"creator,omitempty"`
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
CreatorBannedFromCommunity bool `json:"creator_banned_from_community" url:"creator_banned_from_community,omitempty"`
|
||||
Counts PostAggregates `json:"counts" url:"counts,omitempty"`
|
||||
Subscribed SubscribedType `json:"subscribed" url:"subscribed,omitempty"`
|
||||
Saved bool `json:"saved" url:"saved,omitempty"`
|
||||
Read bool `json:"read" url:"read,omitempty"`
|
||||
CreatorBlocked bool `json:"creator_blocked" url:"creator_blocked,omitempty"`
|
||||
MyVote Optional[int16] `json:"my_vote" url:"my_vote,omitempty"`
|
||||
UnreadComments int64 `json:"unread_comments" url:"unread_comments,omitempty"`
|
||||
}
|
||||
type PrivateMessageView struct {
|
||||
PrivateMessage PrivateMessage `json:"private_message" url:"private_message,omitempty"`
|
||||
Creator Person `json:"creator" url:"creator,omitempty"`
|
||||
Recipient Person `json:"recipient" url:"recipient,omitempty"`
|
||||
}
|
||||
type PrivateMessageReportView struct {
|
||||
PrivateMessageReport PrivateMessageReport `json:"private_message_report" url:"private_message_report,omitempty"`
|
||||
PrivateMessage PrivateMessage `json:"private_message" url:"private_message,omitempty"`
|
||||
PrivateMessageCreator Person `json:"private_message_creator" url:"private_message_creator,omitempty"`
|
||||
Creator Person `json:"creator" url:"creator,omitempty"`
|
||||
Resolver Optional[Person] `json:"resolver" url:"resolver,omitempty"`
|
||||
}
|
||||
type RegistrationApplicationView struct {
|
||||
RegistrationApplication RegistrationApplication `json:"registration_application" url:"registration_application,omitempty"`
|
||||
CreatorLocalUser LocalUser `json:"creator_local_user" url:"creator_local_user,omitempty"`
|
||||
Creator Person `json:"creator" url:"creator,omitempty"`
|
||||
Admin Optional[Person] `json:"admin" url:"admin,omitempty"`
|
||||
}
|
||||
type SiteView struct {
|
||||
Site Site `json:"site" url:"site,omitempty"`
|
||||
LocalSite LocalSite `json:"local_site" url:"local_site,omitempty"`
|
||||
LocalSiteRateLimit LocalSiteRateLimit `json:"local_site_rate_limit" url:"local_site_rate_limit,omitempty"`
|
||||
Counts SiteAggregates `json:"counts" url:"counts,omitempty"`
|
||||
}
|
||||
type CustomEmojiView struct {
|
||||
CustomEmoji CustomEmoji `json:"custom_emoji" url:"custom_emoji,omitempty"`
|
||||
Keywords []CustomEmojiKeyword `json:"keywords" url:"keywords,omitempty"`
|
||||
}
|
||||
@@ -1,95 +0,0 @@
|
||||
// Source: lemmy/crates/db_views_moderator/src/structs.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type ModAddCommunityView struct {
|
||||
ModAddCommunity ModAddCommunity `json:"mod_add_community" url:"mod_add_community,omitempty"`
|
||||
Moderator Optional[Person] `json:"moderator" url:"moderator,omitempty"`
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
ModdedPerson Person `json:"modded_person" url:"modded_person,omitempty"`
|
||||
}
|
||||
type ModAddView struct {
|
||||
ModAdd ModAdd `json:"mod_add" url:"mod_add,omitempty"`
|
||||
Moderator Optional[Person] `json:"moderator" url:"moderator,omitempty"`
|
||||
ModdedPerson Person `json:"modded_person" url:"modded_person,omitempty"`
|
||||
}
|
||||
type ModBanFromCommunityView struct {
|
||||
ModBanFromCommunity ModBanFromCommunity `json:"mod_ban_from_community" url:"mod_ban_from_community,omitempty"`
|
||||
Moderator Optional[Person] `json:"moderator" url:"moderator,omitempty"`
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
BannedPerson Person `json:"banned_person" url:"banned_person,omitempty"`
|
||||
}
|
||||
type ModBanView struct {
|
||||
ModBan ModBan `json:"mod_ban" url:"mod_ban,omitempty"`
|
||||
Moderator Optional[Person] `json:"moderator" url:"moderator,omitempty"`
|
||||
BannedPerson Person `json:"banned_person" url:"banned_person,omitempty"`
|
||||
}
|
||||
type ModHideCommunityView struct {
|
||||
ModHideCommunity ModHideCommunity `json:"mod_hide_community" url:"mod_hide_community,omitempty"`
|
||||
Admin Optional[Person] `json:"admin" url:"admin,omitempty"`
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
}
|
||||
type ModLockPostView struct {
|
||||
ModLockPost ModLockPost `json:"mod_lock_post" url:"mod_lock_post,omitempty"`
|
||||
Moderator Optional[Person] `json:"moderator" url:"moderator,omitempty"`
|
||||
Post Post `json:"post" url:"post,omitempty"`
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
}
|
||||
type ModRemoveCommentView struct {
|
||||
ModRemoveComment ModRemoveComment `json:"mod_remove_comment" url:"mod_remove_comment,omitempty"`
|
||||
Moderator Optional[Person] `json:"moderator" url:"moderator,omitempty"`
|
||||
Comment Comment `json:"comment" url:"comment,omitempty"`
|
||||
Commenter Person `json:"commenter" url:"commenter,omitempty"`
|
||||
Post Post `json:"post" url:"post,omitempty"`
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
}
|
||||
type ModRemoveCommunityView struct {
|
||||
ModRemoveCommunity ModRemoveCommunity `json:"mod_remove_community" url:"mod_remove_community,omitempty"`
|
||||
Moderator Optional[Person] `json:"moderator" url:"moderator,omitempty"`
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
}
|
||||
type ModRemovePostView struct {
|
||||
ModRemovePost ModRemovePost `json:"mod_remove_post" url:"mod_remove_post,omitempty"`
|
||||
Moderator Optional[Person] `json:"moderator" url:"moderator,omitempty"`
|
||||
Post Post `json:"post" url:"post,omitempty"`
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
}
|
||||
type ModFeaturePostView struct {
|
||||
ModFeaturePost ModFeaturePost `json:"mod_feature_post" url:"mod_feature_post,omitempty"`
|
||||
Moderator Optional[Person] `json:"moderator" url:"moderator,omitempty"`
|
||||
Post Post `json:"post" url:"post,omitempty"`
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
}
|
||||
type ModTransferCommunityView struct {
|
||||
ModTransferCommunity ModTransferCommunity `json:"mod_transfer_community" url:"mod_transfer_community,omitempty"`
|
||||
Moderator Optional[Person] `json:"moderator" url:"moderator,omitempty"`
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
ModdedPerson Person `json:"modded_person" url:"modded_person,omitempty"`
|
||||
}
|
||||
type AdminPurgeCommentView struct {
|
||||
AdminPurgeComment AdminPurgeComment `json:"admin_purge_comment" url:"admin_purge_comment,omitempty"`
|
||||
Admin Optional[Person] `json:"admin" url:"admin,omitempty"`
|
||||
Post Post `json:"post" url:"post,omitempty"`
|
||||
}
|
||||
type AdminPurgeCommunityView struct {
|
||||
AdminPurgeCommunity AdminPurgeCommunity `json:"admin_purge_community" url:"admin_purge_community,omitempty"`
|
||||
Admin Optional[Person] `json:"admin" url:"admin,omitempty"`
|
||||
}
|
||||
type AdminPurgePersonView struct {
|
||||
AdminPurgePerson AdminPurgePerson `json:"admin_purge_person" url:"admin_purge_person,omitempty"`
|
||||
Admin Optional[Person] `json:"admin" url:"admin,omitempty"`
|
||||
}
|
||||
type AdminPurgePostView struct {
|
||||
AdminPurgePost AdminPurgePost `json:"admin_purge_post" url:"admin_purge_post,omitempty"`
|
||||
Admin Optional[Person] `json:"admin" url:"admin,omitempty"`
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
}
|
||||
type ModlogListParams struct {
|
||||
CommunityID Optional[int] `json:"community_id" url:"community_id,omitempty"`
|
||||
ModPersonID Optional[int] `json:"mod_person_id" url:"mod_person_id,omitempty"`
|
||||
OtherPersonID Optional[int] `json:"other_person_id" url:"other_person_id,omitempty"`
|
||||
Page Optional[int64] `json:"page" url:"page,omitempty"`
|
||||
Limit Optional[int64] `json:"limit" url:"limit,omitempty"`
|
||||
HideModlogNames bool `json:"hide_modlog_names" url:"hide_modlog_names,omitempty"`
|
||||
}
|
||||
@@ -1,76 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/aggregates/structs.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type CommentAggregates struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
CommentID int `json:"comment_id" url:"comment_id,omitempty"`
|
||||
Score int64 `json:"score" url:"score,omitempty"`
|
||||
Upvotes int64 `json:"upvotes" url:"upvotes,omitempty"`
|
||||
Downvotes int64 `json:"downvotes" url:"downvotes,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
ChildCount int32 `json:"child_count" url:"child_count,omitempty"`
|
||||
HotRank int32 `json:"hot_rank" url:"hot_rank,omitempty"`
|
||||
}
|
||||
type CommunityAggregates struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
CommunityID int `json:"community_id" url:"community_id,omitempty"`
|
||||
Subscribers int64 `json:"subscribers" url:"subscribers,omitempty"`
|
||||
Posts int64 `json:"posts" url:"posts,omitempty"`
|
||||
Comments int64 `json:"comments" url:"comments,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
UsersActiveDay int64 `json:"users_active_day" url:"users_active_day,omitempty"`
|
||||
UsersActiveWeek int64 `json:"users_active_week" url:"users_active_week,omitempty"`
|
||||
UsersActiveMonth int64 `json:"users_active_month" url:"users_active_month,omitempty"`
|
||||
UsersActiveHalfYear int64 `json:"users_active_half_year" url:"users_active_half_year,omitempty"`
|
||||
HotRank int32 `json:"hot_rank" url:"hot_rank,omitempty"`
|
||||
}
|
||||
type PersonAggregates struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
PostCount int64 `json:"post_count" url:"post_count,omitempty"`
|
||||
PostScore int64 `json:"post_score" url:"post_score,omitempty"`
|
||||
CommentCount int64 `json:"comment_count" url:"comment_count,omitempty"`
|
||||
CommentScore int64 `json:"comment_score" url:"comment_score,omitempty"`
|
||||
}
|
||||
type PostAggregates struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
Comments int64 `json:"comments" url:"comments,omitempty"`
|
||||
Score int64 `json:"score" url:"score,omitempty"`
|
||||
Upvotes int64 `json:"upvotes" url:"upvotes,omitempty"`
|
||||
Downvotes int64 `json:"downvotes" url:"downvotes,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
NewestCommentTimeNecro LemmyTime `json:"newest_comment_time_necro" url:"newest_comment_time_necro,omitempty"`
|
||||
NewestCommentTime LemmyTime `json:"newest_comment_time" url:"newest_comment_time,omitempty"`
|
||||
FeaturedCommunity bool `json:"featured_community" url:"featured_community,omitempty"`
|
||||
FeaturedLocal bool `json:"featured_local" url:"featured_local,omitempty"`
|
||||
HotRank int32 `json:"hot_rank" url:"hot_rank,omitempty"`
|
||||
HotRankActive int32 `json:"hot_rank_active" url:"hot_rank_active,omitempty"`
|
||||
}
|
||||
type PersonPostAggregates struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
ReadComments int64 `json:"read_comments" url:"read_comments,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
}
|
||||
type PersonPostAggregatesForm struct {
|
||||
PersonID int `json:"person_id" url:"person_id,omitempty"`
|
||||
PostID int `json:"post_id" url:"post_id,omitempty"`
|
||||
ReadComments int64 `json:"read_comments" url:"read_comments,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
}
|
||||
type SiteAggregates struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
SiteID int `json:"site_id" url:"site_id,omitempty"`
|
||||
Users int64 `json:"users" url:"users,omitempty"`
|
||||
Posts int64 `json:"posts" url:"posts,omitempty"`
|
||||
Comments int64 `json:"comments" url:"comments,omitempty"`
|
||||
Communities int64 `json:"communities" url:"communities,omitempty"`
|
||||
UsersActiveDay int64 `json:"users_active_day" url:"users_active_day,omitempty"`
|
||||
UsersActiveWeek int64 `json:"users_active_week" url:"users_active_week,omitempty"`
|
||||
UsersActiveMonth int64 `json:"users_active_month" url:"users_active_month,omitempty"`
|
||||
UsersActiveHalfYear int64 `json:"users_active_half_year" url:"users_active_half_year,omitempty"`
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
// Source: lemmy/crates/db_views_actor/src/structs.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type CommunityBlockView struct {
|
||||
Person Person `json:"person" url:"person,omitempty"`
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
}
|
||||
type CommunityFollowerView struct {
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
Follower Person `json:"follower" url:"follower,omitempty"`
|
||||
}
|
||||
type CommunityModeratorView struct {
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
Moderator Person `json:"moderator" url:"moderator,omitempty"`
|
||||
}
|
||||
type CommunityPersonBanView struct {
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
Person Person `json:"person" url:"person,omitempty"`
|
||||
}
|
||||
type CommunityView struct {
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
Subscribed SubscribedType `json:"subscribed" url:"subscribed,omitempty"`
|
||||
Blocked bool `json:"blocked" url:"blocked,omitempty"`
|
||||
Counts CommunityAggregates `json:"counts" url:"counts,omitempty"`
|
||||
}
|
||||
type PersonBlockView struct {
|
||||
Person Person `json:"person" url:"person,omitempty"`
|
||||
Target Person `json:"target" url:"target,omitempty"`
|
||||
}
|
||||
type PersonMentionView struct {
|
||||
PersonMention PersonMention `json:"person_mention" url:"person_mention,omitempty"`
|
||||
Comment Comment `json:"comment" url:"comment,omitempty"`
|
||||
Creator Person `json:"creator" url:"creator,omitempty"`
|
||||
Post Post `json:"post" url:"post,omitempty"`
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
Recipient Person `json:"recipient" url:"recipient,omitempty"`
|
||||
Counts CommentAggregates `json:"counts" url:"counts,omitempty"`
|
||||
CreatorBannedFromCommunity bool `json:"creator_banned_from_community" url:"creator_banned_from_community,omitempty"`
|
||||
Subscribed SubscribedType `json:"subscribed" url:"subscribed,omitempty"`
|
||||
Saved bool `json:"saved" url:"saved,omitempty"`
|
||||
CreatorBlocked bool `json:"creator_blocked" url:"creator_blocked,omitempty"`
|
||||
MyVote Optional[int16] `json:"my_vote" url:"my_vote,omitempty"`
|
||||
}
|
||||
type CommentReplyView struct {
|
||||
CommentReply CommentReply `json:"comment_reply" url:"comment_reply,omitempty"`
|
||||
Comment Comment `json:"comment" url:"comment,omitempty"`
|
||||
Creator Person `json:"creator" url:"creator,omitempty"`
|
||||
Post Post `json:"post" url:"post,omitempty"`
|
||||
Community Community `json:"community" url:"community,omitempty"`
|
||||
Recipient Person `json:"recipient" url:"recipient,omitempty"`
|
||||
Counts CommentAggregates `json:"counts" url:"counts,omitempty"`
|
||||
CreatorBannedFromCommunity bool `json:"creator_banned_from_community" url:"creator_banned_from_community,omitempty"`
|
||||
Subscribed SubscribedType `json:"subscribed" url:"subscribed,omitempty"`
|
||||
Saved bool `json:"saved" url:"saved,omitempty"`
|
||||
CreatorBlocked bool `json:"creator_blocked" url:"creator_blocked,omitempty"`
|
||||
MyVote Optional[int16] `json:"my_vote" url:"my_vote,omitempty"`
|
||||
}
|
||||
type PersonView struct {
|
||||
Person Person `json:"person" url:"person,omitempty"`
|
||||
Counts PersonAggregates `json:"counts" url:"counts,omitempty"`
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
// Source: lemmy/crates/db_schema/src/source/tagline.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type Tagline struct {
|
||||
ID int32 `json:"id" url:"id,omitempty"`
|
||||
LocalSiteID int `json:"local_site_id" url:"local_site_id,omitempty"`
|
||||
Content string `json:"content" url:"content,omitempty"`
|
||||
Published LemmyTime `json:"published" url:"published,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
}
|
||||
type TaglineForm struct {
|
||||
LocalSiteID int `json:"local_site_id" url:"local_site_id,omitempty"`
|
||||
Content string `json:"content" url:"content,omitempty"`
|
||||
Updated LemmyTime `json:"updated" url:"updated,omitempty"`
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
type LemmyResponse struct {
|
||||
Error Optional[string] `json:"error" url:"error,omitempty"`
|
||||
}
|
||||
|
||||
type HTTPError struct {
|
||||
Code int
|
||||
}
|
||||
|
||||
func (he HTTPError) Error() string {
|
||||
return fmt.Sprintf("%d %s", he.Code, http.StatusText(he.Code))
|
||||
}
|
||||
|
||||
type LemmyError struct {
|
||||
ErrStr string
|
||||
Code int
|
||||
}
|
||||
|
||||
func (le LemmyError) Error() string {
|
||||
return fmt.Sprintf("%d %s: %s", le.Code, http.StatusText(le.Code), le.ErrStr)
|
||||
}
|
||||
|
||||
type LemmyTime struct {
|
||||
time.Time
|
||||
}
|
||||
|
||||
func (lt *LemmyTime) UnmarshalJSON(b []byte) error {
|
||||
var timeStr string
|
||||
err := json.Unmarshal(b, &timeStr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if timeStr == "" {
|
||||
lt.Time = time.Unix(0, 0)
|
||||
return nil
|
||||
}
|
||||
|
||||
t, err := time.Parse("2006-01-02T15:04:05", timeStr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
lt.Time = t
|
||||
return nil
|
||||
}
|
||||
|
||||
type LemmyWebSocketMsg struct {
|
||||
Op string `json:"op"`
|
||||
Data json.RawMessage `json:"data"`
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// Source: lemmy/crates/api_common/src/utils.rs
|
||||
// Code generated by go.elara.ws/go-lemmy/cmd/gen (struct generator). DO NOT EDIT.
|
||||
|
||||
package types
|
||||
|
||||
type EndpointType string
|
||||
|
||||
const (
|
||||
EndpointTypeCommunity EndpointType = "Community"
|
||||
EndpointTypePerson EndpointType = "Person"
|
||||
EndpointTypePost EndpointType = "Post"
|
||||
EndpointTypeComment EndpointType = "Comment"
|
||||
EndpointTypePrivateMessage EndpointType = "PrivateMessage"
|
||||
)
|
||||
Reference in New Issue
Block a user