forked from ebhomengo/niki
fix: rebase
This commit is contained in:
parent
620db23582
commit
4185ef594b
|
@ -16,7 +16,7 @@ import (
|
|||
// @Param Request body adminserviceparam.LoginWithPhoneNumberRequest true "Admin login request body"
|
||||
// @Success 200 {object} adminserviceparam.LoginWithPhoneNumberResponse
|
||||
// @Failure 400 {string} "Bad request"
|
||||
// @Router /admins/login-by-phone [post]
|
||||
// @Router /admins/login-by-phone [post].
|
||||
func (h Handler) LoginByPhoneNumber(c echo.Context) error {
|
||||
var req adminserviceparam.LoginWithPhoneNumberRequest
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ import (
|
|||
// @Success 200 {object} adminserviceparam.RegisterResponse
|
||||
// @Failure 400 {string} "Bad request"
|
||||
// @Security AuthBearerAdmin
|
||||
// @Router /admins/register [post]
|
||||
// @Router /admins/register [post].
|
||||
func (h Handler) Register(c echo.Context) error {
|
||||
var req adminserviceparam.RegisterRequest
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ import (
|
|||
// @Success 200 {object} param.KindBoxReqAcceptResponse
|
||||
// @Failure 400 {string} "Bad request"
|
||||
// @Security AuthBearerAdmin
|
||||
// @Router /admin/kindboxreqs/accept-kind-box-req/{id} [patch]
|
||||
// @Router /admin/kindboxreqs/accept-kind-box-req/{id} [patch].
|
||||
func (h Handler) Accept(c echo.Context) error {
|
||||
var req param.KindBoxReqAcceptRequest
|
||||
if bErr := c.Bind(&req); bErr != nil {
|
||||
|
|
|
@ -20,7 +20,7 @@ import (
|
|||
// @Success 200 {object} param.AssignSenderResponse
|
||||
// @Failure 400 {string} "Bad request"
|
||||
// @Security AuthBearerAdmin
|
||||
// @Router /admin/kindboxreqs/assign-sender-agent/{id} [patch]
|
||||
// @Router /admin/kindboxreqs/assign-sender-agent/{id} [patch].
|
||||
func (h Handler) AssignSenderAgent(c echo.Context) error {
|
||||
var req param.AssignSenderRequest
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ import (
|
|||
// @Success 200 {object} param.DeliverKindBoxReqResponse
|
||||
// @Failure 400 {string} "Bad request"
|
||||
// @Security AuthBearerAdmin
|
||||
// @Router /admin/kindboxreqs/deliver-kind-box-req/{id} [patch]
|
||||
// @Router /admin/kindboxreqs/deliver-kind-box-req/{id} [patch].
|
||||
func (h Handler) Deliver(c echo.Context) error {
|
||||
var req param.DeliverKindBoxReqRequest
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ import (
|
|||
// @Success 200 {object} param.KindBoxReqGetAllResponse
|
||||
// @Failure 400 {string} "Bad request"
|
||||
// @Security AuthBearerAdmin
|
||||
// @Router /admin/kindboxreqs [get]
|
||||
// @Router /admin/kindboxreqs [get].
|
||||
func (h Handler) GetAll(c echo.Context) error {
|
||||
var req param.KindBoxReqGetAllRequest
|
||||
if bErr := c.Bind(&req); bErr != nil {
|
||||
|
|
|
@ -20,7 +20,7 @@ import (
|
|||
// @Success 200 {object} param.KindBoxReqRejectResponse
|
||||
// @Failure 400 {string} "Bad request"
|
||||
// @Security AuthBearerAdmin
|
||||
// @Router /admin/kindboxreqs/reject-kind-box-req/{id} [patch]
|
||||
// @Router /admin/kindboxreqs/reject-kind-box-req/{id} [patch].
|
||||
func (h Handler) Reject(c echo.Context) error {
|
||||
var req param.KindBoxReqRejectRequest
|
||||
if bErr := c.Bind(&req); bErr != nil {
|
||||
|
|
|
@ -10,6 +10,7 @@ func (h Handler) SetRoutes(e *echo.Echo) {
|
|||
r := e.Group("/admin/kindboxreqs")
|
||||
|
||||
r.Use(middleware.Auth(h.authSvc, h.authConfig))
|
||||
r.POST("", h.AddKindBoxReq, middleware.AdminAuthorization(h.adminAuthorizeSvc, entity.AdminKindBoxReqAddPermission))
|
||||
r.PATCH("/accept-kind-box-req/:id", h.Accept, middleware.AdminAuthorization(h.adminAuthorizeSvc, entity.AdminKindBoxReqAcceptPermission))
|
||||
r.PATCH("/reject-kind-box-req/:id", h.Reject, middleware.AdminAuthorization(h.adminAuthorizeSvc, entity.AdminKindBoxReqRejectPermission))
|
||||
r.PATCH("/deliver-kind-box-req/:id", h.Deliver, middleware.AdminAuthorization(h.adminAuthorizeSvc, entity.AdminKindBoxReqDeliverPermission))
|
||||
|
|
|
@ -19,7 +19,7 @@ import (
|
|||
// @Success 201 {object} param.BenefactorAddAddressResponse
|
||||
// @Failure 400 {string} "Bad request"
|
||||
// @Security AuthBearerBenefactor
|
||||
// @Router /address/ [post]
|
||||
// @Router /address/ [post].
|
||||
func (h Handler) AddAddress(c echo.Context) error {
|
||||
req := param.BenefactorAddAddressRequest{}
|
||||
if bErr := c.Bind(&req); bErr != nil {
|
||||
|
|
|
@ -18,7 +18,7 @@ import (
|
|||
// @Success 200 {object} param.GetAddressResponse
|
||||
// @Failure 400 {string} "Bad request"
|
||||
// @Security AuthBearerBenefactor
|
||||
// @Router /address/{id} [get]
|
||||
// @Router /address/{id} [get].
|
||||
func (h Handler) GetAddress(c echo.Context) error {
|
||||
var req param.GetAddressRequest
|
||||
if bErr := echo.PathParamsBinder(c).Uint("id", &req.AddressID).BindError(); bErr != nil {
|
||||
|
|
|
@ -17,7 +17,7 @@ import (
|
|||
// @Success 200 {object} param.GetAllAddressesResponse
|
||||
// @Failure 400 {string} "Bad request"
|
||||
// @Security AuthBearerBenefactor
|
||||
// @Router /address/ [get]
|
||||
// @Router /address/ [get].
|
||||
func (h Handler) GetAddresses(c echo.Context) error {
|
||||
var req param.GetAllAddressesRequest
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ import (
|
|||
// @Produce json
|
||||
// @Success 200 {object} addressparam.GetAllCitiesResponse
|
||||
// @Failure 400 {string} "Bad request"
|
||||
// @Router /address/cities [get]
|
||||
// @Router /address/cities [get].
|
||||
func (h Handler) GetAllCities(c echo.Context) error {
|
||||
var req addressparam.GetAllCitiesRequest
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ import (
|
|||
// @Produce json
|
||||
// @Success 200 {object} addressparam.GetAllProvincesResponse
|
||||
// @Failure 400 {string} "Bad request"
|
||||
// @Router /address/provinces [get]
|
||||
// @Router /address/provinces [get].
|
||||
func (h Handler) GetAllProvinces(c echo.Context) error {
|
||||
var req addressparam.GetAllProvincesRequest
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ import (
|
|||
// @Param Request body benefactoreparam.LoginOrRegisterRequest true "Login or register request details"
|
||||
// @Success 200 {object} benefactoreparam.LoginOrRegisterResponse
|
||||
// @Failure 400 {string} "Bad request"
|
||||
// @Router /benefactor/login-register [post]
|
||||
// @Router /benefactor/login-register [post].
|
||||
func (h Handler) loginOrRegister(c echo.Context) error {
|
||||
var req benefactoreparam.LoginOrRegisterRequest
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ import (
|
|||
// @Param Request body benefactoreparam.SendOtpRequest true "Send OTP request details"
|
||||
// @Success 200 {object} benefactoreparam.SendOtpResponse
|
||||
// @Failure 400 {string} "Bad request"
|
||||
// @Router /benefactor/send-otp [post]
|
||||
// @Router /benefactor/send-otp [post].
|
||||
func (h Handler) SendOtp(c echo.Context) error {
|
||||
var req benefactoreparam.SendOtpRequest
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ import (
|
|||
// @Success 200 {object} param.KindBoxGetResponse
|
||||
// @Failure 400 {string} "Bad request"
|
||||
// @Security AuthBearerBenefactor
|
||||
// @Router /benefactor/kindboxes/{id} [get]
|
||||
// @Router /benefactor/kindboxes/{id} [get].
|
||||
func (h Handler) Get(c echo.Context) error {
|
||||
var req param.KindBoxGetRequest
|
||||
if bErr := c.Bind(&req); bErr != nil {
|
||||
|
|
|
@ -18,11 +18,10 @@ import (
|
|||
// @Success 200 {object} param.KindBoxReqAddResponse
|
||||
// @Failure 400 {string} "Bad request"
|
||||
// @Security AuthBearerBenefactor
|
||||
// @Router /benefactor/kindboxreqs/ [post]
|
||||
// @Router /benefactor/kindboxreqs/ [post].
|
||||
func (h Handler) Add(c echo.Context) error {
|
||||
req := param.KindBoxReqAddRequest{}
|
||||
if err := c.Bind(&req); err != nil {
|
||||
|
||||
return c.JSON(http.StatusBadRequest, echo.Map{
|
||||
"message": errmsg.ErrBadRequest,
|
||||
})
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
package benefactorkindboxreqhandler
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
param "git.gocasts.ir/ebhomengo/niki/param/benefactor/kind_box_req"
|
||||
"git.gocasts.ir/ebhomengo/niki/pkg/claim"
|
||||
httpmsg "git.gocasts.ir/ebhomengo/niki/pkg/http_msg"
|
||||
"github.com/labstack/echo/v4"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// delete godoc
|
||||
|
@ -18,11 +19,10 @@ import (
|
|||
// @Success 200 {object} param.KindBoxReqDeleteResponse
|
||||
// @Failure 400 {string} "Bad request"
|
||||
// @Security AuthBearerBenefactor
|
||||
// @Router /benefactor/kindboxreqs/{id} [delete]
|
||||
// @Router /benefactor/kindboxreqs/{id} [delete].
|
||||
func (h Handler) Delete(c echo.Context) error {
|
||||
req := param.KindBoxReqDeleteRequest{}
|
||||
if bErr := echo.PathParamsBinder(c).Uint("id", &req.KindBoxReqID).BindError(); bErr != nil {
|
||||
|
||||
return echo.NewHTTPError(http.StatusBadRequest)
|
||||
}
|
||||
claims := claim.GetClaimsFromEchoContext(c)
|
||||
|
|
|
@ -18,7 +18,7 @@ import (
|
|||
// @Success 200 {object} param.KindBoxReqGetResponse
|
||||
// @Failure 400 {string} "Bad request"
|
||||
// @Security AuthBearerBenefactor
|
||||
// @Router /benefactor/kindboxreqs/{id} [get]
|
||||
// @Router /benefactor/kindboxreqs/{id} [get].
|
||||
func (h Handler) Get(c echo.Context) error {
|
||||
var req param.KindBoxReqGetRequest
|
||||
if bErr := echo.PathParamsBinder(c).Uint("id", &req.KindBoxReqID).BindError(); bErr != nil {
|
||||
|
|
|
@ -2,6 +2,7 @@ package httpserver
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
config "git.gocasts.ir/ebhomengo/niki/config"
|
||||
adminhandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/admin/admin"
|
||||
adminkindboxreqhandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/admin/kind_box_req"
|
||||
|
|
|
@ -5,6 +5,7 @@ type AdminPermission string
|
|||
const (
|
||||
AdminAdminRegisterPermission = AdminPermission("admin-register")
|
||||
AdminKindBoxReqAcceptPermission = AdminPermission("kindboxreq-accept")
|
||||
AdminKindBoxReqAddPermission = AdminPermission("kindboxreq-add")
|
||||
AdminKindBoxReqRejectPermission = AdminPermission("kindboxreq-reject")
|
||||
AdminKindBoxReqGetAllPermission = AdminPermission("kindboxreq-getall")
|
||||
AdminKindBoxReqDeliverPermission = AdminPermission("kindboxreq-deliver")
|
||||
|
|
2
go.mod
2
go.mod
|
@ -16,6 +16,7 @@ require (
|
|||
github.com/rubenv/sql-migrate v1.6.0
|
||||
github.com/stretchr/testify v1.9.0
|
||||
github.com/swaggo/echo-swagger v1.4.1
|
||||
github.com/swaggo/swag v1.16.3
|
||||
golang.org/x/crypto v0.23.0
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1
|
||||
)
|
||||
|
@ -46,7 +47,6 @@ require (
|
|||
github.com/mitchellh/reflectwalk v1.0.2 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
github.com/swaggo/files/v2 v2.0.0 // indirect
|
||||
github.com/swaggo/swag v1.16.3 // indirect
|
||||
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||
github.com/valyala/fasttemplate v1.2.2 // indirect
|
||||
golang.org/x/net v0.25.0 // indirect
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
package adminkindboxparam
|
||||
|
||||
import (
|
||||
entity "git.gocasts.ir/ebhomengo/niki/entity"
|
||||
"time"
|
||||
|
||||
entity "git.gocasts.ir/ebhomengo/niki/entity"
|
||||
)
|
||||
|
||||
type AddKindBoxRequest struct {
|
||||
|
|
|
@ -3,9 +3,11 @@ package adminkindboxreqparam
|
|||
import entity "git.gocasts.ir/ebhomengo/niki/entity"
|
||||
|
||||
type KindBoxReqAddRequest struct {
|
||||
BenefactorID uint
|
||||
TypeID uint
|
||||
CountRequested uint
|
||||
BenefactorID uint `json:"benefactor_id" example:"1"`
|
||||
TypeID entity.KindBoxType `json:"type_id" example:"1"`
|
||||
DeliverAddressID uint `json:"deliver_address_id" example:"1"`
|
||||
DeliverReferDate string `json:"deliver_refer_date" example:"2025-01-02 15:04:05"`
|
||||
CountRequested uint `json:"count_requested" example:"2"`
|
||||
}
|
||||
|
||||
type KindBoxReqAddResponse struct {
|
||||
|
|
|
@ -2,6 +2,7 @@ package mysqladmin
|
|||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
||||
|
|
|
@ -4,11 +4,12 @@ import (
|
|||
"context"
|
||||
"database/sql"
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
||||
"git.gocasts.ir/ebhomengo/niki/repository/mysql"
|
||||
"time"
|
||||
)
|
||||
|
||||
func (d DB) IsExistBenefactorByPhoneNumber(ctx context.Context, phoneNumber string) (bool, entity.Benefactor, error) {
|
||||
|
@ -56,7 +57,6 @@ func (d *DB) IsExistBenefactorByID(ctx context.Context, id uint) (bool, error) {
|
|||
}
|
||||
|
||||
func scanBenefactor(scanner mysql.Scanner) (entity.Benefactor, error) {
|
||||
|
||||
var createdAt, updatedAt time.Time
|
||||
var benefactor entity.Benefactor
|
||||
// TODO - use db model and mapper between entity and db model OR use this approach
|
||||
|
|
|
@ -2,6 +2,7 @@ package mysqlkindboxreq
|
|||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
||||
|
|
|
@ -2,6 +2,7 @@ package mysqlkindboxreq
|
|||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
||||
|
|
|
@ -2,6 +2,7 @@ package mysqlkindboxreq
|
|||
|
||||
import (
|
||||
"context"
|
||||
|
||||
entity "git.gocasts.ir/ebhomengo/niki/entity"
|
||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
||||
|
|
|
@ -2,9 +2,10 @@ package mysqlkindboxreq
|
|||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
||||
"time"
|
||||
)
|
||||
|
||||
func (d DB) DeleteKindBoxReqByID(ctx context.Context, kindBoxReqID uint) error {
|
||||
|
|
|
@ -3,6 +3,7 @@ package mysqlkindboxreq
|
|||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
|
||||
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
"context"
|
||||
"database/sql"
|
||||
"errors"
|
||||
|
||||
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
||||
|
|
|
@ -2,6 +2,7 @@ package mysqlkindboxreq
|
|||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
||||
|
|
|
@ -19,6 +19,8 @@ type Repository interface {
|
|||
GetAdminByPhoneNumber(ctx context.Context, phoneNumber string) (entity.Admin, error)
|
||||
GetAdminByID(ctx context.Context, adminID uint) (entity.Admin, error)
|
||||
GetAllAgent(ctx context.Context) ([]entity.Admin, error)
|
||||
IsExistBenefactorByID(ctx context.Context, id uint) (bool, error)
|
||||
GetAddressByID(ctx context.Context, id uint) (*entity.Address, error)
|
||||
}
|
||||
|
||||
type Service struct {
|
||||
|
|
|
@ -17,6 +17,7 @@ type Repository interface {
|
|||
DeliverKindBoxReq(ctx context.Context, kindBoxReqID uint) error
|
||||
GetAllKindBoxReq(ctx context.Context, filter params.FilterRequest, pagination params.PaginationRequest, sort params.SortRequest) ([]entity.KindBoxReq, uint, error)
|
||||
GetAwaitingDeliveryByAgent(ctx context.Context, kindBoxReqID uint, agentID uint) (entity.KindBoxReq, error)
|
||||
AddKindBoxReq(ctx context.Context, kindBoxReq entity.KindBoxReq) (entity.KindBoxReq, error)
|
||||
}
|
||||
|
||||
type KindBoxSvc interface {
|
||||
|
|
|
@ -2,6 +2,7 @@ package benefactoraddressservice
|
|||
|
||||
import (
|
||||
"context"
|
||||
|
||||
param "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
|
||||
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
||||
)
|
||||
|
|
|
@ -2,6 +2,7 @@ package benefactorkindboxreqservice
|
|||
|
||||
import (
|
||||
"context"
|
||||
|
||||
param "git.gocasts.ir/ebhomengo/niki/param/benefactor/kind_box_req"
|
||||
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
||||
)
|
||||
|
|
|
@ -6,7 +6,6 @@ import (
|
|||
|
||||
"git.gocasts.ir/ebhomengo/niki/repository/migrator"
|
||||
"git.gocasts.ir/ebhomengo/niki/repository/mysql"
|
||||
|
||||
//nolint
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
)
|
||||
|
|
|
@ -25,11 +25,17 @@ type Repository interface {
|
|||
|
||||
type AdminSvc interface {
|
||||
AdminExistByID(ctx context.Context, req param.AdminExistByIDRequest) (param.AdminExistByIDResponse, error)
|
||||
BenefactorExistByID(ctx context.Context, request param.BenefactorExistByIDRequest) (param.BenefactorExistByIDResponse, error)
|
||||
}
|
||||
|
||||
type AddressSvc interface {
|
||||
AddressExistByID(ctx context.Context, request param.GetAddressByIDRequest) (param.GetAddressByIDResponse, error)
|
||||
}
|
||||
|
||||
type Validator struct {
|
||||
repo Repository
|
||||
adminSvc AdminSvc
|
||||
addressSvc AddressSvc
|
||||
}
|
||||
|
||||
func New(repo Repository, adminSvc AdminSvc) Validator {
|
||||
|
|
|
@ -2,6 +2,7 @@ package benefactorkindboxreqvalidator
|
|||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
param "git.gocasts.ir/ebhomengo/niki/param/benefactor/kind_box_req"
|
||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
||||
|
|
|
@ -3,13 +3,14 @@ package benefactorkindboxreqvalidator
|
|||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||
refertimeparam "git.gocasts.ir/ebhomengo/niki/param/admin/refer_time"
|
||||
addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
|
||||
param "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactore"
|
||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||
validation "github.com/go-ozzo/ozzo-validation/v4"
|
||||
"time"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
|
@ -37,14 +37,19 @@ const RF3339WithoutZone = "2006-01-02T15:04:05"
|
|||
// SetFieldsRequiredByDefault causes validation to fail when struct fields
|
||||
// do not include validations or are not explicitly marked as exempt (using `valid:"-"` or `valid:"email,optional"`).
|
||||
// This struct definition will fail govalidator.ValidateStruct() (and the field values do not matter):
|
||||
//
|
||||
// type exampleStruct struct {
|
||||
// Name string ``
|
||||
// Email string `valid:"email"`
|
||||
//
|
||||
// This, however, will only fail when Email is empty or an invalid email address:
|
||||
//
|
||||
// type exampleStruct2 struct {
|
||||
// Name string `valid:"-"`
|
||||
// Email string `valid:"email"`
|
||||
//
|
||||
// Lastly, this will only fail when Email is an invalid email address but not when it's empty:
|
||||
//
|
||||
// type exampleStruct2 struct {
|
||||
// Name string `valid:"-"`
|
||||
// Email string `valid:"email,optional"`
|
||||
|
@ -54,8 +59,10 @@ func SetFieldsRequiredByDefault(value bool) {
|
|||
|
||||
// SetNilPtrAllowedByRequired causes validation to pass for nil ptrs when a field is set to required.
|
||||
// The validation will still reject ptr fields in their zero value state. Example with this enabled:
|
||||
//
|
||||
// type exampleStruct struct {
|
||||
// Name *string `valid:"required"`
|
||||
//
|
||||
// With `Name` set to "", this will be considered invalid input and will cause a validation error.
|
||||
// With `Name` set to nil, this will be considered valid by validation.
|
||||
// By default this is disabled.
|
||||
|
|
|
@ -3,13 +3,12 @@ package gofakeit
|
|||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"math/rand"
|
||||
"reflect"
|
||||
"strconv"
|
||||
"strings"
|
||||
"text/template"
|
||||
"time"
|
||||
)
|
||||
|
||||
// TemplateOptions defines values needed for template document generation
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
// tag is deprecated and thus should not be used.
|
||||
// Go versions prior to 1.4 are disabled because they use a different layout
|
||||
// for interfaces which make the implementation of unsafeReflectValue more complex.
|
||||
//go:build !js && !appengine && !safe && !disableunsafe && go1.4
|
||||
// +build !js,!appengine,!safe,!disableunsafe,go1.4
|
||||
|
||||
package spew
|
||||
|
|
|
@ -254,14 +254,14 @@ pointer addresses used to indirect to the final value. It provides the
|
|||
following features over the built-in printing facilities provided by the fmt
|
||||
package:
|
||||
|
||||
* Pointers are dereferenced and followed
|
||||
* Circular data structures are detected and handled properly
|
||||
* Custom Stringer/error interfaces are optionally invoked, including
|
||||
- Pointers are dereferenced and followed
|
||||
- Circular data structures are detected and handled properly
|
||||
- Custom Stringer/error interfaces are optionally invoked, including
|
||||
on unexported types
|
||||
* Custom types which only implement the Stringer/error interfaces via
|
||||
- Custom types which only implement the Stringer/error interfaces via
|
||||
a pointer receiver are optionally invoked when passing non-pointer
|
||||
variables
|
||||
* Byte arrays and slices are dumped like the hexdump -C command which
|
||||
- Byte arrays and slices are dumped like the hexdump -C command which
|
||||
includes offsets, byte values in hex, and ASCII output
|
||||
|
||||
The configuration options are controlled by modifying the public members
|
||||
|
|
|
@ -488,14 +488,14 @@ pointer addresses used to indirect to the final value. It provides the
|
|||
following features over the built-in printing facilities provided by the fmt
|
||||
package:
|
||||
|
||||
* Pointers are dereferenced and followed
|
||||
* Circular data structures are detected and handled properly
|
||||
* Custom Stringer/error interfaces are optionally invoked, including
|
||||
- Pointers are dereferenced and followed
|
||||
- Circular data structures are detected and handled properly
|
||||
- Custom Stringer/error interfaces are optionally invoked, including
|
||||
on unexported types
|
||||
* Custom types which only implement the Stringer/error interfaces via
|
||||
- Custom types which only implement the Stringer/error interfaces via
|
||||
a pointer receiver are optionally invoked when passing non-pointer
|
||||
variables
|
||||
* Byte arrays and slices are dumped like the hexdump -C command which
|
||||
- Byte arrays and slices are dumped like the hexdump -C command which
|
||||
includes offsets, byte values in hex, and ASCII output
|
||||
|
||||
The configuration options are controlled by an exported package global,
|
||||
|
|
|
@ -3,7 +3,6 @@ package structs
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"reflect"
|
||||
)
|
||||
|
||||
|
|
|
@ -347,8 +347,9 @@ const (
|
|||
// 4) simpleLetterEqualFold, no specials, no non-letters.
|
||||
//
|
||||
// The letters S and K are special because they map to 3 runes, not just 2:
|
||||
// * S maps to s and to U+017F 'ſ' Latin small letter long s
|
||||
// * k maps to K and to U+212A 'K' Kelvin sign
|
||||
// - S maps to s and to U+017F 'ſ' Latin small letter long s
|
||||
// - k maps to K and to U+212A 'K' Kelvin sign
|
||||
//
|
||||
// See http://play.golang.org/p/tTxjOc0OGo
|
||||
//
|
||||
// The returned function is specialized for matching against s and
|
||||
|
|
|
@ -64,9 +64,9 @@ func JSONToYAML(j []byte) ([]byte, error) {
|
|||
// this method should be a no-op.
|
||||
//
|
||||
// Things YAML can do that are not supported by JSON:
|
||||
// * In YAML you can have binary and null keys in your maps. These are invalid
|
||||
// - In YAML you can have binary and null keys in your maps. These are invalid
|
||||
// in JSON. (int and float keys are converted to strings.)
|
||||
// * Binary data in YAML with the !!binary tag is not supported. If you want to
|
||||
// - Binary data in YAML with the !!binary tag is not supported. If you want to
|
||||
// use binary data with this library, encode the data as base64 as usual but do
|
||||
// not use the !!binary tag in your YAML. This will ensure the original base64
|
||||
// encoded data makes it all the way through to the JSON.
|
||||
|
|
|
@ -26,7 +26,6 @@ import (
|
|||
//
|
||||
// dialect := gorp.MySQLDialect{"InnoDB", "UTF8"}
|
||||
// dbmap := &gorp.DbMap{Db: db, Dialect: dialect}
|
||||
//
|
||||
type DbMap struct {
|
||||
ctx context.Context
|
||||
|
||||
|
|
|
@ -86,10 +86,9 @@ func SelectNullStr(e SqlExecutor, query string, args ...interface{}) (sql.NullSt
|
|||
// SelectOne executes the given query (which should be a SELECT statement)
|
||||
// and binds the result to holder, which must be a pointer.
|
||||
//
|
||||
// If no row is found, an error (sql.ErrNoRows specifically) will be returned
|
||||
// # If no row is found, an error (sql.ErrNoRows specifically) will be returned
|
||||
//
|
||||
// If more than one row is found, an error will be returned.
|
||||
//
|
||||
func SelectOne(m *DbMap, e SqlExecutor, holder interface{}, query string, args ...interface{}) error {
|
||||
t := reflect.TypeOf(holder)
|
||||
if t.Kind() == reflect.Ptr {
|
||||
|
|
|
@ -47,7 +47,6 @@ func (t *TableMap) ResetSql() {
|
|||
// Automatically calls ResetSql() to ensure SQL statements are regenerated.
|
||||
//
|
||||
// Panics if isAutoIncr is true, and fieldNames length != 1
|
||||
//
|
||||
func (t *TableMap) SetKeys(isAutoIncr bool, fieldNames ...string) *TableMap {
|
||||
if isAutoIncr && len(fieldNames) != 1 {
|
||||
panic(fmt.Sprintf(
|
||||
|
@ -73,7 +72,6 @@ func (t *TableMap) SetKeys(isAutoIncr bool, fieldNames ...string) *TableMap {
|
|||
// Automatically calls ResetSql() to ensure SQL statements are regenerated.
|
||||
//
|
||||
// Panics if fieldNames length < 2.
|
||||
//
|
||||
func (t *TableMap) SetUniqueTogether(fieldNames ...string) *TableMap {
|
||||
if len(fieldNames) < 2 {
|
||||
panic(fmt.Sprintf(
|
||||
|
@ -135,7 +133,6 @@ func (t *TableMap) IdxMap(field string) *IndexMap {
|
|||
// Function will panic if one of the given for index columns does not exists
|
||||
//
|
||||
// Automatically calls ResetSql() to ensure SQL statements are regenerated.
|
||||
//
|
||||
func (t *TableMap) AddIndex(name string, idxtype string, columns []string) *IndexMap {
|
||||
// check if we have a index with this name already
|
||||
for _, idx := range t.indexes {
|
||||
|
|
|
@ -19,6 +19,7 @@ type DateRule struct {
|
|||
// Date returns a validation rule that checks if a string value is in a format that can be parsed into a date.
|
||||
// The format of the date should be specified as the layout parameter which accepts the same value as that for time.Parse.
|
||||
// For example,
|
||||
//
|
||||
// validation.Date(time.ANSIC)
|
||||
// validation.Date("02 Jan 06 15:04 MST")
|
||||
// validation.Date("2006-01-02")
|
||||
|
|
|
@ -24,7 +24,6 @@ func (r *multipleOfRule) Error(message string) *multipleOfRule {
|
|||
return r
|
||||
}
|
||||
|
||||
|
||||
func (r *multipleOfRule) Validate(value interface{}) error {
|
||||
|
||||
rv := reflect.ValueOf(r.threshold)
|
||||
|
|
|
@ -41,6 +41,7 @@ type (
|
|||
// Use Key() to specify map keys that need to be validated. Each Key() call specifies a single key which can
|
||||
// be associated with multiple rules.
|
||||
// For example,
|
||||
//
|
||||
// validation.Map(
|
||||
// validation.Key("Name", validation.Required),
|
||||
// validation.Key("Value", validation.Required, validation.Length(5, 10)),
|
||||
|
|
|
@ -53,7 +53,6 @@ var (
|
|||
// } else {
|
||||
// log.Fatal("not a RSA public key")
|
||||
// }
|
||||
//
|
||||
func RegisterServerPubKey(name string, pubKey *rsa.PublicKey) {
|
||||
serverPubKeyLock.Lock()
|
||||
if serverPubKeyRegistry == nil {
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
// You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
//go:build linux || darwin || dragonfly || freebsd || netbsd || openbsd || solaris || illumos
|
||||
// +build linux darwin dragonfly freebsd netbsd openbsd solaris illumos
|
||||
|
||||
package mysql
|
||||
|
|
|
@ -33,7 +33,6 @@ var (
|
|||
// err := db.Exec("LOAD DATA LOCAL INFILE '" + filePath + "' INTO TABLE foo")
|
||||
// if err != nil {
|
||||
// ...
|
||||
//
|
||||
func RegisterLocalFile(filePath string) {
|
||||
fileRegisterLock.Lock()
|
||||
// lazy map init
|
||||
|
@ -66,7 +65,6 @@ func DeregisterLocalFile(filePath string) {
|
|||
// err := db.Exec("LOAD DATA LOCAL INFILE 'Reader::data' INTO TABLE foo")
|
||||
// if err != nil {
|
||||
// ...
|
||||
//
|
||||
func RegisterReaderHandler(name string, handler func() io.Reader) {
|
||||
readerRegisterLock.Lock()
|
||||
// lazy map init
|
||||
|
|
|
@ -54,7 +54,6 @@ var (
|
|||
// Certificates: clientCert,
|
||||
// })
|
||||
// db, err := sql.Open("mysql", "user@tcp(localhost:3306)/test?tls=custom")
|
||||
//
|
||||
func RegisterTLSConfig(key string, config *tls.Config) error {
|
||||
if _, isBool := readBool(key); isBool || strings.ToLower(key) == "skip-verify" || strings.ToLower(key) == "preferred" {
|
||||
return fmt.Errorf("key '%s' is reserved", key)
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
package jwt
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"crypto/ed25519"
|
||||
"errors"
|
||||
)
|
||||
|
||||
var (
|
||||
|
|
|
@ -3,7 +3,6 @@ package jwt
|
|||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
// "fmt"
|
||||
)
|
||||
|
||||
// Claims type that uses the map[string]interface{} for JSON decoding
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
//go:build go1.4
|
||||
// +build go1.4
|
||||
|
||||
package jwt
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
package jwt
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"crypto"
|
||||
"crypto/ed25519"
|
||||
"crypto/rand"
|
||||
"errors"
|
||||
)
|
||||
|
||||
var (
|
||||
|
|
|
@ -4,7 +4,6 @@ import (
|
|||
"encoding/json"
|
||||
"errors"
|
||||
"time"
|
||||
// "fmt"
|
||||
)
|
||||
|
||||
// MapClaims is a claims type that uses the map[string]interface{} for JSON decoding.
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
package jwt
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"crypto"
|
||||
"crypto/ed25519"
|
||||
"crypto/rand"
|
||||
"errors"
|
||||
)
|
||||
|
||||
var (
|
||||
|
|
|
@ -5,9 +5,10 @@ package maps
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/mitchellh/copystructure"
|
||||
"reflect"
|
||||
"strings"
|
||||
|
||||
"github.com/mitchellh/copystructure"
|
||||
)
|
||||
|
||||
// Flatten takes a map[string]interface{} and traverses it and flattens
|
||||
|
|
|
@ -6,7 +6,6 @@ import (
|
|||
"errors"
|
||||
|
||||
"github.com/fatih/structs"
|
||||
|
||||
"github.com/knadh/koanf/maps"
|
||||
)
|
||||
|
||||
|
|
|
@ -6,10 +6,11 @@ package echojwt
|
|||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/labstack/echo/v4/middleware"
|
||||
"net/textproto"
|
||||
"strings"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/labstack/echo/v4/middleware"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
|
@ -4,8 +4,9 @@
|
|||
package echo
|
||||
|
||||
import (
|
||||
"github.com/labstack/gommon/log"
|
||||
"io"
|
||||
|
||||
"github.com/labstack/gommon/log"
|
||||
)
|
||||
|
||||
// Logger defines the logging interface.
|
||||
|
|
|
@ -6,9 +6,10 @@ package middleware
|
|||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/labstack/echo/v4"
|
||||
"net/textproto"
|
||||
"strings"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
|
@ -9,10 +9,11 @@ package middleware
|
|||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/golang-jwt/jwt"
|
||||
"github.com/labstack/echo/v4"
|
||||
"net/http"
|
||||
"reflect"
|
||||
|
||||
"github.com/golang-jwt/jwt"
|
||||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
// JWTConfig defines the config for JWT middleware.
|
||||
|
|
|
@ -5,8 +5,9 @@ package middleware
|
|||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/labstack/echo/v4"
|
||||
"net/http"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
// KeyAuthConfig defines the config for KeyAuth middleware.
|
||||
|
|
|
@ -5,10 +5,11 @@ package middleware
|
|||
|
||||
import (
|
||||
"context"
|
||||
"github.com/labstack/echo/v4"
|
||||
"net/http"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
//go:build !appengine
|
||||
// +build !appengine
|
||||
|
||||
package log
|
||||
|
|
|
@ -13,10 +13,9 @@ import (
|
|||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/labstack/gommon/color"
|
||||
"github.com/mattn/go-isatty"
|
||||
"github.com/valyala/fasttemplate"
|
||||
|
||||
"github.com/labstack/gommon/color"
|
||||
)
|
||||
|
||||
type (
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
//go:build appengine
|
||||
// +build appengine
|
||||
|
||||
package log
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
// easyjson_nounsafe nor appengine build tag is set. See README notes
|
||||
// for more details.
|
||||
|
||||
//+build !easyjson_nounsafe
|
||||
//+build !appengine
|
||||
//go:build !easyjson_nounsafe && !appengine
|
||||
// +build !easyjson_nounsafe,!appengine
|
||||
|
||||
package jlexer
|
||||
|
||||
|
|
|
@ -42,6 +42,7 @@ func IsTerminal(fd uintptr) bool {
|
|||
|
||||
// Check pipe name is used for cygwin/msys2 pty.
|
||||
// Cygwin/MSYS2 PTY has a name like:
|
||||
//
|
||||
// \{cygwin,msys}-XXXXXXXXXXXXXXXX-ptyN-{from,to}-master
|
||||
func isCygwinPipeName(name string) bool {
|
||||
token := strings.Split(name, "-")
|
||||
|
|
|
@ -25,13 +25,12 @@ const tagKey = "copy"
|
|||
//
|
||||
// The available tag values are:
|
||||
//
|
||||
// * "ignore" - The field will be ignored, effectively resulting in it being
|
||||
// - "ignore" - The field will be ignored, effectively resulting in it being
|
||||
// assigned the zero value in the copy.
|
||||
//
|
||||
// * "shallow" - The field will be be shallow copied. This means that references
|
||||
// - "shallow" - The field will be be shallow copied. This means that references
|
||||
// values such as pointers, maps, slices, etc. will be directly assigned
|
||||
// versus deep copied.
|
||||
//
|
||||
func Copy(v interface{}) (interface{}, error) {
|
||||
return Config{}.Copy(v)
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
//
|
||||
// The simplest function to start with is Decode.
|
||||
//
|
||||
// Field Tags
|
||||
// # Field Tags
|
||||
//
|
||||
// When decoding to a struct, mapstructure will use the field name by
|
||||
// default to perform the mapping. For example, if a struct has a field
|
||||
|
@ -24,7 +24,7 @@
|
|||
// The default struct tag that mapstructure looks for is "mapstructure"
|
||||
// but you can customize it using DecoderConfig.
|
||||
//
|
||||
// Renaming Fields
|
||||
// # Renaming Fields
|
||||
//
|
||||
// To rename the key that mapstructure looks for, use the "mapstructure"
|
||||
// tag and set a value directly. For example, to change the "username" example
|
||||
|
@ -34,7 +34,7 @@
|
|||
// Username string `mapstructure:"user"`
|
||||
// }
|
||||
//
|
||||
// Embedded Structs and Squashing
|
||||
// # Embedded Structs and Squashing
|
||||
//
|
||||
// Embedded structs are treated as if they're another field with that name.
|
||||
// By default, the two structs below are equivalent when decoding with
|
||||
|
@ -86,7 +86,7 @@
|
|||
// DecoderConfig has a field that changes the behavior of mapstructure
|
||||
// to always squash embedded structs.
|
||||
//
|
||||
// Remainder Values
|
||||
// # Remainder Values
|
||||
//
|
||||
// If there are any unmapped keys in the source value, mapstructure by
|
||||
// default will silently ignore them. You can error by setting ErrorUnused
|
||||
|
@ -111,7 +111,7 @@
|
|||
// "address": "123 Maple St.",
|
||||
// }
|
||||
//
|
||||
// Omit Empty Values
|
||||
// # Omit Empty Values
|
||||
//
|
||||
// When decoding from a struct to any other value, you may use the
|
||||
// ",omitempty" suffix on your tag to omit that value if it equates to
|
||||
|
@ -126,7 +126,7 @@
|
|||
// Age int `mapstructure:",omitempty"`
|
||||
// }
|
||||
//
|
||||
// Unexported fields
|
||||
// # Unexported fields
|
||||
//
|
||||
// Since unexported (private) struct fields cannot be set outside the package
|
||||
// where they are defined, the decoder will simply skip them.
|
||||
|
@ -152,7 +152,7 @@
|
|||
// Public: "I made it through!"
|
||||
// }
|
||||
//
|
||||
// Other Configuration
|
||||
// # Other Configuration
|
||||
//
|
||||
// mapstructure is highly configurable. See the DecoderConfig struct
|
||||
// for other features and options that are supported.
|
||||
|
|
|
@ -81,7 +81,6 @@ type PointerValueWalker interface {
|
|||
//
|
||||
// - Struct: skips all fields from being walked
|
||||
// - StructField: skips walking the struct value
|
||||
//
|
||||
var SkipEntry = errors.New("skip this entry")
|
||||
|
||||
// Walk takes an arbitrary value and an interface and traverses the
|
||||
|
|
|
@ -199,9 +199,12 @@ func (m *SequenceMatcher) isBJunk(s string) bool {
|
|||
// If IsJunk is not defined:
|
||||
//
|
||||
// Return (i,j,k) such that a[i:i+k] is equal to b[j:j+k], where
|
||||
//
|
||||
// alo <= i <= i+k <= ahi
|
||||
// blo <= j <= j+k <= bhi
|
||||
//
|
||||
// and for all (i',j',k') meeting those conditions,
|
||||
//
|
||||
// k >= k'
|
||||
// i <= i'
|
||||
// and if i == i', j <= j'
|
||||
|
|
|
@ -13,7 +13,6 @@ import (
|
|||
|
||||
"github.com/cespare/xxhash/v2"
|
||||
"github.com/dgryski/go-rendezvous" //nolint
|
||||
|
||||
"github.com/redis/go-redis/v9/internal"
|
||||
"github.com/redis/go-redis/v9/internal/hashtag"
|
||||
"github.com/redis/go-redis/v9/internal/pool"
|
||||
|
|
|
@ -18,7 +18,6 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/go-gorp/gorp/v3"
|
||||
|
||||
"github.com/rubenv/sql-migrate/sqlparse"
|
||||
)
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ package swag
|
|||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/go-openapi/spec"
|
||||
)
|
||||
|
||||
|
|
|
@ -65,9 +65,9 @@ func ExecuteFunc(template, startTag, endTag string, w io.Writer, f TagFunc) (int
|
|||
// values from the map m and writes the result to the given writer w.
|
||||
//
|
||||
// Substitution map m may contain values with the following types:
|
||||
// * []byte - the fastest value type
|
||||
// * string - convenient value type
|
||||
// * TagFunc - flexible value type
|
||||
// - []byte - the fastest value type
|
||||
// - string - convenient value type
|
||||
// - TagFunc - flexible value type
|
||||
//
|
||||
// Returns the number of bytes written to w.
|
||||
//
|
||||
|
@ -81,9 +81,9 @@ func Execute(template, startTag, endTag string, w io.Writer, m map[string]interf
|
|||
// This can be used as a drop-in replacement for strings.Replacer
|
||||
//
|
||||
// Substitution map m may contain values with the following types:
|
||||
// * []byte - the fastest value type
|
||||
// * string - convenient value type
|
||||
// * TagFunc - flexible value type
|
||||
// - []byte - the fastest value type
|
||||
// - string - convenient value type
|
||||
// - TagFunc - flexible value type
|
||||
//
|
||||
// Returns the number of bytes written to w.
|
||||
//
|
||||
|
@ -134,9 +134,9 @@ var byteBufferPool bytebufferpool.Pool
|
|||
// values from the map m and returns the result.
|
||||
//
|
||||
// Substitution map m may contain values with the following types:
|
||||
// * []byte - the fastest value type
|
||||
// * string - convenient value type
|
||||
// * TagFunc - flexible value type
|
||||
// - []byte - the fastest value type
|
||||
// - string - convenient value type
|
||||
// - TagFunc - flexible value type
|
||||
//
|
||||
// This function is optimized for constantly changing templates.
|
||||
// Use Template.ExecuteString for frozen templates.
|
||||
|
@ -148,9 +148,9 @@ func ExecuteString(template, startTag, endTag string, m map[string]interface{})
|
|||
// This can be used as a drop-in replacement for strings.Replacer
|
||||
//
|
||||
// Substitution map m may contain values with the following types:
|
||||
// * []byte - the fastest value type
|
||||
// * string - convenient value type
|
||||
// * TagFunc - flexible value type
|
||||
// - []byte - the fastest value type
|
||||
// - string - convenient value type
|
||||
// - TagFunc - flexible value type
|
||||
//
|
||||
// This function is optimized for constantly changing templates.
|
||||
// Use Template.ExecuteStringStd for frozen templates.
|
||||
|
@ -304,9 +304,9 @@ func (t *Template) ExecuteFunc(w io.Writer, f TagFunc) (int64, error) {
|
|||
// values from the map m and writes the result to the given writer w.
|
||||
//
|
||||
// Substitution map m may contain values with the following types:
|
||||
// * []byte - the fastest value type
|
||||
// * string - convenient value type
|
||||
// * TagFunc - flexible value type
|
||||
// - []byte - the fastest value type
|
||||
// - string - convenient value type
|
||||
// - TagFunc - flexible value type
|
||||
//
|
||||
// Returns the number of bytes written to w.
|
||||
func (t *Template) Execute(w io.Writer, m map[string]interface{}) (int64, error) {
|
||||
|
@ -317,9 +317,9 @@ func (t *Template) Execute(w io.Writer, m map[string]interface{}) (int64, error)
|
|||
// This can be used as a drop-in replacement for strings.Replacer
|
||||
//
|
||||
// Substitution map m may contain values with the following types:
|
||||
// * []byte - the fastest value type
|
||||
// * string - convenient value type
|
||||
// * TagFunc - flexible value type
|
||||
// - []byte - the fastest value type
|
||||
// - string - convenient value type
|
||||
// - TagFunc - flexible value type
|
||||
//
|
||||
// Returns the number of bytes written to w.
|
||||
func (t *Template) ExecuteStd(w io.Writer, m map[string]interface{}) (int64, error) {
|
||||
|
@ -365,9 +365,9 @@ func (t *Template) ExecuteFuncStringWithErr(f TagFunc) (string, error) {
|
|||
// values from the map m and returns the result.
|
||||
//
|
||||
// Substitution map m may contain values with the following types:
|
||||
// * []byte - the fastest value type
|
||||
// * string - convenient value type
|
||||
// * TagFunc - flexible value type
|
||||
// - []byte - the fastest value type
|
||||
// - string - convenient value type
|
||||
// - TagFunc - flexible value type
|
||||
//
|
||||
// This function is optimized for frozen templates.
|
||||
// Use ExecuteString for constantly changing templates.
|
||||
|
@ -379,9 +379,9 @@ func (t *Template) ExecuteString(m map[string]interface{}) string {
|
|||
// This can be used as a drop-in replacement for strings.Replacer
|
||||
//
|
||||
// Substitution map m may contain values with the following types:
|
||||
// * []byte - the fastest value type
|
||||
// * string - convenient value type
|
||||
// * TagFunc - flexible value type
|
||||
// - []byte - the fastest value type
|
||||
// - string - convenient value type
|
||||
// - TagFunc - flexible value type
|
||||
//
|
||||
// This function is optimized for frozen templates.
|
||||
// Use ExecuteStringStd for constantly changing templates.
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
//go:build !appengine
|
||||
// +build !appengine
|
||||
|
||||
package fasttemplate
|
||||
|
|
|
@ -127,6 +127,7 @@ uintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long);
|
|||
|
||||
*/
|
||||
import "C"
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
|
|
|
@ -66,7 +66,7 @@ var _ io.WriteCloser = (*Logger)(nil)
|
|||
// `/var/log/foo/server.log`, a backup created at 6:30pm on Nov 11 2016 would
|
||||
// use the filename `/var/log/foo/server-2016-11-04T18-30-00.000.log`
|
||||
//
|
||||
// Cleaning Up Old Log Files
|
||||
// # Cleaning Up Old Log Files
|
||||
//
|
||||
// Whenever a new logfile gets created, old log files may be deleted. The most
|
||||
// recent files according to the encoded timestamp will be retained, up to a
|
||||
|
|
|
@ -133,7 +133,6 @@ func yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool {
|
|||
// - 1 event for DOCUMENT-START
|
||||
// - 2 events for SEQUENCE-START
|
||||
// - 3 events for MAPPING-START
|
||||
//
|
||||
func yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool {
|
||||
if emitter.events_head == len(emitter.events) {
|
||||
return true
|
||||
|
|
|
@ -1500,11 +1500,11 @@ func yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool {
|
|||
// Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token.
|
||||
//
|
||||
// Scope:
|
||||
//
|
||||
// %YAML 1.1 # a comment \n
|
||||
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
// %TAG !yaml! tag:yaml.org,2002: \n
|
||||
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
//
|
||||
func yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool {
|
||||
// Eat '%'.
|
||||
start_mark := parser.mark
|
||||
|
@ -1601,11 +1601,11 @@ func yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool
|
|||
// Scan the directive name.
|
||||
//
|
||||
// Scope:
|
||||
//
|
||||
// %YAML 1.1 # a comment \n
|
||||
// ^^^^
|
||||
// %TAG !yaml! tag:yaml.org,2002: \n
|
||||
// ^^^
|
||||
//
|
||||
func yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark_t, name *[]byte) bool {
|
||||
// Consume the directive name.
|
||||
if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
|
||||
|
@ -1640,6 +1640,7 @@ func yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark
|
|||
// Scan the value of VERSION-DIRECTIVE.
|
||||
//
|
||||
// Scope:
|
||||
//
|
||||
// %YAML 1.1 # a comment \n
|
||||
// ^^^^^^
|
||||
func yaml_parser_scan_version_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, major, minor *int8) bool {
|
||||
|
@ -1679,6 +1680,7 @@ const max_number_length = 2
|
|||
// Scan the version number of VERSION-DIRECTIVE.
|
||||
//
|
||||
// Scope:
|
||||
//
|
||||
// %YAML 1.1 # a comment \n
|
||||
// ^
|
||||
// %YAML 1.1 # a comment \n
|
||||
|
@ -1716,9 +1718,9 @@ func yaml_parser_scan_version_directive_number(parser *yaml_parser_t, start_mark
|
|||
// Scan the value of a TAG-DIRECTIVE token.
|
||||
//
|
||||
// Scope:
|
||||
//
|
||||
// %TAG !yaml! tag:yaml.org,2002: \n
|
||||
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
//
|
||||
func yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool {
|
||||
var handle_value, prefix_value []byte
|
||||
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
// Source code and other details for the project are available at GitHub:
|
||||
//
|
||||
// https://github.com/go-yaml/yaml
|
||||
//
|
||||
package yaml
|
||||
|
||||
import (
|
||||
|
@ -76,7 +75,6 @@ type Marshaler interface {
|
|||
//
|
||||
// See the documentation of Marshal for the format of tags and a list of
|
||||
// supported tag options.
|
||||
//
|
||||
func Unmarshal(in []byte, out interface{}) (err error) {
|
||||
return unmarshal(in, out, false)
|
||||
}
|
||||
|
@ -195,7 +193,6 @@ func unmarshal(in []byte, out interface{}, strict bool) (err error) {
|
|||
// }
|
||||
// yaml.Marshal(&T{B: 2}) // Returns "b: 2\n"
|
||||
// yaml.Marshal(&T{F: 1}} // Returns "a: 1\nb: 0\n"
|
||||
//
|
||||
func Marshal(in interface{}) (out []byte, err error) {
|
||||
defer handleErr(&err)
|
||||
e := newEncoder()
|
||||
|
|
|
@ -408,7 +408,9 @@ type yaml_document_t struct {
|
|||
// The number of written bytes should be set to the size_read variable.
|
||||
//
|
||||
// [in,out] data A pointer to an application data specified by
|
||||
//
|
||||
// yaml_parser_set_input().
|
||||
//
|
||||
// [out] buffer The buffer to write the data from the source.
|
||||
// [in] size The size of the buffer.
|
||||
// [out] size_read The actual number of bytes read from the source.
|
||||
|
@ -604,13 +606,14 @@ type yaml_parser_t struct {
|
|||
// @a buffer to the output.
|
||||
//
|
||||
// @param[in,out] data A pointer to an application data specified by
|
||||
//
|
||||
// yaml_emitter_set_output().
|
||||
//
|
||||
// @param[in] buffer The buffer with bytes to be written.
|
||||
// @param[in] size The size of the buffer.
|
||||
//
|
||||
// @returns On success, the handler should return @c 1. If the handler failed,
|
||||
// the returned value should be @c 0.
|
||||
//
|
||||
type yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error
|
||||
|
||||
type yaml_emitter_state_t int
|
||||
|
|
|
@ -165,7 +165,6 @@ func yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool {
|
|||
// - 1 event for DOCUMENT-START
|
||||
// - 2 events for SEQUENCE-START
|
||||
// - 3 events for MAPPING-START
|
||||
//
|
||||
func yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool {
|
||||
if emitter.events_head == len(emitter.events) {
|
||||
return true
|
||||
|
|
|
@ -1614,11 +1614,11 @@ func yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool {
|
|||
// Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token.
|
||||
//
|
||||
// Scope:
|
||||
//
|
||||
// %YAML 1.1 # a comment \n
|
||||
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
// %TAG !yaml! tag:yaml.org,2002: \n
|
||||
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
//
|
||||
func yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool {
|
||||
// Eat '%'.
|
||||
start_mark := parser.mark
|
||||
|
@ -1719,11 +1719,11 @@ func yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool
|
|||
// Scan the directive name.
|
||||
//
|
||||
// Scope:
|
||||
//
|
||||
// %YAML 1.1 # a comment \n
|
||||
// ^^^^
|
||||
// %TAG !yaml! tag:yaml.org,2002: \n
|
||||
// ^^^
|
||||
//
|
||||
func yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark_t, name *[]byte) bool {
|
||||
// Consume the directive name.
|
||||
if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
|
||||
|
@ -1758,6 +1758,7 @@ func yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark
|
|||
// Scan the value of VERSION-DIRECTIVE.
|
||||
//
|
||||
// Scope:
|
||||
//
|
||||
// %YAML 1.1 # a comment \n
|
||||
// ^^^^^^
|
||||
func yaml_parser_scan_version_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, major, minor *int8) bool {
|
||||
|
@ -1797,6 +1798,7 @@ const max_number_length = 2
|
|||
// Scan the version number of VERSION-DIRECTIVE.
|
||||
//
|
||||
// Scope:
|
||||
//
|
||||
// %YAML 1.1 # a comment \n
|
||||
// ^
|
||||
// %YAML 1.1 # a comment \n
|
||||
|
@ -1834,9 +1836,9 @@ func yaml_parser_scan_version_directive_number(parser *yaml_parser_t, start_mark
|
|||
// Scan the value of a TAG-DIRECTIVE token.
|
||||
//
|
||||
// Scope:
|
||||
//
|
||||
// %TAG !yaml! tag:yaml.org,2002: \n
|
||||
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
//
|
||||
func yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool {
|
||||
var handle_value, prefix_value []byte
|
||||
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
// Source code and other details for the project are available at GitHub:
|
||||
//
|
||||
// https://github.com/go-yaml/yaml
|
||||
//
|
||||
package yaml
|
||||
|
||||
import (
|
||||
|
@ -84,7 +83,6 @@ type Marshaler interface {
|
|||
//
|
||||
// See the documentation of Marshal for the format of tags and a list of
|
||||
// supported tag options.
|
||||
//
|
||||
func Unmarshal(in []byte, out interface{}) (err error) {
|
||||
return unmarshal(in, out, false)
|
||||
}
|
||||
|
@ -214,7 +212,6 @@ func unmarshal(in []byte, out interface{}, strict bool) (err error) {
|
|||
// }
|
||||
// yaml.Marshal(&T{B: 2}) // Returns "b: 2\n"
|
||||
// yaml.Marshal(&T{F: 1}} // Returns "a: 1\nb: 0\n"
|
||||
//
|
||||
func Marshal(in interface{}) (out []byte, err error) {
|
||||
defer handleErr(&err)
|
||||
e := newEncoder()
|
||||
|
@ -368,7 +365,6 @@ const (
|
|||
//
|
||||
// var person Node
|
||||
// err := yaml.Unmarshal(data, &person)
|
||||
//
|
||||
type Node struct {
|
||||
// Kind defines whether the node is a document, a mapping, a sequence,
|
||||
// a scalar value, or an alias to another node. The specific data type of
|
||||
|
@ -421,7 +417,6 @@ func (n *Node) IsZero() bool {
|
|||
n.HeadComment == "" && n.LineComment == "" && n.FootComment == "" && n.Line == 0 && n.Column == 0
|
||||
}
|
||||
|
||||
|
||||
// LongTag returns the long form of the tag that indicates the data type for
|
||||
// the node. If the Tag field isn't explicitly defined, one will be computed
|
||||
// based on the node properties.
|
||||
|
|
|
@ -438,7 +438,9 @@ type yaml_document_t struct {
|
|||
// The number of written bytes should be set to the size_read variable.
|
||||
//
|
||||
// [in,out] data A pointer to an application data specified by
|
||||
//
|
||||
// yaml_parser_set_input().
|
||||
//
|
||||
// [out] buffer The buffer to write the data from the source.
|
||||
// [in] size The size of the buffer.
|
||||
// [out] size_read The actual number of bytes read from the source.
|
||||
|
@ -639,7 +641,6 @@ type yaml_parser_t struct {
|
|||
}
|
||||
|
||||
type yaml_comment_t struct {
|
||||
|
||||
scan_mark yaml_mark_t // Position where scanning for comments started
|
||||
token_mark yaml_mark_t // Position after which tokens will be associated with this comment
|
||||
start_mark yaml_mark_t // Position of '#' comment mark
|
||||
|
@ -659,13 +660,14 @@ type yaml_comment_t struct {
|
|||
// @a buffer to the output.
|
||||
//
|
||||
// @param[in,out] data A pointer to an application data specified by
|
||||
//
|
||||
// yaml_emitter_set_output().
|
||||
//
|
||||
// @param[in] buffer The buffer with bytes to be written.
|
||||
// @param[in] size The size of the buffer.
|
||||
//
|
||||
// @returns On success, the handler should return @c 1. If the handler failed,
|
||||
// the returned value should be @c 0.
|
||||
//
|
||||
type yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error
|
||||
|
||||
type yaml_emitter_state_t int
|
||||
|
|
Loading…
Reference in New Issue