blog

package
v0.0.0-...-28af436 Latest Latest
Warning

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

Go to latest
Published: Nov 4, 2023 License: MIT Imports: 5 Imported by: 0

README

博客模块(ioc)

  1. 定义博客管理模块的接口
  2. 实现博客管理模块的接口
  3. 实现博客管理模块的HTTP API
  4. 加载业务实现对象和HTTP API对象

Documentation

Index

Constants

View Source
const (
	AppName = "blogs"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AuditBlogRequest

type AuditBlogRequest struct {
	// 审核的文章
	BlogId string `json:"blog_id"`
	// 是否审核成功
	IsAuditPass bool `json:"is_audit_pass"`
}

func NewAuditBlogRequest

func NewAuditBlogRequest(id string) *AuditBlogRequest

type Blog

type Blog struct {
	// 文章的唯一标识符, 给程序使用
	Id int64 `json:"id"`
	// 创建时间
	CreatedAt int64 `json:"created_at"`
	// 更新时间
	UpdatedAt int64 `json:"updated_at"`
	// 发布时间
	PublishedAt int64 `json:"published_at"`
	// 文章的状态
	Status Status `json:"status"`
	// 审核时间
	AuditAt int64 `json:"audit_at"`
	// 是否审核成功
	IsAuditPass bool `json:"is_audit_pass"`
	// 用户创建博客参数
	*CreateBlogRequest
}

func NewBlog

func NewBlog(req *CreateBlogRequest) *Blog

func (*Blog) String

func (b *Blog) String() string

func (*Blog) TableName

func (b *Blog) TableName() string

type BlogSet

type BlogSet struct {
	// 博客的总数
	Total int64 `json:"total"`
	// 返回的一页的数据
	Items []*Blog `json:"items"`
}

func NewBlogSet

func NewBlogSet() *BlogSet

func (*BlogSet) Add

func (s *BlogSet) Add(items ...*Blog)

func (*BlogSet) String

func (b *BlogSet) String() string

type CreateBlogRequest

type CreateBlogRequest struct {
	// 文章标题
	Title string `json:"title"`
	// 作者
	Author string `json:"author"`
	// 用户登录后, 我们通过Token知道是那个用户
	CreateBy string `json:"create_by"`
	// 文章内容
	Content string `json:"content"`
	// 概要
	Summary string `json:"summary"`
	// 标签, 基于标签做分类, 语言:Golang, 分类:后端
	Tags map[string]string `json:"tags" gorm:"serializer:json"`
}

用户参数

func NewCreateBlogRequest

func NewCreateBlogRequest() *CreateBlogRequest

type DeleteBlogRequest

type DeleteBlogRequest struct {
	// 如果定义一篇文章, 使用对象Id, 具体的某一篇文章
	BlogId string `json:"blog_id"`
}

func NewDeleteBlogRequest

func NewDeleteBlogRequest(id string) *DeleteBlogRequest

type DescribeBlogRequest

type DescribeBlogRequest struct {
	BlogId string `json:"blog_id"`
}

func NewDescribeBlogRequest

func NewDescribeBlogRequest(id string) *DescribeBlogRequest

type QueryBlogRequest

type QueryBlogRequest struct {
	// 利用数据库的offst limit, 去数据库里面获取一页的数据
	// 页的大小
	PageSize int `json:"page_size"`
	// 当前处于几页
	PageNumber int `json:"page_number"`
	// 0 表示草稿状态, 要查询所有的博客
	// nil 没有这个过滤条件
	// 0   DRAFT
	// 1   PUBLISHED
	Status *Status `json:"status"`
	// 基于文章标题的关键字搜索
	Keywords string `json:"keywords"`
	// 查询属于哪些用户的博客
	Usernames []string `json:"Usernames"`
}

后端分页

func NewQueryBlogRequest

func NewQueryBlogRequest() *QueryBlogRequest

func (*QueryBlogRequest) AddUsername

func (r *QueryBlogRequest) AddUsername(usernames ...string)

func (*QueryBlogRequest) Offset

func (r *QueryBlogRequest) Offset() int

依赖, 根据分页大小,当前页数 可以推导出 获取元素的开始和结束位置 [1,2,3,4,5] [6,7,8,9,10] [11,12,13,14,15] limite(offset, limte) limite(5 * 0,5) [1,2,3,4,5] limite(5*1,5) [6,7,8,9,10] limite(5*2,5) [11,12,13,14,15]

func (*QueryBlogRequest) ParsePageNumber

func (r *QueryBlogRequest) ParsePageNumber(pn string)

func (*QueryBlogRequest) ParsePageSize

func (r *QueryBlogRequest) ParsePageSize(ps string)

func (*QueryBlogRequest) SetStatus

func (r *QueryBlogRequest) SetStatus(s Status)

type Service

type Service interface {
	// 创建博客
	CreateBlog(context.Context, *CreateBlogRequest) (*Blog, error)
	// 查询文章列表, 列表查询, 没有必要查询文章的具体内容
	QueryBlog(context.Context, *QueryBlogRequest) (*BlogSet, error)
	// 详情页, 尽量多的把关联的数据查询出来, content
	DescribeBlog(context.Context, *DescribeBlogRequest) (*Blog, error)
	// 修改文章状态
	UpdateBlogStatus(context.Context, *UpdateBlogStatusRequest) (*Blog, error)
	// 更新文章
	UpdateBlog(context.Context, *UpdateBlogRequest) (*Blog, error)
	// 删除文档
	DeleteBlog(context.Context, *DeleteBlogRequest) error
	// 文章审核, 审核通过的文章才能被看到
	AuditBlog(context.Context, *AuditBlogRequest) (*Blog, error)
}

博客模块接口

type Status

type Status int
const (
	// 文章状态草稿
	STATUS_DRAFT Status = iota
	// 已经发布
	STATUS_PUBLISHED
)

type UpdateBlogRequest

type UpdateBlogRequest struct {
	// 如果定义一篇文章, 使用对象Id, 具体的某一篇文章
	BlogId string `json:"blog_id"`
	// blog的范围, 不是用户传递进来的, 是api接口层 自动填充
	Scope *common.Scope `json:"scope"`
	// 更新方式 区分全量更新/增量更新
	UpdateMode UpdateMode `json:"update_mode"`
	// 用户更新请求, 用户只传了个标签
	*CreateBlogRequest
}

func NewPatchUpdateBlogRequest

func NewPatchUpdateBlogRequest(id string) *UpdateBlogRequest

func NewPutUpdateBlogRequest

func NewPutUpdateBlogRequest(id string) *UpdateBlogRequest

type UpdateBlogStatusRequest

type UpdateBlogStatusRequest struct {
	// 如果定义一篇文章, 使用对象Id, 具体的某一篇文章
	BlogId int64 `json:"blog_id"`
	// 修改的状态: DRAFT/PUBLISHED
	Status Status `json:"status"`
}

type UpdateMode

type UpdateMode int
const (
	// 全量更新
	UPDATE_MODE_PUT UpdateMode = iota
	// 部分更新(增量更新)
	UPDATE_MODE_PATCH
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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