models

package
v1.9.2 Latest Latest
Warning

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

Go to latest
Published: Dec 22, 2024 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Media

type Media struct {
	gorm.Model
	Name        string    `gorm:"not null" form:"name"`
	Path        string    `gorm:"not null;unique" form:"path"`
	MimeType    string    `gorm:"not null" form:"mimeType"`
	Size        int64     `gorm:"not null" form:"size"`
	Description string    `gorm:"type:text" form:"description"`
	File        io.Reader `gorm:"-" form:"-"`
}

Media represents a media file in the system

func (*Media) BeforeCreate

func (m *Media) BeforeCreate(_ *gorm.DB) error

BeforeCreate hook to ensure media has a mime type

func (*Media) FetchFile

func (m *Media) FetchFile(storage storage.Provider) error

func (*Media) GetHTMLTag

func (m *Media) GetHTMLTag() string

GetHTMLTag returns the HTML tag for the media

func (*Media) GetMarkdownTag

func (m *Media) GetMarkdownTag() string

GetMarkdownTag returns the markdown tag for the media

type MediaRepository

type MediaRepository interface {
	Create(media *Media) error
	Update(media *Media) error
	Delete(media *Media) error
	FindByPath(path string) (*Media, error)
	FindByID(id uint) (*Media, error)
	FindByFilename(filename string) (*Media, error)
	FindAll() ([]*Media, error)
	SaveAll(media []*Media) error
}

MediaRepository defines the interface for media operations

type MenuItem struct {
	gorm.Model
	Label    string  `gorm:"not null" json:"label" form:"label"`
	URL      *string `gorm:"null" json:"url" form:"url"`       // External or internal URL
	PageID   *uint   `gorm:"null" json:"pageId" form:"pageId"` // Reference to Page
	Page     *Page   `gorm:"foreignKey:PageID" json:"page" form:"page"`
	Position int     `gorm:"not null;default:0" json:"position" form:"position"`
}
type MenuItemRepository interface {
	Create(item *MenuItem) error
	CreateAll(items []MenuItem) error
	Update(item *MenuItem) error
	Delete(item *MenuItem) error
	DeleteAll() error
	FindByID(id uint) (*MenuItem, error)
	FindAll() ([]*MenuItem, error)
	UpdatePositions(startPosition int) error
	GetNextPosition() int
	Move(id uint, direction string) error
}

MenuItemRepository defines the interface for menu item operations

type Page

type Page struct {
	gorm.Model
	Title       string `gorm:"not null" form:"title"`
	Slug        string `gorm:"uniqueIndex;not null" form:"slug"`
	Content     string `gorm:"not null" form:"content"`
	ContentType string `gorm:"not null;default:'markdown' " form:"contentType"` // 'markdown' or 'html'
	Visible     bool   `gorm:"not null" form:"visible"`
}

type PageRepository

type PageRepository interface {
	Create(page *Page) error
	Update(page *Page) error
	Delete(page *Page) error
	FindByID(id uint) (*Page, error)
	FindBySlug(slug string) (*Page, error)
	FindAll() ([]*Page, error)
	CountRelatedMenuItems(id uint, count *int64) error
}

PageRepository defines the interface for page operations

type Post

type Post struct {
	gorm.Model
	Title       string    `gorm:"not null" form:"title"`
	Slug        string    `gorm:"uniqueIndex;not null" form:"slug"`
	Content     string    `gorm:"not null" form:"content"`
	PublishedAt time.Time `gorm:"not null"`
	Visible     bool      `gorm:"not null" form:"visible"`
	Excerpt     *string   `gorm:"type:text" form:"excerpt"`
	Tags        []Tag     `gorm:"many2many:post_tags;" form:"tags"`
	AuthorID    uint      `gorm:"not null" form:"authorId"`
	Author      *User     `gorm:"foreignKey:AuthorID" form:"author"`
}

func (*Post) IsScheduled

func (p *Post) IsScheduled(timezone string) bool

IsScheduled returns true if the post is scheduled for future publication

type PostRepository

type PostRepository interface {
	Create(post *Post) error
	Update(post *Post) error
	Delete(post *Post) error
	FindByID(id uint) (*Post, error)
	FindBySlug(slug string) (*Post, error)
	FindByTag(tag string) ([]*Post, error)
	FindAllPaginated(page, perPage int) ([]Post, int64, error)
	FindVisiblePaginated(page, perPage int, timezone string) ([]Post, int64, error)
	FindAllByTag(tagID uint, page, perPage int) ([]Post, int64, error)
	FindVisibleByTag(tagID uint, page, perPage int, timezone string) ([]Post, int64, error)
	FindAll() ([]*Post, error)
	FindRecent(limit int) ([]*Post, error)
	AssociateTags(post *Post, tags []string) error
	CountByAuthor(user *User) (int64, error)
	CountByTag(tagID uint) (int64, error)
}

PostRepository defines the interface for post operations

type Settings

type Settings struct {
	gorm.Model
	Title        string `gorm:"not null" form:"title"`
	Subtitle     string `gorm:"not null" form:"subtitle"`
	Timezone     string `gorm:"not null" form:"timezone"`
	ChromaStyle  string `gorm:"not null" form:"chroma_style"`
	Theme        string `gorm:"not null" form:"theme"`
	PostsPerPage int    `gorm:"not null" form:"posts_per_page"`
	LogoID       *uint  `gorm:"" form:"logo_id"`
	UseFavicon   bool   `gorm:"not null;default:false" form:"use_favicon"`
}

Settings represents the site configuration

type SettingsRepository

type SettingsRepository interface {
	Get() (*Settings, error)
	Update(settings *Settings) error
	Create(settings Settings) error
}

SettingsRepository defines the interface for settings operations

type Tag

type Tag struct {
	gorm.Model
	Name string `gorm:"uniqueIndex;not null" form:"name"`
	Slug string `gorm:"uniqueIndex;not null" form:"slug"`
}

func (*Tag) BeforeCreate

func (t *Tag) BeforeCreate(tx *gorm.DB) error

BeforeCreate hook to ensure tag has a slug

func (*Tag) BeforeUpdate

func (t *Tag) BeforeUpdate(tx *gorm.DB) error

BeforeUpdate hook to ensure tag has a slug

type TagRepository

type TagRepository interface {
	Create(tag *Tag) error
	Update(tag *Tag) error
	Delete(tag *Tag) error
	FindByID(id uint) (*Tag, error)
	FindBySlug(slug string) (*Tag, error)
	FindByName(name string) (*Tag, error)
	FindAll() ([]*Tag, error)
	FindPostsAndCount() ([]struct {
		Tag
		PostCount int64
	}, error)
}

TagRepository defines the interface for tag operations

type User

type User struct {
	gorm.Model
	FirstName string
	LastName  string
	Email     string `gorm:"uniqueIndex"`
	Password  string
}

User represents a user in the system

type UserRepository

type UserRepository interface {
	Create(user *User) error
	Update(user *User) error
	Delete(user *User) error
	FindByID(id uint) (*User, error)
	FindByEmail(email string) (*User, error)
	FindAll() ([]*User, error)
	CountByEmail(email string) (int64, error)
	CountAll() (int64, error)
}

UserRepository defines the interface for user operations

Jump to

Keyboard shortcuts

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