Documentation
¶
Index ¶
- Constants
- func CreateFolder(db *gorm.DB, parent, name string, user *User) (string, error)
- func GenUniqueKey(tx *gorm.DB, field string, size int) (key string)
- func GetTagsByCategory(db *gorm.DB, contentType string, form *TagsForm) ([]string, error)
- func MakeDuplicate(db *gorm.DB, obj any) error
- func MakePublish(db *gorm.DB, siteID, ID string, obj any, publish bool) error
- func QueryContentByTags(db *gorm.DB, contentType string, form *QueryByTagsForm) ([]string, error)
- func QueryTags(db *gorm.DB) ([]string, error)
- func SafeDraft(db *gorm.DB, siteID, ID string, obj any, draft string) error
- type BaseContent
- type Category
- type CategoryItem
- type CategoryItems
- type Comment
- type Config
- type ContentQueryResult
- type Group
- type GroupMember
- type GroupPermission
- type Media
- type MediaFolder
- type Page
- type Post
- type Profile
- type PublishLog
- type QueryByTagsForm
- type QueryByTagsResult
- type RelationContent
- type RenderCategory
- type RenderContent
- type Site
- type StringArray
- type SummaryResult
- type TagsForm
- type User
Constants ¶
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" // carrot admin, for /admin path with permissions check GroupTypeApp = "app" )
View Source
const TableNameCategory = "categories"
View Source
const TableNameComment = "comments"
View Source
const TableNameConfig = "configs"
View Source
const TableNameMedia = "medias"
View Source
const TableNamePage = "pages"
View Source
const TableNamePost = "posts"
View Source
const TableNameUser = "users"
Variables ¶
This section is empty.
Functions ¶
func GenUniqueKey ¶
GenUniqueKey generate a unique value for a field in a table.
func GetTagsByCategory ¶
Query tags by category
func QueryContentByTags ¶
Types ¶
type BaseContent ¶
type BaseContent struct {
UpdatedAt time.Time `json:"updatedAt" gorm:"index"`
CreatedAt time.Time `json:"createdAt" 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:"publishedAt"`
ContentType string `json:"contentType" gorm:"size:32"`
Remark string `json:"remark"`
}
type Category ¶
type Category struct {
SiteID string `json:"siteId" 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 QueryCategoryWithCount ¶
func (*Category) FindItem ¶
func (category *Category) FindItem(path string) *CategoryItem
type CategoryItem ¶
type CategoryItem struct {
Path string `json:"path"`
Name string `json:"name"`
Icon *object.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 Comment ¶
type Config ¶
type ContentQueryResult ¶
type ContentQueryResult struct {
*object.QueryResult
Relations []RelationContent `json:"relations,omitempty"`
Suggestions []RelationContent `json:"suggestions,omitempty"`
}
type Group ¶
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:"publicUrl,omitempty" gorm:"-"`
}
func (*Media) BuildPublicUrls ¶
type MediaFolder ¶
type MediaFolder struct {
Name string `json:"name"`
Path string `json:"path"`
FilesCount int64 `json:"filesCount"`
FoldersCount int64 `json:"foldersCount"`
}
func ListFolders ¶
func ListFolders(db *gorm.DB, path string) ([]MediaFolder, error)
type Page ¶
type Page struct {
BaseContent
SiteID string `json:"siteId" gorm:"primaryKey;uniqueIndex:,composite:_site_id"`
Site Site `json:"-"`
ID string `json:"id" gorm:"primaryKey;size:100;uniqueIndex:,composite:_site_id"`
IsDraft bool `json:"isDraft"`
Draft string `json:"-"`
Body string `json:"body"`
PreviewURL string `json:"previewUrl,omitempty" gorm:"size:200"`
CategoryID string `json:"categoryId,omitempty" gorm:"size:64;index:,composite:_category_id_path" label:"Category"`
CategoryPath string `json:"categoryPath,omitempty" gorm:"size:64;index:,composite:_category_id_path"`
}
type Post ¶
type Post struct {
BaseContent
SiteID string `json:"siteId" gorm:"primaryKey;uniqueIndex:,composite:_site_id"`
Site Site `json:"-"`
ID string `json:"id" gorm:"primaryKey;size:100;uniqueIndex:,composite:_site_id"`
IsDraft bool `json:"isDraft"`
Draft string `json:"-"`
Body string `json:"body"`
PreviewURL string `json:"previewUrl,omitempty" gorm:"size:200"`
CategoryID string `json:"categoryId,omitempty" gorm:"size:64;index:,composite:_category_id_path" label:"Category"`
CategoryPath string `json:"categoryPath,omitempty" gorm:"size:64;index:,composite:_category_id_path"`
}
type Profile ¶
type PublishLog ¶
type PublishLog struct {
ID uint `json:"id" gorm:"primarykey"`
CreatedAt time.Time `json:"createdAt"`
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:"contentId" gorm:"size:100;index:idx_content_with_id"` // post_id or page_id
Body string `json:"body"`
}
type QueryByTagsForm ¶
type QueryByTagsResult ¶
type RelationContent ¶
type RelationContent struct {
BaseContent
SiteID string `json:"siteId"`
ID string `json:"id"`
}
func GetRelations ¶
func GetSuggestions ¶
type RenderCategory ¶
type RenderCategory struct {
UUID string `json:"uuid"`
Name string `json:"name"`
Path string `json:"path,omitempty"`
PathName string `json:"pathName,omitempty"`
}
func NewRenderCategory ¶
func NewRenderCategory(db *gorm.DB, categoryID, categoryPath string) *RenderCategory
type RenderContent ¶
type RenderContent struct {
BaseContent
ID string `json:"id"`
SiteID string `json:"siteId"`
Category *RenderCategory `json:"category,omitempty"`
PageData any `json:"data,omitempty"`
PostBody string `json:"body,omitempty"`
IsDraft bool `json:"isDraft"`
Relations []RelationContent `json:"relations,omitempty"`
Suggestions []RelationContent `json:"suggestions,omitempty"`
}
func NewRenderContentFromPage ¶
func NewRenderContentFromPage(db *gorm.DB, page *Page) *RenderContent
func NewRenderContentFromPost ¶
func NewRenderContentFromPost(db *gorm.DB, post *Post, relations bool) *RenderContent
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"`
}
func GetSummary ¶
func GetSummary(db *gorm.DB) (result SummaryResult)
type User ¶
type User struct {
ID uint `json:"-" gorm:"primaryKey"`
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:"firstName,omitempty" gorm:"size:128"`
LastName string `json:"lastName,omitempty" gorm:"size:128"`
DisplayName string `json:"displayName,omitempty" gorm:"size:128"`
IsSuperUser bool `json:"-"`
IsStaff bool `json:"-"`
Enabled bool `json:"-"`
Activated bool `json:"-"`
LastLogin *time.Time `json:"lastLogin,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 ¶
Click to show internal directories.
Click to hide internal directories.