package schema

import (
	"github.guxuan/haibei/pkg/util"
)

// Defining the `Notice` struct.
type Notice struct {
	util.BaseModel
	Title    string `json:"title" gorm:"size:128;not null;index"`
	Content  string `json:"content" gorm:"size:2048;not null"`
	Sequence int    `json:"sequence" gorm:"index;default:0"`
	AreaID   uint   `json:"areaId" gorm:"index;comment:城市id"`

	Status string `json:"status" gorm:"size:20;index"`
}

// Defining the query parameters for the `Notice` struct.
type NoticeQueryParam struct {
	util.PaginationParam
	AreaID uint `form:"areaId"`
}

// Defining the query options for the `Notice` struct.
type NoticeQueryOptions struct {
	util.QueryOptions
}

// Defining the query result for the `Notice` struct.
type NoticeQueryResult struct {
	Data       Notices
	PageResult *util.PaginationResult
}

// Defining the slice of `Notice` struct.
type Notices []*Notice

// Defining the data structure for creating a `Notice` struct.
type NoticeForm struct {
	Title    string `json:"title" `
	Content  string `json:"content"`
	Sequence int    `json:"sequence" `
	Status   string `json:"status"`
	AreaID   uint   `json:"areaId"`
}

// A validation function for the `NoticeForm` struct.
func (a *NoticeForm) Validate() error {
	return nil
}

// Convert `NoticeForm` to `Notice` object.
func (a *NoticeForm) FillTo(notice *Notice) error {
	notice.Title = a.Title
	notice.Content = a.Content
	notice.Sequence = a.Sequence
	notice.Status = a.Status
	notice.AreaID = a.AreaID
	return nil
}
