diff --git a/internal/docs/docs.go b/internal/docs/docs.go index 4e4c498..ec4db0d 100644 --- a/internal/docs/docs.go +++ b/internal/docs/docs.go @@ -398,7 +398,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/donat-widget_internal_model.MarDonatViewed" + "$ref": "#/definitions/donat-widget_internal_model.MarkDonatViewed" } } ], @@ -1837,6 +1837,12 @@ const docTemplate = `{ "head_img": { "$ref": "#/definitions/donat-widget_internal_model.InnerFile" }, + "page_background": { + "type": "string" + }, + "profile_avatar": { + "type": "boolean" + }, "text_after_donat": { "type": "string" } @@ -1884,7 +1890,7 @@ const docTemplate = `{ } } }, - "donat-widget_internal_model.MarDonatViewed": { + "donat-widget_internal_model.MarkDonatPaidBody": { "type": "object", "properties": { "order_id": { @@ -1892,7 +1898,7 @@ const docTemplate = `{ } } }, - "donat-widget_internal_model.MarkDonatPaidBody": { + "donat-widget_internal_model.MarkDonatViewed": { "type": "object", "properties": { "order_id": { diff --git a/internal/docs/swagger.json b/internal/docs/swagger.json index 04320d0..6f8dad6 100644 --- a/internal/docs/swagger.json +++ b/internal/docs/swagger.json @@ -391,7 +391,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/donat-widget_internal_model.MarDonatViewed" + "$ref": "#/definitions/donat-widget_internal_model.MarkDonatViewed" } } ], @@ -1830,6 +1830,12 @@ "head_img": { "$ref": "#/definitions/donat-widget_internal_model.InnerFile" }, + "page_background": { + "type": "string" + }, + "profile_avatar": { + "type": "boolean" + }, "text_after_donat": { "type": "string" } @@ -1877,7 +1883,7 @@ } } }, - "donat-widget_internal_model.MarDonatViewed": { + "donat-widget_internal_model.MarkDonatPaidBody": { "type": "object", "properties": { "order_id": { @@ -1885,7 +1891,7 @@ } } }, - "donat-widget_internal_model.MarkDonatPaidBody": { + "donat-widget_internal_model.MarkDonatViewed": { "type": "object", "properties": { "order_id": { diff --git a/internal/docs/swagger.yaml b/internal/docs/swagger.yaml index c137690..78914fb 100644 --- a/internal/docs/swagger.yaml +++ b/internal/docs/swagger.yaml @@ -306,6 +306,10 @@ definitions: type: string head_img: $ref: '#/definitions/donat-widget_internal_model.InnerFile' + page_background: + type: string + profile_avatar: + type: boolean text_after_donat: type: string type: object @@ -338,12 +342,12 @@ definitions: ru_name: type: string type: object - donat-widget_internal_model.MarDonatViewed: + donat-widget_internal_model.MarkDonatPaidBody: properties: order_id: type: string type: object - donat-widget_internal_model.MarkDonatPaidBody: + donat-widget_internal_model.MarkDonatViewed: properties: order_id: type: string @@ -800,7 +804,7 @@ paths: name: request required: true schema: - $ref: '#/definitions/donat-widget_internal_model.MarDonatViewed' + $ref: '#/definitions/donat-widget_internal_model.MarkDonatViewed' produces: - application/json responses: diff --git a/internal/model/interfaces.go b/internal/model/interfaces.go index 121f333..f3a4caa 100644 --- a/internal/model/interfaces.go +++ b/internal/model/interfaces.go @@ -143,6 +143,8 @@ type DonatRepo interface { headImgFileID *string, description *string, textAfterDonation *string, + profileAvatar *bool, + pageBackground *string, ) error GetVoiceSettingsByStreamerID(ctx context.Context, streamerID int) (VoiceSettingsResponse, error) UpdateVoiceSettings(ctx context.Context, streamerID int, updateModel UpdateVoiceSettings) error diff --git a/internal/model/models.go b/internal/model/models.go index 44cf4d2..0f4a77b 100644 --- a/internal/model/models.go +++ b/internal/model/models.go @@ -101,6 +101,8 @@ type DonatePage struct { Description string `db:"description" json:"description" example:"Поддержи этого стримера" description:"Описание страницы доната"` TextAfterDonat string `db:"text_after_donat" json:"text_after_donat" example:"Спасибо за вашу поддержку!" description:"Текст, который отображается после доната"` StreamerLogin string `db:"streamer_login" json:"streamer_login" example:"streamer123" description:"Логин/псевдоним стримера"` + ProfileAvatar bool `db:"profile_avatar" json:"profile_avatar" example:"true" description:"Использовать ли аватар из профиля."` + PageBackground string `db:"page_background" json:"page_background" example:"#13161E" description:"Цвет фона на странице доната"` // Поля для хед-изображения HeadImgFileId uuid.UUID `db:"head_img_id" json:"head_img_id" format:"uuid" example:"550e8400-e29b-41d4-a716-446655440000" description:"UUID файла хед-изображения"` @@ -138,6 +140,8 @@ type InnerDonatePageResponse struct { HeadImg InnerFile `json:"head_img"` Avatar InnerFile `json:"avatar"` BackgroundImg InnerFile `json:"background_img"` + ProfileAvatar bool `json:"profile_avatar"` + PageBackground string `json:"page_background"` } type Moderation struct { diff --git a/internal/model/sql/model.go b/internal/model/sql/model.go index 1234f2b..8cd3418 100644 --- a/internal/model/sql/model.go +++ b/internal/model/sql/model.go @@ -79,6 +79,8 @@ CREATE TABLE IF NOT EXISTS donate_pages ( avatar UUID REFERENCES files(id) ON DELETE CASCADE, background_img UUID REFERENCES files(id) ON DELETE CASCADE, head_img UUID REFERENCES files(id) ON DELETE CASCADE, + profile_avatar BOOLEAN NOT NULL DEFAULT 'true', + page_background TEXT DEFAULT '#13161E' ) diff --git a/internal/model/sql/query.go b/internal/model/sql/query.go index fb82edd..aab1ace 100644 --- a/internal/model/sql/query.go +++ b/internal/model/sql/query.go @@ -108,6 +108,8 @@ SELECT dp.description, dp.text_after_donat, dp.streamer_login, + dp.profile_avatar, + dp.page_background, -- Поля для хед-изображения head_img.id AS head_img_id, diff --git a/internal/repository/donat/donat.go b/internal/repository/donat/donat.go index 100e326..17366a6 100644 --- a/internal/repository/donat/donat.go +++ b/internal/repository/donat/donat.go @@ -199,6 +199,8 @@ func (repoDonat *RepoDonat) UpdateDonatePage( headImgFileID *string, description *string, textAfterDonation *string, + profileAvatar *bool, + pageBackground *string, ) error { args := pgx.NamedArgs{ "streamer_id": streamerID, @@ -216,6 +218,12 @@ func (repoDonat *RepoDonat) UpdateDonatePage( if textAfterDonation != nil { args["text_after_donat"] = *textAfterDonation } + if pageBackground != nil { + args["page_background"] = *pageBackground + } + if profileAvatar != nil { + args["profile_avatar"] = *profileAvatar + } err := repoDonat.db.Update(ctx, sql.UpdateDonatePage, args) if err != nil { diff --git a/internal/service/donat/donat.go b/internal/service/donat/donat.go index ab1cc0d..ae68897 100644 --- a/internal/service/donat/donat.go +++ b/internal/service/donat/donat.go @@ -224,6 +224,8 @@ func (donatService *ServiceDonat) GetInnerDonatPage( innerDonatePageResponse := model.InnerDonatePageResponse{ Description: donatePage.Description, TextAfterDonat: donatePage.TextAfterDonat, + ProfileAvatar: donatePage.ProfileAvatar, + PageBackground: donatePage.PageBackground, HeadImg: headImgFile, Avatar: avatarFile, BackgroundImg: backgroundImgFile, @@ -298,6 +300,8 @@ func (donatService *ServiceDonat) UpdateDonatePage( headImgFileID, updateModel.Description, updateModel.TextAfterDonat, + updateModel.ProfileAvatar, + updateModel.PageBackground, ) if err != nil { slog.Error(err.Error()) diff --git a/sql/init.sql b/sql/init.sql index e48c355..dfae3d7 100644 --- a/sql/init.sql +++ b/sql/init.sql @@ -66,7 +66,9 @@ CREATE TABLE IF NOT EXISTS donate_pages ( text_after_donat TEXT DEFAULT '', avatar UUID REFERENCES files(id) ON DELETE CASCADE, background_img UUID REFERENCES files(id) ON DELETE CASCADE, - head_img UUID REFERENCES files(id) ON DELETE CASCADE + head_img UUID REFERENCES files(id) ON DELETE CASCADE, + profile_avatar BOOLEAN NOT NULL DEFAULT 'true', + page_background TEXT DEFAULT '#13161E' ); CREATE TABLE IF NOT EXISTS moderation ( @@ -174,4 +176,18 @@ VALUES ( 0, 512, 'donat_page' - ); \ No newline at end of file + ); + + +INSERT INTO languages (id, iso_code, ru_name, en_name) +VALUES + (1, 'en', 'Английский', 'English'), + (2, 'ru', 'Русский', 'Russian'), + (3, 'es', 'Испанский', 'Spanish'), + (4, 'fr', 'Французский', 'French'), + (5, 'de', 'Немецкий', 'German'), + (6, 'zh', 'Китайский', 'Chinese'), + (7, 'ja', 'Японский', 'Japanese'), + (8, 'it', 'Итальянский', 'Italian'), + (9, 'pt', 'Португальский', 'Portuguese'), + (10, 'ar', 'Арабский', 'Arabic'); \ No newline at end of file