From 7f7d59f43b753606945d48f0ca6a8035e2eff189 Mon Sep 17 00:00:00 2001 From: harold Date: Mon, 7 Apr 2025 18:30:12 +0500 Subject: [PATCH] add avatar update for donate pages --- internal/api/http/handlers/donat/donat.go | 11 +++++++++++ internal/model/interfaces.go | 2 ++ internal/model/sql/query.go | 1 + internal/repository/donat/donat.go | 4 ++++ internal/service/donat/donat.go | 17 +++++++++++++++++ 5 files changed, 35 insertions(+) diff --git a/internal/api/http/handlers/donat/donat.go b/internal/api/http/handlers/donat/donat.go index 1ef3a28..c1f2d58 100644 --- a/internal/api/http/handlers/donat/donat.go +++ b/internal/api/http/handlers/donat/donat.go @@ -240,6 +240,7 @@ func GetOuterDonatePage(donatService model.DonatService) echo.HandlerFunc { // @Param metadata formData model.UpdateDonatPage false "Update fields" // @Param background formData file false "Background image" // @Param head_img formData file false "Head image" +// @Param avatar formData file false "Avatar image" // @Success 200 {string} string "Donat page updated successfully" // @Failure 400 {object} echo.HTTPError "Bad request" // @Failure 401 {object} echo.HTTPError "Unauthorized or expired token" @@ -280,6 +281,15 @@ func UpdateDonatePage(donatService model.DonatService, fileService model.FileSer } } + avatarFile, err := request.FormFile("avatar") + if err != nil { + headImgFile = &multipart.FileHeader{ + Filename: "", + Size: 0, + Header: nil, + } + } + // Передаем файлы только если они были переданы err = donatService.UpdateDonatePage( ctx, @@ -287,6 +297,7 @@ func UpdateDonatePage(donatService model.DonatService, fileService model.FileSer body, *bgFile, *headImgFile, + *avatarFile, ) if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, custom_response.InternalError) diff --git a/internal/model/interfaces.go b/internal/model/interfaces.go index f0ffd2a..0aa0d13 100644 --- a/internal/model/interfaces.go +++ b/internal/model/interfaces.go @@ -88,6 +88,7 @@ type DonatService interface { updateModel UpdateDonatPage, background multipart.FileHeader, headImg multipart.FileHeader, + avatar multipart.FileHeader, ) error GetVoiceSettings(ctx context.Context, streamerID int) (VoiceSettingsResponse, error) UpdateVoiceSettings(ctx context.Context, streamerID int, updateModel UpdateVoiceSettings) error @@ -142,6 +143,7 @@ type DonatRepo interface { streamerID int, backgroundFileID *string, headImgFileID *string, + avatarFileID *string, description *string, textAfterDonation *string, profileAvatar *bool, diff --git a/internal/model/sql/query.go b/internal/model/sql/query.go index 43db5b2..0f81fe5 100644 --- a/internal/model/sql/query.go +++ b/internal/model/sql/query.go @@ -271,6 +271,7 @@ UPDATE donate_pages SET background_img = COALESCE(@background_img, background_img), head_img = COALESCE(@head_img, head_img), + avatar = COALESCE(@avatar, avatar), description = COALESCE(@description, description), text_after_donat = COALESCE(@text_after_donation, text_after_donat) WHERE streamer_id = @streamer_id diff --git a/internal/repository/donat/donat.go b/internal/repository/donat/donat.go index c372eb6..6ef9ccf 100644 --- a/internal/repository/donat/donat.go +++ b/internal/repository/donat/donat.go @@ -197,6 +197,7 @@ func (repoDonat *RepoDonat) UpdateDonatePage( streamerID int, backgroundFileID *string, headImgFileID *string, + avatarFileID *string, description *string, textAfterDonation *string, profileAvatar *bool, @@ -212,6 +213,9 @@ func (repoDonat *RepoDonat) UpdateDonatePage( if headImgFileID != nil { args["head_img"] = *headImgFileID } + if avatarFileID != nil { + args["avatar"] = *avatarFileID + } if description != nil { args["description"] = *description } diff --git a/internal/service/donat/donat.go b/internal/service/donat/donat.go index a888cda..bdd3b9d 100644 --- a/internal/service/donat/donat.go +++ b/internal/service/donat/donat.go @@ -261,9 +261,11 @@ func (donatService *ServiceDonat) UpdateDonatePage( updateModel model.UpdateDonatPage, background multipart.FileHeader, headImg multipart.FileHeader, + avatar multipart.FileHeader, ) error { var backgroundFileID *string var headImgFileID *string + var avatarFileID *string if background.Size > 0 { fileID, err := donatService.fileService.AddNewFile( @@ -293,11 +295,26 @@ func (donatService *ServiceDonat) UpdateDonatePage( headImgFileID = &fileID } + if avatar.Size > 0 { + fileID, err := donatService.fileService.AddNewFile( + ctx, + avatar, + streamerID, + "donat_page", + ) + if err != nil { + slog.Error(err.Error()) + return err + } + avatarFileID = &fileID + } + err := donatService.donatRepo.UpdateDonatePage( ctx, streamerID, backgroundFileID, headImgFileID, + avatarFileID, updateModel.Description, updateModel.TextAfterDonat, updateModel.ProfileAvatar,