package model

import (
	"time"

	"gorm.io/gorm"
)

// Post 帖子/文章模型
type Post struct {
	ID           uint           `gorm:"primarykey" json:"id"`
	Title        string         `gorm:"type:varchar(200);not null" json:"title"`
	Body         string         `gorm:"type:text" json:"body"`            // Markdown content
	Excerpt      string         `gorm:"type:varchar(500)" json:"excerpt"` // plain text summary for list
	UserID       uint           `gorm:"index;not null" json:"user_id"`
	Status       string         `gorm:"type:varchar(20);index;default:draft;not null" json:"status"`
	IsLocked     bool           `gorm:"default:false" json:"is_locked"`
	PendingTitle string         `gorm:"type:varchar(200);default:''" json:"pending_title,omitempty"`
	PendingBody  string         `gorm:"type:text" json:"pending_body,omitempty"`
	RejectReason string         `gorm:"type:varchar(500);default:''" json:"reject_reason,omitempty"`
	AllowComment bool           `gorm:"default:true" json:"allow_comment"`
	DeletedAt    gorm.DeletedAt `gorm:"index" json:"-"`
	CreatedAt    time.Time      `json:"created_at"`
	UpdatedAt    time.Time      `json:"updated_at"`

	// 非数据库字段（联表查询填充）
	// gorm:"-:migration" 指定不创建/迁移该列，"<-:false" 禁止写入，"column:author_name" 允许
	// 从 JOIN 查询的 users.username AS author_name 别名中读取
	AuthorName string `gorm:"-:migration;<-:false;column:author_name" json:"author_name,omitempty"`
}

// 帖子状态常量
const (
	PostStatusDraft    = "draft"
	PostStatusPending  = "pending"
	PostStatusApproved = "approved"
	PostStatusRejected = "rejected"
	PostStatusLocked   = "locked"
)
