fastcurd

package
v0.0.0-...-44a0b5b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 10, 2023 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PrimaryField    = "id"
	CreateTimeField = "ctime"
	UpdateTimeField = "utime"
	DeleteTimeField = "dtime"
)
View Source
const (
	SceneDefault = "default"
	NotLimit     = 0
)

Variables

View Source
var (
	// CondMapDbCond 条件映射 数据库条件
	CondMapDbCond = map[FilterCond]string{
		CondEq:           "=",
		CondLt:           "<",
		CondElt:          "<=",
		CondGt:           ">",
		CondEgt:          ">=",
		CondNeq:          "<>",
		CondBetweenValue: "BETWEEN",
		CondEqString:     "=",
		CondLike:         "LIKE",
		CondNotLike:      "NOT LIKE",
		CondNeqString:    "<>",
		CondBefore:       "<",
		CondAfter:        ">",
		CondBetweenTime:  "BETWEEN",
		CondIn:           "IN",
		CondNotIn:        "NOT IN",
	}
)

Functions

func BuildFilterCond

func BuildFilterCond(filterMap map[string]string, db *gorm.DB, filter Filter) *gorm.DB

func BuildOrderCond

func BuildOrderCond(orderKeyMap map[string]string, q *gorm.DB, order map[string]string) *gorm.DB

func FmtCondVal

func FmtCondVal(cond FilterCond, val interface{}) interface{}

func FmtValPlaceholder

func FmtValPlaceholder(cond FilterCond) interface{}

func IsValidQueryField

func IsValidQueryField(field string) bool

判断查询字段是否为合规的字符串 防注入

Types

type DelData

type DelData struct {
	IDs []int `json:"ids" binding:"required,min=1"`
}

type DetailData

type DetailData struct {
	ID    int                    `json:"id" binding:"required"`
	Scene string                 `json:"scene" binding:""`
	Extra map[string]interface{} `json:"extra" binding:""`
}

func (*DetailData) GetScene

func (d *DetailData) GetScene() string

type Filter

type Filter = map[string]FilterItem

type FilterCond

type FilterCond string
const (
	// 筛选条件
	CondUndefined FilterCond = "undefined"
	// 数值
	CondEq           FilterCond = "eq"
	CondLt           FilterCond = "lt"
	CondElt          FilterCond = "elt"
	CondGt           FilterCond = "gt"
	CondEgt          FilterCond = "egt"
	CondNeq          FilterCond = "neq"
	CondBetweenValue FilterCond = "betweenValue"
	// 字符串
	CondEqString  FilterCond = "eqString"
	CondLike      FilterCond = "like"
	CondNotLike   FilterCond = "notLike"
	CondNeqString FilterCond = "neqString"
	// 时间
	CondBefore      FilterCond = "before"
	CondAfter       FilterCond = "after"
	CondBetweenTime FilterCond = "betweenTime"
	// 数组
	CondIn    FilterCond = "in"
	CondNotIn FilterCond = "notIn"
	// 内部使用
	CondRaw FilterCond = "raw"

	// order
	OrderAsc  = "asc"
	OrderDesc = "desc"
)

type FilterItem

type FilterItem struct {
	Condition FilterCond
	Val       interface{}
}

type FullLimitListData

type FullLimitListData struct {
	ListData
	Limit int `json:"limit" binding:"omitempty,required,min=0"`
}

type IDData

type IDData struct {
	ID int `json:"id" binding:"required"`
}

type ListData

type ListData struct {
	Page   int                    `json:"page" binding:"omitempty,required,min=0"`
	Limit  int                    `json:"limit" binding:"omitempty,required,min=0,max=50"`
	Filter Filter                 `json:"filter" binding:""`
	Order  map[string]string      `json:"order" binding:""`
	Extra  map[string]interface{} `json:"extra" binding:""`
}

func (*ListData) GetScene

func (p *ListData) GetScene() string

type NullableDetailData

type NullableDetailData struct {
	ID    *int                   `json:"id" binding:"omitempty"`
	Scene string                 `json:"scene" binding:"omitempty"`
	Extra map[string]interface{} `json:"extra" binding:"omitempty"`
}

func (*NullableDetailData) GetScene

func (d *NullableDetailData) GetScene() string

type RespJsonExtra

type RespJsonExtra struct {
	ReqID    string      `json:"requestID,omitempty"`
	SQLs     interface{} `json:"sqls,omitempty"`
	ProcTime string      `json:"procTime" example:"0.2s"`
	TempData interface{} `json:"tempData,omitempty"`
}

type RetJSON

type RetJSON struct {
	Code  int            `json:"code" example:"0"`
	Data  interface{}    `json:"data,omitempty"`
	Msg   string         `json:"msg,omitempty" example:"提示信息"`
	Count *int           `json:"count,omitempty"`
	Page  int            `json:"page,omitempty"`
	Limit int            `json:"limit,omitempty"`
	Extra *RespJsonExtra `json:"extra,omitempty"`
}

通用返回json 所有的接口均返回此对象

type SearchData

type SearchData struct {
	Search string `json:"search" binding:"required"`
	ListData
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL