123 lines
5.4 KiB
Go
123 lines
5.4 KiB
Go
package request
|
|
|
|
import (
|
|
"go-humas-be/app/database/entity"
|
|
"go-humas-be/utils/paginator"
|
|
"time"
|
|
)
|
|
|
|
type ArticlesGeneric interface {
|
|
ToEntity()
|
|
}
|
|
|
|
type ArticlesQueryRequest struct {
|
|
Title string `json:"title" validate:"required"`
|
|
Slug string `json:"slug" validate:"required"`
|
|
Description string `json:"description" validate:"required"`
|
|
HtmlDescription string `json:"html_description" validate:"required"`
|
|
TypeId int `json:"type_id" validate:"required"`
|
|
Tags string `json:"tags" validate:"required"`
|
|
ThumbnailPath string `json:"thumbnail_path" validate:"required"`
|
|
ThumbnailUrl string `json:"thumbnail_url" validate:"required"`
|
|
PageUrl string `json:"page_url" validate:"required"`
|
|
CreatedById int `json:"created_by_id" validate:"required"`
|
|
ShareCount int `json:"share_count" validate:"required"`
|
|
ViewCount int `json:"view_count" validate:"required"`
|
|
DownloadCount int `json:"download_count" validate:"required"`
|
|
StatusId int `json:"status_id" validate:"required"`
|
|
IsPublish bool `json:"is_publish" validate:"required"`
|
|
PublishedAt time.Time `json:"published_at" validate:"required"`
|
|
IsActive bool `json:"is_active" validate:"required"`
|
|
Pagination *paginator.Pagination `json:"pagination"`
|
|
}
|
|
|
|
type ArticlesCreateRequest struct {
|
|
Title string `json:"title" validate:"required"`
|
|
Slug string `json:"slug" validate:"required"`
|
|
Description string `json:"description" validate:"required"`
|
|
HtmlDescription string `json:"html_description" validate:"required"`
|
|
TypeId int `json:"type_id" validate:"required"`
|
|
Tags string `json:"tags" validate:"required"`
|
|
ThumbnailPath string `json:"thumbnail_path" validate:"required"`
|
|
ThumbnailUrl string `json:"thumbnail_url" validate:"required"`
|
|
PageUrl string `json:"page_url" validate:"required"`
|
|
CreatedById int `json:"created_by_id" validate:"required"`
|
|
ShareCount int `json:"share_count" validate:"required"`
|
|
ViewCount int `json:"view_count" validate:"required"`
|
|
DownloadCount int `json:"download_count" validate:"required"`
|
|
StatusId int `json:"status_id" validate:"required"`
|
|
IsPublish bool `json:"is_publish" validate:"required"`
|
|
PublishedAt time.Time `json:"published_at" validate:"required"`
|
|
IsActive bool `json:"is_active" validate:"required"`
|
|
}
|
|
|
|
func (req ArticlesCreateRequest) ToEntity() *entity.Articles {
|
|
return &entity.Articles{
|
|
Title: req.Title,
|
|
Slug: req.Slug,
|
|
Description: req.Description,
|
|
HtmlDescription: req.HtmlDescription,
|
|
TypeId: req.TypeId,
|
|
Tags: req.Tags,
|
|
ThumbnailPath: req.ThumbnailPath,
|
|
ThumbnailUrl: req.ThumbnailUrl,
|
|
PageUrl: req.PageUrl,
|
|
CreatedById: req.CreatedById,
|
|
ShareCount: req.ShareCount,
|
|
ViewCount: req.ViewCount,
|
|
DownloadCount: req.DownloadCount,
|
|
StatusId: req.StatusId,
|
|
IsPublish: req.IsPublish,
|
|
PublishedAt: req.PublishedAt,
|
|
IsActive: req.IsActive,
|
|
}
|
|
}
|
|
|
|
type ArticlesUpdateRequest struct {
|
|
ID uint `json:"id" validate:"required"`
|
|
Title string `json:"title" validate:"required"`
|
|
Slug string `json:"slug" validate:"required"`
|
|
Description string `json:"description" validate:"required"`
|
|
HtmlDescription string `json:"html_description" validate:"required"`
|
|
TypeId int `json:"type_id" validate:"required"`
|
|
Tags string `json:"tags" validate:"required"`
|
|
ThumbnailPath string `json:"thumbnail_path" validate:"required"`
|
|
ThumbnailUrl string `json:"thumbnail_url" validate:"required"`
|
|
PageUrl string `json:"page_url" validate:"required"`
|
|
CreatedById int `json:"created_by_id" validate:"required"`
|
|
ShareCount int `json:"share_count" validate:"required"`
|
|
ViewCount int `json:"view_count" validate:"required"`
|
|
DownloadCount int `json:"download_count" validate:"required"`
|
|
StatusId int `json:"status_id" validate:"required"`
|
|
IsPublish bool `json:"is_publish" validate:"required"`
|
|
PublishedAt time.Time `json:"published_at" validate:"required"`
|
|
IsActive bool `json:"is_active" validate:"required"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
func (req ArticlesUpdateRequest) ToEntity() *entity.Articles {
|
|
return &entity.Articles{
|
|
ID: req.ID,
|
|
Title: req.Title,
|
|
Slug: req.Slug,
|
|
Description: req.Description,
|
|
HtmlDescription: req.HtmlDescription,
|
|
TypeId: req.TypeId,
|
|
Tags: req.Tags,
|
|
ThumbnailPath: req.ThumbnailPath,
|
|
ThumbnailUrl: req.ThumbnailUrl,
|
|
PageUrl: req.PageUrl,
|
|
CreatedById: req.CreatedById,
|
|
ShareCount: req.ShareCount,
|
|
ViewCount: req.ViewCount,
|
|
DownloadCount: req.DownloadCount,
|
|
StatusId: req.StatusId,
|
|
IsPublish: req.IsPublish,
|
|
PublishedAt: req.PublishedAt,
|
|
IsActive: req.IsActive,
|
|
CreatedAt: req.CreatedAt,
|
|
UpdatedAt: req.UpdatedAt,
|
|
}
|
|
}
|