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, } }