wx-server/internal/dao/post.go

56 lines
1.4 KiB
Go

package dao
import (
"time"
"gorm.io/datatypes"
"gorm.io/gorm"
)
// 帖子表
type Post struct {
BaseModel
UserId int32 `gorm:"index;comment:'发帖人ID'"`
Title string `gorm:"index;type:varchar(255);comment:'帖子标题'"`
Content string `gorm:"type:text;comment:'帖子内容'"`
RoleIds datatypes.JSON `gorm:"comment:'关联角色'"`
}
func Post_Insert(data *Post) (uint64, error) {
if err := s.db.Create(data).Error; err != nil {
return 0, err
}
return uint64(data.ID), nil
}
func Post_Query(postId uint64) (*Post, error) {
var data Post
if err := s.db.Where("id = ?", postId).First(&data).Error; err != nil {
if err == gorm.ErrRecordNotFound {
return nil, nil
}
return nil, err
}
return &data, nil
}
func Post_Page_Query(start_time, stop_time time.Time, role_id int32) ([]*Post, error) {
var list []*Post
var err error
if role_id == int32(0) { // 不能根据role_id查询
err = s.db.Where("created_at between ? and ?", start_time, stop_time).Find(&list).Error
} else {
err = s.db.Where("created_at between ? and ?", start_time, stop_time).Where(datatypes.JSONArrayQuery("role_ids").Contains(role_id)).Find(&list).Error
}
if err != nil && err != gorm.ErrRecordNotFound {
return nil, err
}
return list, nil
}
func Post_Delete(postId uint64) error {
data := Post{}
data.ID = postId
return s.db.Delete(&data).Error
}