Files
blog-server/internal/model/request/post.go
2026-08-19 22:05:49 +08:00

39 lines
1.8 KiB
Go

package request
import (
"server/internal/pkg/validator"
"time"
)
type CreatePostRequest struct {
Title string `json:"title" validate:"required,min=1"`
CoverID *int32 `json:"cover_id" validate:"omitempty"`
Slug string `json:"slug" validate:"required,min=0"`
Content string `json:"content" validate:"required,min=0"`
Summary string `json:"summary" validate:"required,min=0"`
Status *int16 `json:"status" validate:"required,oneof=0 1 2"`
Sort *int32 `json:"sort" validate:"required,min=0"`
PublishedAt time.Time `json:"published_at" validate:"required"`
CategoryID *int32 `json:"category_id" validate:"required,min=1"`
Tags []int32 `json:"tags" validate:"omitempty,dive,min=1"`
}
type UpdatePostRequest struct {
Title *string `json:"title" validate:"omitempty,min=1"`
CoverID validator.NullInt32 `json:"cover_id" validate:"omitempty"`
Slug *string `json:"slug" validate:"omitempty,min=1"`
Content *string `json:"content" validate:"required,min=0"`
Summary *string `json:"summary" validate:"omitempty,min=1"`
Status *int16 `json:"status" validate:"omitempty,oneof=0 1 2"`
View *int32 `json:"view" validate:"omitempty,min=1"`
Sort *int32 `json:"sort" validate:"omitempty,min=0"`
PublishedAt *time.Time `json:"published_at" validate:"omitempty"`
CategoryID *int32 `json:"category_id" validate:"required,min=1"`
Tags []int32 `json:"tags" validate:"omitempty,dive,min=1"`
}
type SearchPublishedPostsParams struct {
CategoryCode string `json:"category_code" validate:"omitempty"`
TagCode string `json:"tag_code" validate:"omitempty"`
}