README
¶
gweb
介绍
基于Gin和Gorm的web框架
软件架构
软件架构说明
安装教程
- xxxx
- xxxx
- xxxx
使用说明
- xxxx
- xxxx
- xxxx
参与贡献
- Fork 本仓库
- 新建 Feat_xxx 分支
- 提交代码
- 新建 Pull Request
特技
- 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
- Gitee 官方博客 blog.gitee.com
- 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
- GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
- Gitee 官方提供的使用手册 https://gitee.com/help
- Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/
Documentation
¶
Index ¶
- Constants
- func BcryptCheck(password, hash string) bool
- func BcryptHash(password string) string
- func CloneDB(db *gorm.DB) *gorm.DB
- type AppCache
- func (c *AppCache) CleanupInterval() time.Duration
- func (c *AppCache) DefaultExpiration() time.Duration
- func (c *AppCache) Get(key string) (any, bool)
- func (c *AppCache) LoadMap(data map[string]any)
- func (c *AppCache) Register(key string, exprir time.Duration, getter func() any)
- func (c *AppCache) Set(key string, value any, expiration time.Duration)
- type AppState
- type Context
- func (c *Context) CurrentUserID() uint
- func (c *Context) Error(err string)
- func (c *Context) Errorf(err string, args ...any)
- func (c *Context) Fail(message string)
- func (c *Context) FailWithData(message string, data any)
- func (c *Context) Failf(message string, args ...any)
- func (c *Context) File(filepath string, deleteAfterRespond bool)
- func (c *Context) FileAttachment(filepath string, filename string, deleteAfterRespond bool)
- func (c *Context) GetClaim() *auth.UserClaim
- func (c *Context) GetData(key string, defaultVal any) any
- func (c *Context) MustGetClaim() *auth.UserClaim
- func (c *Context) ParamFloat32(key string, defaultValue float32) float32
- func (c *Context) ParamFloat64(key string, defaultValue float64) float64
- func (c *Context) ParamInt(key string, defaultValue int) int
- func (c *Context) RawMap() map[string]any
- func (c *Context) SetClaim(claim *auth.UserClaim)
- func (c *Context) ShouldBind(obj any) map[string]any
- func (c *Context) ShouldBindJSON(obj any) map[string]any
- func (c *Context) ShouldBindQuery(obj interface{})
- func (c *Context) Success()
- func (c *Context) SuccessWithData(data any)
- type CronTaskInfo
- type DB
- func (db *DB) Clone() *DB
- func (db *DB) Count() (int64, error)
- func (db *DB) Create(value ...any) error
- func (db *DB) CreateInBatches(value any, batchSize int) error
- func (db *DB) Delete(value interface{}, conds ...interface{}) error
- func (db *DB) Distinct(args ...interface{}) *DB
- func (db *DB) Exec(sql string, value ...any) error
- func (db *DB) Find(dest any) error
- func (db *DB) FindOrPaginate(dest any, pi int, ps int) (any, error)
- func (db *DB) First(dest any, conds ...any) error
- func (db *DB) FirstAndInit(dest any, attrs ...any) error
- func (db *DB) FirstOrCreate(dest any, attrs ...any) error
- func (db *DB) FirstOrInit(dest any, attrs ...any) error
- func (db *DB) Group(fields ...string) *DB
- func (db *DB) Joins(query string, args ...interface{}) *DB
- func (db *DB) Last(dest any, conds ...any) error
- func (db *DB) Limit(limit int) *DB
- func (db *DB) Model(value any) *DB
- func (db *DB) NewGroup(fields ...string) *DB
- func (db *DB) NewSelect(query interface{}, args ...interface{}) *DB
- func (db *DB) Offset(offset int) *DB
- func (db *DB) Omit(columns ...string) *DB
- func (db *DB) Or(query interface{}, args ...interface{}) *DB
- func (db *DB) Order(fields ...string) *DB
- func (db *DB) Paginate(dest any, pi int, ps int) (*Pagination[any], error)
- func (db *DB) PaginateScan(dest any, pi int, ps int) (*Pagination[any], error)
- func (db *DB) Panic() *DB
- func (db *DB) Preload(query string, args ...interface{}) *DB
- func (db *DB) Raw(sql string, values ...interface{}) *DB
- func (db *DB) RowsAffected() int64
- func (db *DB) Run(fc func(db *DB)) *DB
- func (db *DB) Save(value any, omitFK bool) error
- func (db *DB) Scan(dest any) error
- func (db *DB) ScanOrPaginate(dest any, pi int, ps int) (any, error)
- func (db *DB) Select(query interface{}, args ...interface{}) *DB
- func (db *DB) Sum(query string) (float64, error)
- func (db *DB) Table(name string) *DB
- func (db *DB) Transaction(fc func(tx *DB) error) error
- func (db *DB) Update(column string, value interface{}) error
- func (db *DB) UpdateOrCreate(dest any, conds map[string]any, data map[string]any) error
- func (db *DB) Updates(data any) error
- func (db *DB) Where(query any, args ...any) *DB
- type GormColumn
- type HandlerFunc
- func MiddlewareJWT(config *conf.AppConfig) HandlerFunc
- func MustBeSuperuser() HandlerFunc
- func MustHasAnyPermission(permissions ...string) HandlerFunc
- func MustHasAnyRole(roles ...string) HandlerFunc
- func MustHasPermission(permissions ...string) HandlerFunc
- func MustHasRole(roles ...string) HandlerFunc
- type HttpMethod
- type IAppTask
- type Model
- type Pagination
- type QuerySet
- func (qs *QuerySet[T]) Clone() *QuerySet[T]
- func (qs *QuerySet[T]) Conds(conds map[string]any) *QuerySet[T]
- func (qs *QuerySet[T]) Distinct(args ...interface{}) *QuerySet[T]
- func (qs *QuerySet[T]) FindAll() ([]T, error)
- func (qs *QuerySet[T]) FindOrPaginate2(pi int, ps int) (any, error)
- func (qs *QuerySet[T]) ForEach(callback func(record T) error) error
- func (qs *QuerySet[T]) GetFirst(conds ...any) (*T, error)
- func (qs *QuerySet[T]) Group(fields ...string) *QuerySet[T]
- func (qs *QuerySet[T]) Joins(query string, args ...interface{}) *QuerySet[T]
- func (qs *QuerySet[T]) Limit(limit int) *QuerySet[T]
- func (qs *QuerySet[T]) Offset(offset int) *QuerySet[T]
- func (qs *QuerySet[T]) Omit(columns ...string) *QuerySet[T]
- func (qs *QuerySet[T]) Or(query interface{}, args ...interface{}) *QuerySet[T]
- func (qs *QuerySet[T]) Order(fields ...string) *QuerySet[T]
- func (qs *QuerySet[T]) Paginate2(pi int, ps int) (*Pagination[[]T], error)
- func (qs *QuerySet[T]) Panic() *QuerySet[T]
- func (qs *QuerySet[T]) Preload(query string, args ...interface{}) *QuerySet[T]
- func (qs *QuerySet[T]) Raw(sql string, values ...interface{}) *QuerySet[T]
- func (qs *QuerySet[T]) Run(fc func(qs *QuerySet[T])) *QuerySet[T]
- func (qs *QuerySet[T]) Select(query interface{}, args ...interface{}) *QuerySet[T]
- func (qs *QuerySet[T]) Table(name string) *QuerySet[T]
- func (qs *QuerySet[T]) Where(query any, args ...any) *QuerySet[T]
- type Route
- type RouterGroup
- func (r *RouterGroup) Config(relativePath string, fc func(*RouterGroup)) *RouterGroup
- func (r *RouterGroup) DELETE(relativePath string, handlers ...HandlerFunc) *Route
- func (r *RouterGroup) GET(relativePath string, handlers ...HandlerFunc) *Route
- func (r *RouterGroup) Group(relativePath string, handlers ...HandlerFunc) *RouterGroup
- func (r *RouterGroup) HEAD(relativePath string, handlers ...HandlerFunc) *Route
- func (r *RouterGroup) OPTIONS(relativePath string, handlers ...HandlerFunc) *Route
- func (r *RouterGroup) PATCH(relativePath string, handlers ...HandlerFunc) *Route
- func (r *RouterGroup) POST(relativePath string, handlers ...HandlerFunc) *Route
- func (r *RouterGroup) PUT(relativePath string, handlers ...HandlerFunc) *Route
- func (r *RouterGroup) UseMiddleware(middleware ...HandlerFunc) *RouterGroup
- type TaskHandler
- type TaskManager
- func (m *TaskManager) AddTask(task IAppTask) (IAppTask, error)
- func (m *TaskManager) PauseTask(task IAppTask)
- func (m *TaskManager) ResumeTask(task IAppTask)
- func (m *TaskManager) RunTask(task IAppTask) error
- func (m *TaskManager) StopTask(task IAppTask) error
- func (m *TaskManager) UpdateTask(task IAppTask)
- type TaskState
- type Variable
- type VariableFunc
- type WebApp
- func (app *WebApp) AddLogRoutes()
- func (app *WebApp) AddVariableRoutes()
- func (app *WebApp) BindConfig(key string, dest any) error
- func (app *WebApp) GetConfig() *conf.AppConfig
- func (app *WebApp) Init(env string) error
- func (app *WebApp) InitConfig(filePath string) error
- func (app *WebApp) LogDirectory() string
- func (app *WebApp) MigrateDbModels()
- func (app *WebApp) RegisterCommand(command *cobra.Command)
- func (app *WebApp) RegisterModel(models ...any)
- func (app *WebApp) RegisterRoutes(fn func(router *RouterGroup))
- func (app *WebApp) RegisterVariable(v Variable)
- func (app *WebApp) Run(host string, port int)
- func (app *WebApp) RunFromCommand()
- func (app *WebApp) StartMaintain()
- func (app *WebApp) StaticDirectory() string
- func (app *WebApp) StopMaintain()
- func (app *WebApp) UseCache(cache types.IAppCache)
- func (app *WebApp) UseEventHandler(handler types.IEventHandler)
Constants ¶
View Source
const ( JoinTypeDB = 1 JoinTypeStr = 2 )
View Source
const (
Version = "1.0.0"
)
Variables ¶
This section is empty.
Functions ¶
Types ¶
type AppCache ¶
type AppCache struct { *cache.Cache // contains filtered or unexported fields }
func NewCache ¶
func NewCache(config *conf.CacheConfig) *AppCache
func (*AppCache) CleanupInterval ¶
func (*AppCache) DefaultExpiration ¶
type Context ¶
type Context struct { *gin.Context App *WebApp Route *Route // contains filtered or unexported fields }
func (*Context) FailWithData ¶
func (*Context) FileAttachment ¶
func (*Context) MustGetClaim ¶
func (*Context) ParamFloat32 ¶
func (*Context) ParamFloat64 ¶
func (*Context) ShouldBind ¶
根据请求方式处理数据绑定,一般用于GET和POST都支持的查询接口
func (*Context) ShouldBindJSON ¶
替代ShouldBindJSON,同时返回经过过滤的map数据
func (*Context) ShouldBindQuery ¶
func (c *Context) ShouldBindQuery(obj interface{})
func (*Context) SuccessWithData ¶
type CronTaskInfo ¶
type CronTaskInfo struct { CronID cron.EntryID `json:"cron_id"` Key string `json:"key"` Name string `json:"name"` CronExpression string `json:"cron_expression"` Desc string `json:"desc"` Enabled bool `json:"enabled"` AllowPause bool `json:"allow_pause"` AllowStop bool `json:"allow_stop,omitempty"` State TaskState `json:"state"` TimeStart *time.Time `json:"time_start,omitempty"` TimeEnd *time.Time `json:"time_end,omitempty"` TimeCost float64 `json:"time_cost,omitempty"` // 运行耗时 Error string `json:"error,omitempty"` Traceback string `json:"traceback,omitempty"` }
func (*CronTaskInfo) IsIdle ¶ added in v1.0.2
func (info *CronTaskInfo) IsIdle() bool
type DB ¶
func (*DB) FindOrPaginate ¶
根据需要选择分页或者不分页,用于接口中分页或者不分页都要支持的情况
func (*DB) Joins ¶
加强版的Joins,支持Select字段追加,比如:
db.Joins("Project", DB.Select("id", "name"))
db.Joins("Project", DB.Select("fullname"))
相当于:db.Joins("Project", DB.Select("id", "name", "fullname"))
不至于使后写的冲掉前面的,有些逻辑场景下,查询但不需要Select字段,有些则需要, 但两个逻辑同时出现在一个复杂逻辑中, 就不允许相互冲掉
func (*DB) PaginateScan ¶
func (*DB) UpdateOrCreate ¶
type GormColumn ¶
type GormColumn struct { IsPrimaryKey bool `json:"primary_key" form:"primary_key"` Column string `json:"column" form:"column"` // 数据库字段名称 FieldName string `json:"field_name" form:"field_name"` // 字段名称 FieldType string `json:"field_type" form:"field_type"` Size int `json:"size" form:"size"` IsFKField bool `json:"is_fk_field"` DefaultValue string `json:"default_value" form:"default_value"` }
type HandlerFunc ¶
type HandlerFunc func(*Context)
func MiddlewareJWT ¶
func MiddlewareJWT(config *conf.AppConfig) HandlerFunc
func MustBeSuperuser ¶
func MustBeSuperuser() HandlerFunc
func MustHasAnyPermission ¶
func MustHasAnyPermission(permissions ...string) HandlerFunc
func MustHasAnyRole ¶
func MustHasAnyRole(roles ...string) HandlerFunc
func MustHasPermission ¶
func MustHasPermission(permissions ...string) HandlerFunc
func MustHasRole ¶
func MustHasRole(roles ...string) HandlerFunc
type HttpMethod ¶
type HttpMethod string
type MiddlewareFunc func(*Context)
const ( HttpGET HttpMethod = "GET" HttpPOST HttpMethod = "POST" HttpPUT HttpMethod = "PUT" HttpDELETE HttpMethod = "DELETE" HttpPATCH HttpMethod = "PATCH" HttpOPTIONS HttpMethod = "OPTIONS" HttpHEAD HttpMethod = "HEAD" )
type IAppTask ¶
type IAppTask interface { GetInfo() *CronTaskInfo UpdateInfo(info CronTaskInfo) Run(handler *TaskHandler) error }
type Pagination ¶
type QuerySet ¶
DB的泛型版本
func (*QuerySet[T]) FindOrPaginate2 ¶
func (*QuerySet[T]) Paginate2 ¶
func (qs *QuerySet[T]) Paginate2(pi int, ps int) (*Pagination[[]T], error)
type Route ¶
type Route struct { App *WebApp // contains filtered or unexported fields }
func (*Route) IsMaintainAllow ¶
func (*Route) MaintainAllow ¶
func (r *Route) MaintainAllow()
type RouterGroup ¶
type RouterGroup struct { *gin.RouterGroup App *WebApp }
func (*RouterGroup) Config ¶
func (r *RouterGroup) Config(relativePath string, fc func(*RouterGroup)) *RouterGroup
func (*RouterGroup) DELETE ¶
func (r *RouterGroup) DELETE(relativePath string, handlers ...HandlerFunc) *Route
func (*RouterGroup) GET ¶
func (r *RouterGroup) GET(relativePath string, handlers ...HandlerFunc) *Route
func (*RouterGroup) Group ¶
func (r *RouterGroup) Group(relativePath string, handlers ...HandlerFunc) *RouterGroup
func (*RouterGroup) HEAD ¶
func (r *RouterGroup) HEAD(relativePath string, handlers ...HandlerFunc) *Route
func (*RouterGroup) OPTIONS ¶
func (r *RouterGroup) OPTIONS(relativePath string, handlers ...HandlerFunc) *Route
func (*RouterGroup) PATCH ¶
func (r *RouterGroup) PATCH(relativePath string, handlers ...HandlerFunc) *Route
func (*RouterGroup) POST ¶
func (r *RouterGroup) POST(relativePath string, handlers ...HandlerFunc) *Route
func (*RouterGroup) PUT ¶
func (r *RouterGroup) PUT(relativePath string, handlers ...HandlerFunc) *Route
func (*RouterGroup) UseMiddleware ¶
func (r *RouterGroup) UseMiddleware(middleware ...HandlerFunc) *RouterGroup
type TaskHandler ¶
type TaskHandler struct {
// contains filtered or unexported fields
}
func NewTaskHandler ¶
func NewTaskHandler() *TaskHandler
func (*TaskHandler) OnPause ¶
func (t *TaskHandler) OnPause(callback func())
func (*TaskHandler) OnResume ¶
func (t *TaskHandler) OnResume(callback func())
func (*TaskHandler) OnStop ¶
func (t *TaskHandler) OnStop(callback func())
func (*TaskHandler) Stop ¶
func (t *TaskHandler) Stop()
func (*TaskHandler) Wait ¶
func (t *TaskHandler) Wait()
type TaskManager ¶
type TaskManager struct { *cron.Cron // contains filtered or unexported fields }
func NewTaskManager ¶
func NewTaskManager() *TaskManager
func (*TaskManager) PauseTask ¶
func (m *TaskManager) PauseTask(task IAppTask)
func (*TaskManager) ResumeTask ¶
func (m *TaskManager) ResumeTask(task IAppTask)
func (*TaskManager) RunTask ¶
func (m *TaskManager) RunTask(task IAppTask) error
func (*TaskManager) StopTask ¶
func (m *TaskManager) StopTask(task IAppTask) error
func (*TaskManager) UpdateTask ¶
func (m *TaskManager) UpdateTask(task IAppTask)
type Variable ¶
type Variable struct { Name string `json:"name"` Key string `json:"key"` Module string `json:"module"` GetValue VariableFunc `json:"-"` }
type VariableFunc ¶
type WebApp ¶
type WebApp struct { Directory string Viper *viper.Viper Cache types.IAppCache Router *RouterGroup DB *DB Models []any JWT *auth.JWT Tasks *TaskManager AuthCtrl types.IAuthController EventHandler types.IEventHandler // contains filtered or unexported fields }
func Application ¶
func (*WebApp) InitConfig ¶
func (*WebApp) LogDirectory ¶
func (*WebApp) RegisterRoutes ¶
func (app *WebApp) RegisterRoutes(fn func(router *RouterGroup))
func (*WebApp) RegisterVariable ¶
func (*WebApp) StaticDirectory ¶
func (*WebApp) UseEventHandler ¶
func (app *WebApp) UseEventHandler(handler types.IEventHandler)
Source Files
¶
Click to show internal directories.
Click to hide internal directories.