package tools import ( "log" "github.com/gofiber/fiber/v2" _ "github.com/mattn/go-sqlite3" "github.com/jmoiron/sqlx" "github.com/go-playground/validator/v10" ) func SelectJson[T any](db *sqlx.DB, c *fiber.Ctx, err error, sql string, args ...interface{}) error { if(err != nil) { log.Fatalln(err) } var result []T err = db.Select(&result, sql, args...) if(err != nil) { log.Fatalln(err); } return c.JSON(&result); } func GetJson[T any](db *sqlx.DB, c *fiber.Ctx, err error, sql string, args ...interface{}) error { if(err != nil) { log.Fatalln(err) } var result T err = db.Get(&result, sql, args...) if(err != nil) { log.Fatalln(err); } return c.JSON(&result); } func GetThing[T any](c *fiber.Ctx) (*T, error) { var result *T result = new(T) if err := c.BodyParser(result); err != nil { log.Println(err); return result, err } var validate *validator.Validate validate = validator.New(validator.WithRequiredStructEnabled()) if err := validate.Struct(result); err != nil { validationErrors := err.(validator.ValidationErrors) log.Println(validationErrors) return result, err } return result, nil }