diff --git a/internal/video/video_entity.go b/internal/video/video_entity.go index 1263754..ef9e03a 100644 --- a/internal/video/video_entity.go +++ b/internal/video/video_entity.go @@ -5,6 +5,7 @@ import "time" type Video struct { ID uint `gorm:"primaryKey"` AuthorID uint `gorm:"index;not null"` + Username string `gorm:"type:varchar(255);not null"` Title string `gorm:"type:varchar(255);not null"` Description string `gorm:"type:varchar(255);"` PlayURL string `gorm:"type:varchar(255);not null"` @@ -12,3 +13,23 @@ type Video struct { CreateTime time.Time `gorm:"autoCreateTime"` LikesCount int64 `gorm:"column:likes_count;not null;default:0" json:"likes_count"` } + +type PublishVideoRequest struct { + Title string `json:"title"` + Description string `json:"description"` + PlayURL string `json:"play_url"` + CoverURL string `json:"cover_url"` +} + +type ListByAuthorIDRequest struct { + AuthorID uint `json:"author_id"` +} + +type GetDetailRequest struct { + ID uint `json:"id"` +} + +type UpdateLikesCountRequest struct { + ID uint `json:"id"` + LikesCount int64 `json:"likes_count"` +} diff --git a/internal/video/video_handler.go b/internal/video/video_handler.go index 8090239..894d240 100644 --- a/internal/video/video_handler.go +++ b/internal/video/video_handler.go @@ -3,35 +3,18 @@ package video import ( "time" + "feedsystem_video_go/internal/account" + "github.com/gin-gonic/gin" ) type VideoHandler struct { - service *VideoService + service *VideoService + accountService *account.AccountService } -func NewVideoHandler(service *VideoService) *VideoHandler { - return &VideoHandler{service: service} -} - -type PublishVideoRequest struct { - Title string `json:"title"` - Description string `json:"description"` - PlayURL string `json:"play_url"` - CoverURL string `json:"cover_url"` -} - -type ListByAuthorIDRequest struct { - AuthorID uint `json:"author_id"` -} - -type GetDetailRequest struct { - ID uint `json:"id"` -} - -type UpdateLikesCountRequest struct { - ID uint `json:"id"` - LikesCount int64 `json:"likes_count"` +func NewVideoHandler(service *VideoService, accountService *account.AccountService) *VideoHandler { + return &VideoHandler{service: service, accountService: accountService} } func (vh *VideoHandler) PublishVideo(c *gin.Context) { @@ -51,8 +34,14 @@ func (vh *VideoHandler) PublishVideo(c *gin.Context) { c.JSON(400, gin.H{"error": "accountID has invalid type"}) return } + user, err := vh.accountService.FindByID(c.Request.Context(), authorID) + if err != nil { + c.JSON(400, gin.H{"error": err.Error()}) + return + } video := &Video{ AuthorID: authorID, + Username: user.Username, Title: req.Title, Description: req.Description, PlayURL: req.PlayURL,