2024-12-01 18:04:02 +08:00
|
|
|
package impl
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
2024-12-08 14:46:15 +08:00
|
|
|
"fmt"
|
2024-12-01 18:04:02 +08:00
|
|
|
|
2024-12-08 14:46:15 +08:00
|
|
|
"github.com/infraboard/mcube/v2/ioc/config/datasource"
|
2024-12-01 18:04:02 +08:00
|
|
|
"gitlab.com/go-course-project/go17/vblog/apps/blog"
|
|
|
|
)
|
|
|
|
|
|
|
|
var BlogService blog.Service = &BlogServiceImpl{}
|
|
|
|
|
|
|
|
// 定义一个struct, 用于实现 UserService就是刚才定义的接口
|
|
|
|
// 怎么才能判断这个结构体没有实现这个接口
|
|
|
|
type BlogServiceImpl struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
// CreateBlog implements blog.Service.
|
2024-12-08 14:46:15 +08:00
|
|
|
func (b *BlogServiceImpl) CreateBlog(ctx context.Context, in *blog.CreateBlogRequest) (*blog.Blog, error) {
|
|
|
|
ins, err := blog.NewBook(in)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
err = datasource.DBFromCtx(ctx).Create(ins).Error
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return ins, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// QueryBlog implements blog.Service.
|
|
|
|
func (b *BlogServiceImpl) QueryBlog(ctx context.Context, in *blog.QueryBlogRequest) (*blog.BlogSet, error) {
|
|
|
|
query := datasource.DBFromCtx(ctx).Model(&blog.Blog{})
|
|
|
|
if in.Keywords != "" {
|
|
|
|
query = query.Where("title LIKE ?", "%"+in.Keywords+"%")
|
|
|
|
}
|
|
|
|
if in.Stage != nil {
|
|
|
|
query = query.Where("stage = ?", in.Stage)
|
|
|
|
}
|
|
|
|
if in.CreateBy != "" {
|
|
|
|
query = query.Where("create_by = ?", in.CreateBy)
|
|
|
|
}
|
|
|
|
if in.Category != "" {
|
|
|
|
query = query.Where("category = ?", in.Category)
|
|
|
|
}
|
|
|
|
for k, v := range in.Tags {
|
2024-12-08 16:20:18 +08:00
|
|
|
query = query.Where(fmt.Sprintf("tags->>'$.%s' = ?", k), v)
|
2024-12-08 14:46:15 +08:00
|
|
|
}
|
|
|
|
set := blog.NewBlogSet()
|
|
|
|
|
|
|
|
// COUNT
|
|
|
|
if err := query.Count(&set.Total).Error; err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
// 处理分页
|
|
|
|
err := query.Order("created_at DESC").Offset(int(in.Offset())).Limit(int(in.PageSize)).Find(&set.Items).Error
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
return set, nil
|
2024-12-01 18:04:02 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// DeleteBlog implements blog.Service.
|
|
|
|
func (b *BlogServiceImpl) DeleteBlog(context.Context, *blog.DeleteBlogRequest) error {
|
|
|
|
panic("unimplemented")
|
|
|
|
}
|
|
|
|
|
|
|
|
// DescribeBlog implements blog.Service.
|
|
|
|
func (b *BlogServiceImpl) DescribeBlog(context.Context, *blog.DescribeBlogRequest) (*blog.Blog, error) {
|
|
|
|
panic("unimplemented")
|
|
|
|
}
|
|
|
|
|
|
|
|
// PublishBlog implements blog.Service.
|
|
|
|
func (b *BlogServiceImpl) PublishBlog(context.Context, *blog.PublishBlogRequest) (*blog.Blog, error) {
|
|
|
|
panic("unimplemented")
|
|
|
|
}
|
|
|
|
|
|
|
|
// UpdateBlog implements blog.Service.
|
|
|
|
func (b *BlogServiceImpl) UpdateBlog(context.Context, *blog.UpdateBlogRequest) (*blog.Blog, error) {
|
|
|
|
panic("unimplemented")
|
|
|
|
}
|