Documentation ¶
Index ¶
- Constants
- func GenUniqueKey(tx *gorm.DB, field string, size int) (key string)
- type Activity
- type AdminAccessCheck
- type AdminAction
- type AdminActionHandler
- type AdminAttribute
- type AdminBuildContext
- type AdminField
- type AdminForeign
- type AdminIcon
- type AdminObject
- type AdminQueryResult
- type AdminScript
- type AdminSelectOption
- type AdminValue
- type BaseContent
- type BaseField
- type BeforeCreateFunc
- type BeforeDeleteFunc
- type BeforeQueryRenderFunc
- type BeforeRenderFunc
- type BeforeUpdateFunc
- type Category
- type CategoryItem
- type CategoryItems
- type Club
- type ClubMember
- type Comment
- type Config
- type ContentIcon
- type ContentQueryResult
- type Filter
- type Group
- type GroupMember
- type GroupPermission
- type Media
- type MediaFolder
- type Order
- type Page
- type Post
- type PrepareQuery
- type Profile
- type PublishLog
- type QueryByTagsForm
- type QueryByTagsResult
- type QueryForm
- type QueryResult
- type QueryView
- type RelationContent
- type RenderCategory
- type RenderContent
- type Site
- type StringArray
- type SummaryResult
- type TagsForm
- type UploadResult
- type User
- type WebObject
- type WebObjectPrimaryField
Constants ¶
View Source
const ( ActivityKindBasketball = iota + 1 ActivityKindFootball ActivityKindVolleyball ActivityKindBadminton ActivityKindDinner ActivityKindOther )
View Source
const ( ActivityTypePrivate = iota + 1 ActivityTypePublic ActivityTypeClub )
View Source
const ( ActivityStageSignup = iota + 1 ActivityStageInProcess ActivityStageFinished ActivityStageAbort )
View Source
const ( ActivityFeeTypeFree = iota + 1 ActivityFeeTypeFixed ActivityFeeTypeAA ActivityFeeTypeMaleFixedFemaleAA ActivityFeeTypeMaleAAFemaleFixed )
View Source
const ( ClubPositionOwner = iota + 1 ClubPositionMember ClubPositionManager )
View Source
const ( PermissionAll = "all" PermissionCreate = "create" PermissionUpdate = "update" PermissionRead = "read" PermissionDelete = "delete" )
View Source
const ( GroupRoleAdmin = "admin" GroupRoleMember = "member" )
View Source
const ( GroupTypeAdmin = "admin" // admin, for /admin path with permissions check GroupTypeApp = "app" )
View Source
const ( FilterOpIsNot = "is not" FilterOpEqual = "=" FilterOpNotEqual = "<>" FilterOpIn = "in" FilterOpNotIn = "not_in" FilterOpGreater = ">" FilterOpGreaterOrEqual = ">=" FilterOpLess = "<" FilterOpLessOrEqual = "<=" FilterOpLike = "like" FilterOpBetween = "between" )
View Source
const ( OrderOpDesc = "desc" OrderOpAsc = "asc" )
View Source
const ( GET = 1 << 1 CREATE = 1 << 2 EDIT = 1 << 3 DELETE = 1 << 4 QUERY = 1 << 5 )
View Source
const (
DefaultQueryLimit = 102400 // 100k
)
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Activity ¶ added in v0.2.1
type Activity struct { BaseField ClubID uint `json:"club_id" gorm:"index"` Club Club `json:"-"` Kind uint `json:"kind" gorm:"index;default:1;comment:活动分类:1羽毛球,2篮球,3足球,4聚餐..."` // 活动分类:1羽毛球,2篮球,3足球,4聚餐... Type uint `json:"type" gorm:"index;default:1;comment:活动类型:1全局保护,2全局公开,3群组"` // 活动类型:1全局保护,2全局公开,3群组 Quota uint `json:"quota" gorm:"default:1;comment:报名名额"` // 报名名额 Waiting uint `json:"waiting" gorm:"default:1;comment:候补数量限制"` // 候补数量限制 Stage uint `json:"stage" gorm:"default:1;comment:活动阶段:1报名阶段,2活动阶段,3正常完成和结算,4手动终止活动"` // 活动阶段:1报名阶段,2活动阶段,3正常完成和结算,4手动终止活动 FeeType uint `` // 结算方式:1免费,2活动前,3活动后男女平均,4活动后男固定|女平摊,5活动后男平摊|女固定 /* 155-byte string literal not displayed */ FeeMale uint `json:"fee_male" gorm:"comment:男费用,单位:分"` // 男费用,单位:分 FeeFemale uint `json:"fee_female" gorm:"comment:女费用,单位:分"` // 女费用,单位:分 Address string `json:"address" gorm:"comment:活动地址"` // 活动地址 Ahead uint `json:"ahead" gorm:"default:24;comment:可提前取消时间(小时)"` // 可提前取消时间(小时) BeginAt time.Time `json:"begin_at" gorm:"index;comment:开始时间"` // 开始时间 EndAt time.Time `json:"end_at" gorm:"index;comment:结束时间"` // 结束时间 }
type AdminAccessCheck ¶ added in v0.2.0
type AdminAccessCheck func(c *fiber.Ctx, obj *AdminObject) error
Access control
type AdminAction ¶ added in v0.2.0
type AdminActionHandler ¶ added in v0.2.0
type AdminAttribute ¶ added in v0.2.0
type AdminAttribute struct { Default any `json:"default,omitempty"` Choices []AdminSelectOption `json:"choices,omitempty"` SingleChoice bool `json:"singleChoice,omitempty"` Widget string `json:"widget,omitempty"` FilterWidget string `json:"filterWidget,omitempty"` Help string `json:"help,omitempty"` }
type AdminBuildContext ¶ added in v0.2.0
type AdminField ¶ added in v0.2.0
type AdminField struct { Placeholder string `json:"placeholder,omitempty"` // Placeholder of the filed Label string `json:"label"` // Label of the filed NotColumn bool `json:"notColumn,omitempty"` // Not a column Required bool `json:"required,omitempty"` Name string `json:"name"` Type string `json:"type"` Tag string `json:"tag,omitempty"` Attribute *AdminAttribute `json:"attribute,omitempty"` CanNull bool `json:"canNull,omitempty"` IsArray bool `json:"isArray,omitempty"` Primary bool `json:"primary,omitempty"` Foreign *AdminForeign `json:"foreign,omitempty"` IsAutoID bool `json:"isAutoId,omitempty"` IsPtr bool `json:"isPtr,omitempty"` ElemType reflect.Type `json:"-"` FieldName string `json:"-"` }
type AdminForeign ¶ added in v0.2.0
type AdminObject ¶ added in v0.2.0
type AdminObject struct { Model any `json:"-"` Group string `json:"group"` // Group name Name string `json:"name"` // Name of the object Desc string `json:"desc,omitempty"` // Description Path string `json:"path"` // Path prefix Shows []string `json:"shows"` // Show fields Orders []Order `json:"orders"` // Default orders of the object Editables []string `json:"editables"` // Editable fields Filterables []string `json:"filterables"` // Filterable fields Orderables []string `json:"orderables"` // Orderable fields, can override Orders Searchables []string `json:"searchables"` // Searchable fields Requireds []string `json:"requireds,omitempty"` // Required fields PrimaryKeys []string `json:"primaryKeys"` // Primary keys name UniqueKeys []string `json:"uniqueKeys"` // Primary keys name PluralName string `json:"pluralName"` Fields []AdminField `json:"fields"` EditPage string `json:"editpage,omitempty"` ListPage string `json:"listpage,omitempty"` Scripts []AdminScript `json:"scripts,omitempty"` Styles []string `json:"styles,omitempty"` Permissions map[string]bool `json:"permissions,omitempty"` Actions []AdminAction `json:"actions,omitempty"` Icon *AdminIcon `json:"icon,omitempty"` Invisible bool `json:"invisible,omitempty"` Attributes map[string]AdminAttribute `json:"-"` // Field's extra attributes AccessCheck AdminAccessCheck `json:"-"` // Access control function BeforeCreate BeforeCreateFunc `json:"-"` BeforeRender BeforeRenderFunc `json:"-"` BeforeUpdate BeforeUpdateFunc `json:"-"` BeforeDelete BeforeDeleteFunc `json:"-"` TableName string `json:"-"` ModelElem reflect.Type `json:"-"` Ignores map[string]bool `json:"-"` PrimaryKeyMaping map[string]string `json:"-"` MarkDeletedField string `json:"-"` Weight int `json:"-"` }
type AdminQueryResult ¶ added in v0.2.0
type AdminScript ¶ added in v0.2.0
type AdminSelectOption ¶ added in v0.2.0
type AdminValue ¶ added in v0.2.0
type BaseContent ¶
type BaseContent struct { UpdatedAt time.Time `json:"updated_at" gorm:"index"` CreatedAt time.Time `json:"created_at" gorm:"index"` Thumbnail string `json:"thumbnail,omitempty" gorm:"size:500"` Tags string `json:"tags,omitempty" gorm:"size:200;index"` Title string `json:"title,omitempty" gorm:"size:200"` Alt string `json:"alt,omitempty"` Description string `json:"description,omitempty"` Keywords string `json:"keywords,omitempty"` CreatorID uint `json:"-"` Creator User `json:"-"` Author string `json:"author" gorm:"size:64"` Published bool `json:"published"` PublishedAt sql.NullTime `json:"published_at"` ContentType string `json:"content_type" gorm:"size:32"` Remark string `json:"remark"` }
type BaseField ¶ added in v0.2.1
type BaseField struct { ID uint `json:"id" gorm:"primarykey;autoIncrement:true"` UpdatedAt time.Time `json:"updated_at" gorm:"autoCreateTime"` CreatedAt time.Time `json:"created_at" gorm:"autoUpdateTime"` SiteID string `json:"site_id" gorm:"uniqueIndex:,composite:_site_name"` Site Site `json:"-"` Name string `json:"title" gorm:"size:200;uniqueIndex:,composite:_site_name"` Description string `json:"description,omitempty"` CreatorID uint `json:"-" gorm:"index"` Creator User `json:"-"` }
type BeforeCreateFunc ¶ added in v0.2.0
type BeforeDeleteFunc ¶ added in v0.2.0
type BeforeQueryRenderFunc ¶ added in v0.2.0
type BeforeQueryRenderFunc func(ctx *fiber.Ctx, r *QueryResult) (any, error)
type BeforeRenderFunc ¶ added in v0.2.0
type BeforeUpdateFunc ¶ added in v0.2.0
type Category ¶
type Category struct { SiteID string `json:"site_id" gorm:"uniqueIndex:,composite:_site_uuid"` Site Site `json:"-"` UUID string `json:"uuid" gorm:"size:12;uniqueIndex:,composite:_site_uuid"` Name string `json:"name" gorm:"size:200"` Items CategoryItems `json:"items,omitempty"` Count int `json:"count" gorm:"-"` }
func (*Category) FindItem ¶
func (category *Category) FindItem(path string) *CategoryItem
type CategoryItem ¶
type CategoryItem struct { Path string `json:"path"` Name string `json:"name"` Icon *ContentIcon `json:"icon,omitempty"` Children CategoryItems `json:"children,omitempty"` Count int `json:"count" gorm:"-"` }
func (*CategoryItem) Scan ¶
func (s *CategoryItem) Scan(input interface{}) error
type CategoryItems ¶
type CategoryItems []CategoryItem
func (*CategoryItems) Scan ¶
func (s *CategoryItems) Scan(input interface{}) error
type Club ¶ added in v0.2.1
type Club struct { BaseField Scores uint `json:"scores" gorm:"default:0;comment:俱乐部积分"` // 俱乐部积分 Level uint `json:"level" gorm:"default:1;comment:俱乐部等级"` // 俱乐部等级 Logo string `json:"logo" gorm:"comment:俱乐部LOGO"` // 俱乐部LOGO Notice string `json:"notice" gorm:"comment:俱乐部公告"` // 俱乐部公告 Address string `json:"address" gorm:"comment:俱乐部总部地址"` // 俱乐部总部地址 }
type ClubMember ¶ added in v0.2.1
type ClubMember struct { ID uint `json:"-" gorm:"primaryKey;autoIncrement"` CreatedAt time.Time `json:"-" gorm:"autoCreateTime"` Scores uint `json:"scores" gorm:"default:0"` UserID uint `json:"-"` User User `json:"user"` ClubID uint `json:"-"` Club Club `json:"club"` Position uint `json:"position" gorm:"default:1;comment:群组职位"` // 群组职位 DisplayName string `json:"display_name" gorm:"size:200;comment:群组昵称"` // 群组昵称 EnterAt time.Time `json:"enter_at" gorm:"comment:进入群组时间"` // 进入群组时间 }
type ContentIcon ¶ added in v0.2.0
type ContentIcon AdminIcon
func (*ContentIcon) Scan ¶ added in v0.2.0
func (s *ContentIcon) Scan(input interface{}) error
type ContentQueryResult ¶
type ContentQueryResult struct { *QueryResult Relations []RelationContent `json:"relations,omitempty"` Suggestions []RelationContent `json:"suggestions,omitempty"` }
type Filter ¶ added in v0.2.0
type Group ¶
type Group struct { ID uint `json:"-" gorm:"primaryKey;autoIncrement"` CreatedAt time.Time `json:"-" gorm:"autoCreateTime"` UpdatedAt time.Time `json:"-"` Name string `json:"name" gorm:"size:200"` Type string `json:"type" gorm:"size:24;index"` Extra string `json:"extra"` Permission GroupPermission `json:"-"` }
type GroupMember ¶
type GroupPermission ¶
type GroupPermission struct {
Permissions []string
}
permission format users.read,users.create,users.update,users.delete, user.* pages.publish,pages.update,page.delete,page.*
func (*GroupPermission) Scan ¶
func (p *GroupPermission) Scan(value interface{}) error
type Media ¶
type Media struct { BaseContent Size int64 `json:"size"` Directory bool `json:"directory" gorm:"index"` Path string `json:"path" gorm:"size:200;uniqueIndex:,composite:_path_name"` Name string `json:"name" gorm:"size:200;uniqueIndex:,composite:_path_name"` Ext string `json:"ext" gorm:"size:100"` Dimensions string `json:"dimensions" gorm:"size:200"` // x*y StorePath string `json:"-" gorm:"size:300"` External bool `json:"external"` PublicUrl string `json:"public_url,omitempty" gorm:"-"` }
func (*Media) BuildPublicUrls ¶
type MediaFolder ¶
type Page ¶
type Page struct { BaseContent SiteID string `json:"site_id" gorm:"primaryKey;uniqueIndex:,composite:_site_id"` Site Site `json:"-"` ID string `json:"id" gorm:"primaryKey;size:100;uniqueIndex:,composite:_site_id"` IsDraft bool `json:"is_draft"` Draft string `json:"-"` Body string `json:"body"` PreviewURL string `json:"preview_url,omitempty" gorm:"size:200"` CategoryID string `json:"category_id,omitempty" gorm:"size:64;index:,composite:_category_id_path" label:"Category"` CategoryPath string `json:"category_path,omitempty" gorm:"size:64;index:,composite:_category_id_path"` }
type Post ¶
type Post struct { BaseContent SiteID string `json:"site_id" gorm:"primaryKey;uniqueIndex:,composite:_site_id"` Site Site `json:"-"` ID string `json:"id" gorm:"primaryKey;size:100;uniqueIndex:,composite:_site_id"` IsDraft bool `json:"is_draft"` Draft string `json:"-"` Body string `json:"body"` PreviewURL string `json:"preview_url,omitempty" gorm:"size:200"` CategoryID string `json:"category_id,omitempty" gorm:"size:64;index:,composite:_category_id_path" label:"Category"` CategoryPath string `json:"category_path,omitempty" gorm:"size:64;index:,composite:_category_id_path"` }
type PrepareQuery ¶ added in v0.2.0
type Profile ¶
type PublishLog ¶
type PublishLog struct { ID uint `json:"id" gorm:"primarykey"` CreatedAt time.Time `json:"created_at"` AuthorID uint `json:"-"` Author User `json:"author"` Content string `json:"content" gorm:"size:12;index:idx_content_with_id"` // post_id or page_id ContentID string `json:"content_id" gorm:"size:100;index:idx_content_with_id"` // post_id or page_id Body string `json:"body"` }
type QueryByTagsForm ¶
type QueryByTagsResult ¶
type QueryForm ¶ added in v0.2.0
type QueryForm struct { Pos int `json:"pos"` Limit int `json:"limit"` Keyword string `json:"keyword,omitempty"` Filters []Filter `json:"filters,omitempty"` Orders []Order `json:"orders,omitempty"` ForeignMode bool `json:"foreign"` // for foreign key ViewFields []string `json:"-"` // for view SearchFields []string `json:"-"` // for keyword }
type QueryResult ¶ added in v0.2.0
type QueryView ¶ added in v0.2.0
type QueryView struct { Path string `json:"path"` Method string `json:"method"` Desc string `json:"desc"` Prepare PrepareQuery }
type RelationContent ¶
type RelationContent struct { BaseContent SiteID string `json:"site_id"` ID string `json:"id"` }
type RenderCategory ¶
type RenderContent ¶
type RenderContent struct { BaseContent ID string `json:"id"` SiteID string `json:"site_id"` Category *RenderCategory `json:"category,omitempty"` PageData any `json:"data,omitempty"` PostBody string `json:"body,omitempty"` IsDraft bool `json:"is_draft"` Relations []RelationContent `json:"relations,omitempty"` Suggestions []RelationContent `json:"suggestions,omitempty"` }
type Site ¶
type StringArray ¶
type StringArray []string
func (*StringArray) Scan ¶
func (s *StringArray) Scan(input interface{}) error
type SummaryResult ¶
type SummaryResult struct { SiteCount int64 `json:"sites"` PageCount int64 `json:"pages"` PostCount int64 `json:"posts"` CategoryCount int64 `json:"categories"` MediaCount int64 `json:"media"` LatestPosts []*RenderContent `json:"latestPosts"` BuildTime string `json:"buildTime"` CanExport bool `json:"canExport"` }
type UploadResult ¶ added in v0.2.0
type UploadResult struct { PublicUrl string `json:"publicUrl"` Thumbnail string `json:"thumbnail"` Path string `json:"path"` Name string `json:"name"` External bool `json:"external"` StorePath string `json:"storePath"` Dimensions string `json:"dimensions"` Ext string `json:"ext"` Size int64 `json:"size"` ContentType string `json:"contentType"` }
type User ¶
type User struct { ID uint `json:"-" gorm:"primaryKey;autoIncrement"` CreatedAt time.Time `json:"-" gorm:"autoCreateTime"` UpdatedAt time.Time `json:"-" gorm:"autoUpdateTime"` Email string `json:"email" gorm:"size:128;uniqueIndex"` Password string `json:"-" gorm:"size:128"` Phone string `json:"phone,omitempty" gorm:"size:64;index"` FirstName string `json:"first_name,omitempty" gorm:"size:128"` LastName string `json:"last_name,omitempty" gorm:"size:128"` DisplayName string `json:"display_name,omitempty" gorm:"size:128"` IsSuperUser bool `json:"-"` IsStaff bool `json:"-"` Enabled bool `json:"-"` Activated bool `json:"-"` LastLogin *time.Time `json:"last_login,omitempty"` LastLoginIP string `json:"-" gorm:"size:128"` Source string `json:"-" gorm:"size:64;index"` Locale string `json:"locale,omitempty" gorm:"size:20"` Timezone string `json:"timezone,omitempty" gorm:"size:200"` Profile *Profile `json:"profile,omitempty"` AuthToken string `json:"token,omitempty" gorm:"-"` }
func (*User) GetProfile ¶
func (*User) GetVisibleName ¶
type WebObject ¶ added in v0.2.0
type WebObject struct { Model any Group string Name string Desc string AuthRequired bool Editables []string Filterables []string Orderables []string Searchables []string BeforeCreate BeforeCreateFunc BeforeUpdate BeforeUpdateFunc BeforeDelete BeforeDeleteFunc BeforeRender BeforeRenderFunc BeforeQueryRender BeforeQueryRenderFunc Views []QueryView AllowMethods int PrimaryKeys []WebObjectPrimaryField UniqueKeys []WebObjectPrimaryField TableName string // Model type ModelElem reflect.Type // Map json tag to struct field name. such as: // UUID string `json:"id"` => {"id" : "UUID"} JsonToFields map[string]string // Map json tag to field kind. such as: // UUID string `json:"id"` => {"id": string} JsonToKinds map[string]reflect.Kind }
Click to show internal directories.
Click to hide internal directories.