add rotuer for out donate page response

This commit is contained in:
harold 2025-02-28 11:22:58 +05:00
parent 6f2ca61d91
commit 86e8341f59
7 changed files with 72 additions and 13 deletions

View File

@ -4,6 +4,7 @@ import (
"context" "context"
"donat-widget/internal/model" "donat-widget/internal/model"
"donat-widget/pkg/validator" "donat-widget/pkg/validator"
"donat-widget/pkg/custom_response"
"fmt" "fmt"
"github.com/google/uuid" "github.com/google/uuid"
"github.com/labstack/echo/v4" "github.com/labstack/echo/v4"
@ -153,15 +154,24 @@ func GetInnerDonatePage(donatService model.DonatService) echo.HandlerFunc {
// @Tags Donate // @Tags Donate
// @Accept json // @Accept json
// @Produce json // @Produce json
// @Param streamer-login path string true "Login стримера"
// @Success 200 {object} model.OuterDonatePageResponse "Current donate page state" // @Success 200 {object} model.OuterDonatePageResponse "Current donate page state"
// @Failure 400 {object} echo.HTTPError "Bad request" // @Failure 400 {object} echo.HTTPError "Bad request"
// @Failure 401 {object} echo.HTTPError "Unauthorized or expired token" // @Failure 401 {object} echo.HTTPError "Unauthorized or expired token"
// @Failure 422 {object} echo.HTTPError "Validation error" // @Failure 422 {object} echo.HTTPError "Validation error"
// @Router /outer-donate-page [get] // @Router /outer-donate-page/:streamer-login [get]
func GetOuterDonatePage(donatService model.DonatService) echo.HandlerFunc { func GetOuterDonatePage(donatService model.DonatService) echo.HandlerFunc {
return func(request echo.Context) error { return func(request echo.Context) error {
ctx := context.Background()
streamerLogin := request.Param("streamer-login")
return nil outerPageResponse, err := donatService.GetOuterDonatPage(
ctx, streamerLogin,
)
if err != nil {
return echo.NewHTTPError(http.StatusInternalServerError, custom_response.InternalError)
}
return request.JSON(http.StatusOK, outerPageResponse)
} }
} }

View File

@ -45,7 +45,7 @@ type DonatService interface {
MarkDonatView(ctx context.Context, DonatID DonatID) error MarkDonatView(ctx context.Context, DonatID DonatID) error
GetInnerDonatPage(ctx context.Context, streamerID StreamerID) (InnerDonatePageResponse, error) GetInnerDonatPage(ctx context.Context, streamerID StreamerID) (InnerDonatePageResponse, error)
GetOuterDonatPage(ctx context.Context, streamerID StreamerID) (OuterDonatePageResponse, error) GetOuterDonatPage(ctx context.Context, streamerLogin string) (OuterDonatePageResponse, error)
UpdateDonatePage(ctx context.Context, streamerID StreamerID, updateModel UpdateDonatPage) error UpdateDonatePage(ctx context.Context, streamerID StreamerID, updateModel UpdateDonatPage) error
GetVoiceSettings(ctx context.Context, streamerID StreamerID) (VoiceSettingsResponse, error) GetVoiceSettings(ctx context.Context, streamerID StreamerID) (VoiceSettingsResponse, error)
@ -68,6 +68,7 @@ type DonatRepo interface {
MarkDonatView(ctx context.Context, DonatID DonatID) error MarkDonatView(ctx context.Context, DonatID DonatID) error
GetDonatPage(ctx context.Context, streamerID StreamerID) (DonatePage, error) GetDonatPage(ctx context.Context, streamerID StreamerID) (DonatePage, error)
GetDonatPageByLogin(ctx context.Context, streamerLogin string) (DonatePage, error)
} }
type TargetService interface { type TargetService interface {

View File

@ -57,9 +57,10 @@ type DonatePage struct {
StreamerID int `db:"streamer_id"` StreamerID int `db:"streamer_id"`
Description string `db:"description"` Description string `db:"description"`
TextAfterDonat string `db:"text_after_donat"` TextAfterDonat string `db:"text_after_donat"`
PageBackground string `db:"page_background"` HeadImg string `db:"head_img"`
Avatar string `db:"avatar"` Avatar string `db:"avatar"`
BackgroundImg string `db:"background_img"` BackgroundImg string `db:"background_img"`
StreamerLogin string `db:"streamer_login"`
} }
type Moderation struct { type Moderation struct {
@ -72,7 +73,7 @@ type Moderation struct {
type InnerDonatePageResponse struct { type InnerDonatePageResponse struct {
Description string `json:"description"` Description string `json:"description"`
TextAfterDonat string `json:"textAfterDonat"` TextAfterDonat string `json:"textAfterDonat"`
PageBackground string `json:"pageBackground"` HeadImg string `json:"headImg"`
Avatar string `json:"avatar"` Avatar string `json:"avatar"`
BackgroundImg string `json:"backgroundImg"` BackgroundImg string `json:"backgroundImg"`
} }
@ -81,6 +82,9 @@ type OuterDonatePageResponse struct {
Login string `json:"login"` Login string `json:"login"`
OnLine string `json:"online"` OnLine string `json:"online"`
Description string `json:"description"` Description string `json:"description"`
BackgroundImg string `json:"background_url"`
AvatarImg string `json:"avatar_url"`
HeadImg string `json:"headImg"`
} }
type Filter struct { type Filter struct {

View File

@ -49,12 +49,13 @@ CREATE TABLE IF NOT EXISTS targets (
CREATE TABLE IF NOT EXISTS donate_pages ( CREATE TABLE IF NOT EXISTS donate_pages (
id SERIAL PRIMARY KEY, id SERIAL PRIMARY KEY,
streamer_login STRING NOT NULL,
streamer_id INTEGER NOT NULL, streamer_id INTEGER NOT NULL,
description TEXT DEFAULT '', description TEXT DEFAULT '',
text_after_donat TEXT DEFAULT '', text_after_donat TEXT DEFAULT '',
page_background TEXT DEFAULT '',
avatar TEXT DEFAULT '', avatar TEXT DEFAULT '',
background_img TEXT DEFAULT '', background_img TEXT DEFAULT '',
head_img TEXT DEFAULT '',
) )

View File

@ -85,3 +85,7 @@ WHERE id = (@target_id);
var GetDonationPage = ` var GetDonationPage = `
SELECT * FROM donate_pages WHERE streamer_id = (@streamer_id); SELECT * FROM donate_pages WHERE streamer_id = (@streamer_id);
` `
var GetDonationPageByLogin = `
SELECT * FROM donate_pages WHERE streamer_login = (@streamer_login);
`

View File

@ -157,5 +157,30 @@ func (repoDonat *RepoDonat) GetDonatPage(
} }
return *donatePage[0], nil return *donatePage[0], nil
}
func (repoDonat *RepoDonat) GetDonatPageByLogin(
ctx context.Context,
streamerLogin string,
) (model.DonatePage, error) {
args := pgx.NamedArgs{
"streamer_login": streamerLogin,
}
rows, err := repoDonat.db.Select(ctx, sql.GetDonationPageByLogin, args)
if err != nil {
slog.Error(err.Error())
return model.DonatePage{}, err
}
var donatePage []*model.DonatePage
err = pgxscan.ScanAll(&donatePage, rows)
if err != nil {
slog.Error(err.Error())
return model.DonatePage{}, err
}
if len(donatePage) == 0 {
return model.DonatePage{}, errors.New("donat not found")
}
return *donatePage[0], nil
} }

View File

@ -160,7 +160,7 @@ func (donatService *ServiceDonat) GetInnerDonatPage(
var innerDonatePageResponse = model.InnerDonatePageResponse{ var innerDonatePageResponse = model.InnerDonatePageResponse{
Description: donatePage.Description, Description: donatePage.Description,
TextAfterDonat: donatePage.TextAfterDonat, TextAfterDonat: donatePage.TextAfterDonat,
PageBackground: donatePage.PageBackground, HeadImg: donatePage.HeadImg,
Avatar: donatePage.Avatar, Avatar: donatePage.Avatar,
BackgroundImg: donatePage.BackgroundImg, BackgroundImg: donatePage.BackgroundImg,
} }
@ -170,9 +170,23 @@ func (donatService *ServiceDonat) GetInnerDonatPage(
func (donatService *ServiceDonat) GetOuterDonatPage( func (donatService *ServiceDonat) GetOuterDonatPage(
ctx context.Context, ctx context.Context,
streamerID model.StreamerID, streamerLogin string,
) (model.OuterDonatePageResponse, error) { ) (model.OuterDonatePageResponse, error) {
return model.OuterDonatePageResponse{}, nil donatePage, err := donatService.donatRepo.GetDonatPageByLogin(ctx, streamerLogin)
if err != nil {
slog.Error(err.Error())
return model.OuterDonatePageResponse{}, err
}
var outerDonatePageResponse = model.OuterDonatePageResponse{
Description: donatePage.Description,
Login: donatePage.StreamerLogin,
OnLine: "online",
BackgroundImg: donatePage.BackgroundImg,
HeadImg: donatePage.HeadImg,
AvatarImg: donatePage.Avatar,
}
return outerDonatePageResponse, nil
} }
func (donatService *ServiceDonat) UpdateDonatePage( func (donatService *ServiceDonat) UpdateDonatePage(