module
0.0.0-20250212150013-a45d15d13afb
Repository: https://github.com/dennis-dko/go-toolkit.git
Documentation: pkg.go.dev
# README
Go-Toolkit
Go-Toolkit is a collection of tools, it's common to use it with the echo framework:
- Build up database (Postgres / MongoDB) with migrations
- Start an echo server with env files (.env.local / env.secrets.local)
- Configure the acl based on rbac and get access via basic auth
- Use helper functions for parsing date / time, nested xml to struct or nullsql datatypes
- Use the env handler to load env values for your config
- Use the http handler to send an request and handle the response via REST
- Use the error handler as middleware in echo with predefined generic errors which mapped to status codes
- Use extended logging (debug / info / warn / error) also the provided middlewares in echo to log request or dump the body
- Use the recover handler as middleware in echo to recover by panic
- Use the secure handler as middleware in echo to provide content security policy and security headers
- Use the test handler to create a cotnext with a valid value for testing
- Use tracing (opentelemetry) for monitoring with tools like jaeger
- Use the util functions to create a tls config, increase retries, stringify a map or create a uuid
- Use the validation as middleware in echo to validate via extended tags (depends_on / depends_one_of)
Install
go get github.com/dennis-dko/go-toolkit
Usage
Parse nested xml to struct
package main
import (
"fmt"
"github.com/dennis-dko/go-toolkit/datatype"
)
type ParseStruct struct {
XMLName string `json:"-" nxml:"//users/user"`
FirstName string `nxml:"//user/@firstName" json:"first_name"`
LastName string `nxml:"//user/@lastName" json:"last_name"`
Age uint8 `nxml:"//user/@age" json:"age"`
Gender string `nxml:"//user/@gender" json:"gender"`
Company string `nxml:"//user/@company" json:"company"`
Email string `nxml:"//user/postal/street/email" json:"email"`
Pet string `nxml:"//user/postal/street/animal/@pet" json:"pet"`
Street string `nxml:"//user/postal/street/@address" json:"street"`
PostalCode int `nxml:"//user/postal/@code" json:"postal_code"`
}
func main() {
var parseStructList []ParseStruct
xml := []byte(`<users count="2"><user firstName="Walter" lastName="White" age="50" gender="male" company="T"><postal code="91764"><street address="Villa Gaeta"><email>[email protected]</email><animal pet="cat"></animal></street></postal></user><user firstName="James" lastName="McGill" age="45" gender="male" company="S"><postal code="65782"><street address="Saul Street"><email>[email protected]</email><animal pet="dog"></animal></street></postal></user></users>`)
err := datatype.ParseXMLToStruct(string(xml), &parseStructList)
if err != nil {
panic(err)
}
fmt.Printf("%+v\n", parseStructList)
}
For more details check out the test files or the _example directory.
License
MIT license.
Info
Create migrations like this:
https://github.com/golang-migrate/migrate/tree/master/database/postgres
Note: only available for postgres
# Packages
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author