draft
This commit is contained in:
92
internal/modules/videos/presenter.go
Normal file
92
internal/modules/videos/presenter.go
Normal file
@@ -0,0 +1,92 @@
|
||||
package videos
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
appv1 "stream.api/internal/gen/proto/app/v1"
|
||||
"google.golang.org/protobuf/types/known/timestamppb"
|
||||
"stream.api/internal/modules/common"
|
||||
)
|
||||
|
||||
func presentGetUploadURLResponse(result *GetUploadURLResult) *appv1.GetUploadUrlResponse {
|
||||
return &appv1.GetUploadUrlResponse{UploadUrl: result.UploadURL, Key: result.Key, FileId: result.FileID}
|
||||
}
|
||||
|
||||
func presentVideo(view VideoView) *appv1.Video {
|
||||
if view.JobID != nil {
|
||||
return common.ToProtoVideo(view.Video, *view.JobID)
|
||||
}
|
||||
return common.ToProtoVideo(view.Video)
|
||||
}
|
||||
|
||||
func presentCreateVideoResponse(view VideoView) *appv1.CreateVideoResponse {
|
||||
return &appv1.CreateVideoResponse{Video: presentVideo(view)}
|
||||
}
|
||||
|
||||
func presentListVideosResponse(result *ListVideosResult) *appv1.ListVideosResponse {
|
||||
items := make([]*appv1.Video, 0, len(result.Items))
|
||||
for _, item := range result.Items {
|
||||
items = append(items, presentVideo(item))
|
||||
}
|
||||
return &appv1.ListVideosResponse{Videos: items, Total: result.Total, Page: result.Page, Limit: result.Limit}
|
||||
}
|
||||
|
||||
func presentGetVideoResponse(view VideoView) *appv1.GetVideoResponse {
|
||||
return &appv1.GetVideoResponse{Video: presentVideo(view)}
|
||||
}
|
||||
|
||||
func presentUpdateVideoResponse(view VideoView) *appv1.UpdateVideoResponse {
|
||||
return &appv1.UpdateVideoResponse{Video: presentVideo(view)}
|
||||
}
|
||||
|
||||
func presentAdminVideo(view AdminVideoView) *appv1.AdminVideo {
|
||||
return &appv1.AdminVideo{
|
||||
Id: view.ID,
|
||||
UserId: view.UserID,
|
||||
Title: view.Title,
|
||||
Description: view.Description,
|
||||
Url: view.URL,
|
||||
Status: view.Status,
|
||||
Size: view.Size,
|
||||
Duration: view.Duration,
|
||||
Format: view.Format,
|
||||
CreatedAt: parseRFC3339ToProto(view.CreatedAt),
|
||||
UpdatedAt: parseRFC3339ToProto(view.UpdatedAt),
|
||||
ProcessingStatus: view.ProcessingStatus,
|
||||
JobId: view.JobID,
|
||||
OwnerEmail: view.OwnerEmail,
|
||||
AdTemplateId: view.AdTemplateID,
|
||||
AdTemplateName: view.AdTemplateName,
|
||||
}
|
||||
}
|
||||
|
||||
func presentListAdminVideosResponse(result *ListAdminVideosResult) *appv1.ListAdminVideosResponse {
|
||||
items := make([]*appv1.AdminVideo, 0, len(result.Items))
|
||||
for _, item := range result.Items {
|
||||
items = append(items, presentAdminVideo(item))
|
||||
}
|
||||
return &appv1.ListAdminVideosResponse{Videos: items, Total: result.Total, Page: result.Page, Limit: result.Limit}
|
||||
}
|
||||
|
||||
func presentGetAdminVideoResponse(view AdminVideoView) *appv1.GetAdminVideoResponse {
|
||||
return &appv1.GetAdminVideoResponse{Video: presentAdminVideo(view)}
|
||||
}
|
||||
|
||||
func presentCreateAdminVideoResponse(view AdminVideoView) *appv1.CreateAdminVideoResponse {
|
||||
return &appv1.CreateAdminVideoResponse{Video: presentAdminVideo(view)}
|
||||
}
|
||||
|
||||
func presentUpdateAdminVideoResponse(view AdminVideoView) *appv1.UpdateAdminVideoResponse {
|
||||
return &appv1.UpdateAdminVideoResponse{Video: presentAdminVideo(view)}
|
||||
}
|
||||
|
||||
func parseRFC3339ToProto(value *string) *timestamppb.Timestamp {
|
||||
if value == nil || *value == "" {
|
||||
return nil
|
||||
}
|
||||
parsed, err := time.Parse(time.RFC3339, *value)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
return timestamppb.New(parsed.UTC())
|
||||
}
|
||||
Reference in New Issue
Block a user