add router for get inner donation page
This commit is contained in:
parent
d87808531e
commit
d22601be85
@ -982,22 +982,42 @@ const docTemplate = `{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"avatar": {
|
||||
"type": "string"
|
||||
"$ref": "#/definitions/donat-widget_internal_model.InnerFile"
|
||||
},
|
||||
"background_img": {
|
||||
"type": "string"
|
||||
"$ref": "#/definitions/donat-widget_internal_model.InnerFile"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"head_img": {
|
||||
"type": "string"
|
||||
"$ref": "#/definitions/donat-widget_internal_model.InnerFile"
|
||||
},
|
||||
"text_after_donat": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"donat-widget_internal_model.InnerFile": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"file_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"file_link": {
|
||||
"type": "string"
|
||||
},
|
||||
"file_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"file_size": {
|
||||
"type": "integer"
|
||||
},
|
||||
"file_type": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"donat-widget_internal_model.ModerationResponse": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -975,22 +975,42 @@
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"avatar": {
|
||||
"type": "string"
|
||||
"$ref": "#/definitions/donat-widget_internal_model.InnerFile"
|
||||
},
|
||||
"background_img": {
|
||||
"type": "string"
|
||||
"$ref": "#/definitions/donat-widget_internal_model.InnerFile"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"head_img": {
|
||||
"type": "string"
|
||||
"$ref": "#/definitions/donat-widget_internal_model.InnerFile"
|
||||
},
|
||||
"text_after_donat": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"donat-widget_internal_model.InnerFile": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"file_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"file_link": {
|
||||
"type": "string"
|
||||
},
|
||||
"file_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"file_size": {
|
||||
"type": "integer"
|
||||
},
|
||||
"file_type": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"donat-widget_internal_model.ModerationResponse": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -137,16 +137,29 @@ definitions:
|
||||
donat-widget_internal_model.InnerDonatePageResponse:
|
||||
properties:
|
||||
avatar:
|
||||
type: string
|
||||
$ref: '#/definitions/donat-widget_internal_model.InnerFile'
|
||||
background_img:
|
||||
type: string
|
||||
$ref: '#/definitions/donat-widget_internal_model.InnerFile'
|
||||
description:
|
||||
type: string
|
||||
head_img:
|
||||
type: string
|
||||
$ref: '#/definitions/donat-widget_internal_model.InnerFile'
|
||||
text_after_donat:
|
||||
type: string
|
||||
type: object
|
||||
donat-widget_internal_model.InnerFile:
|
||||
properties:
|
||||
file_id:
|
||||
type: string
|
||||
file_link:
|
||||
type: string
|
||||
file_name:
|
||||
type: string
|
||||
file_size:
|
||||
type: integer
|
||||
file_type:
|
||||
type: string
|
||||
type: object
|
||||
donat-widget_internal_model.ModerationResponse:
|
||||
properties:
|
||||
duration:
|
||||
|
@ -88,14 +88,49 @@ type Target struct {
|
||||
}
|
||||
|
||||
type DonatePage struct {
|
||||
ID int `db:"id"`
|
||||
StreamerID int `db:"streamer_id"`
|
||||
Description string `db:"description"`
|
||||
TextAfterDonat string `db:"text_after_donat"`
|
||||
HeadImg string `db:"head_img"`
|
||||
Avatar string `db:"avatar"`
|
||||
BackgroundImg string `db:"background_img"`
|
||||
StreamerLogin string `db:"streamer_login"`
|
||||
// Основные поля
|
||||
ID int `db:"id" json:"id" example:"1" format:"int64" description:"Уникальный идентификатор страницы доната"`
|
||||
StreamerID int `db:"streamer_id" json:"streamer_id" example:"1001" format:"int64" description:"ID стримера"`
|
||||
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:"Логин/псевдоним стримера"`
|
||||
|
||||
// Поля для хед-изображения
|
||||
HeadImgFileId uuid.UUID `db:"head_img_id" json:"head_img_id" format:"uuid" example:"550e8400-e29b-41d4-a716-446655440000" description:"UUID файла хед-изображения"`
|
||||
HeadImgFileName string `db:"head_img_file_name" json:"head_img_file_name" example:"header.png" description:"Имя файла хед-изображения"`
|
||||
HeadImgType string `db:"head_img_type" json:"head_img_type" example:"image/png" description:"Тип файла хед-изображения"`
|
||||
HeadImgLink string `json:"head_img_link" example:"https://cdn.example.com/images/550e8400-e29b-41d4-a716-446655440000" description:"Публичный URL хед-изображения"`
|
||||
HeadImgSize int `db:"head_img_size" json:"head_img_size" example:"1024" description:"Размер файла хед-изображения в байтах"`
|
||||
|
||||
// Поля для аватара
|
||||
AvatarFileId uuid.UUID `db:"avatar_id" json:"avatar_id" format:"uuid" example:"550e8400-e29b-41d4-a716-446655440001" description:"UUID файла аватара"`
|
||||
AvatarFileName string `db:"avatar_file_name" json:"avatar_file_name" example:"avatar.png" description:"Имя файла аватара"`
|
||||
AvatarType string `db:"avatar_type" json:"avatar_type" example:"image/png" description:"Тип файла аватара"`
|
||||
AvatarLink string `json:"avatar_link" example:"https://cdn.example.com/images/550e8400-e29b-41d4-a716-446655440001" description:"Публичный URL аватара"`
|
||||
AvatarImgSize int `db:"avatar_img_size" json:"avatar_img_size" example:"512" description:"Размер файла аватара в байтах"`
|
||||
|
||||
// Поля для фона
|
||||
BackgroundImgFileId uuid.UUID `db:"background_img_id" json:"background_img_id" format:"uuid" example:"550e8400-e29b-41d4-a716-446655440002" description:"UUID файла фона"`
|
||||
BackgroundImgFileName string `db:"background_img_file_name" json:"background_img_file_name" example:"background.png" description:"Имя файла фона"`
|
||||
BackgroundImgType string `db:"background_img_type" json:"background_img_type" example:"image/png" description:"Тип файла фона"`
|
||||
BackgroundImgLink string `json:"background_img_link" example:"https://cdn.example.com/images/550e8400-e29b-41d4-a716-446655440002" description:"Публичный URL фона"`
|
||||
BackgroundImgSize int `db:"background_img_size" json:"background_img_size" example:"2048" description:"Размер файла фона в байтах"`
|
||||
}
|
||||
|
||||
type InnerFile struct {
|
||||
FileID uuid.UUID `json:"file_id"`
|
||||
FileName string `json:"file_name"`
|
||||
FileType string `json:"file_type"`
|
||||
FileLink string `json:"file_link"`
|
||||
FileSize int `json:"file_size"`
|
||||
}
|
||||
|
||||
type InnerDonatePageResponse struct {
|
||||
Description string `json:"description"`
|
||||
TextAfterDonat string `json:"text_after_donat"`
|
||||
HeadImg InnerFile `json:"head_img"`
|
||||
Avatar InnerFile `json:"avatar"`
|
||||
BackgroundImg InnerFile `json:"background_img"`
|
||||
}
|
||||
|
||||
type Moderation struct {
|
||||
@ -105,14 +140,6 @@ type Moderation struct {
|
||||
Duration int `db:"duration"`
|
||||
}
|
||||
|
||||
type InnerDonatePageResponse struct {
|
||||
Description string `json:"description"`
|
||||
TextAfterDonat string `json:"text_after_donat"`
|
||||
HeadImg string `json:"head_img"`
|
||||
Avatar string `json:"avatar"`
|
||||
BackgroundImg string `json:"background_img"`
|
||||
}
|
||||
|
||||
type OuterDonatePageResponse struct {
|
||||
Login string `json:"login"`
|
||||
OnLine string `json:"online"`
|
||||
|
@ -27,7 +27,8 @@ CREATE TABLE IF NOT EXISTS files (
|
||||
extension VARCHAR(10) NOT NULL,
|
||||
streamer_id INTEGER NOT NULL,
|
||||
entity VARCHAR(50) NOT NULL DEFAULT 'widget',
|
||||
created_at TIMESTAMP DEFAULT now()
|
||||
created_at TIMESTAMP DEFAULT now(),
|
||||
size FLOAT NOT NULL DEFAULT 0,
|
||||
)
|
||||
|
||||
CREATE TABLE IF NOT EXISTS donats (
|
||||
|
@ -84,7 +84,36 @@ WHERE id = (@target_id);
|
||||
`
|
||||
|
||||
var GetDonationPage = `
|
||||
SELECT * FROM donate_pages WHERE streamer_id = (@streamer_id);
|
||||
SELECT
|
||||
dp.id,
|
||||
dp.streamer_id,
|
||||
dp.description,
|
||||
dp.text_after_donat,
|
||||
dp.streamer_login,
|
||||
|
||||
-- Поля для хед-изображения
|
||||
head_img.id AS head_img_id,
|
||||
head_img.file_name AS head_img_file_name,
|
||||
head_img.file_type AS head_img_type,
|
||||
head_img.size AS head_img_size,
|
||||
|
||||
-- Поля для аватара
|
||||
avatar.id AS avatar_id,
|
||||
avatar.file_name AS avatar_file_name,
|
||||
avatar.file_type AS avatar_type,
|
||||
avatar.size AS avatar_img_size,
|
||||
|
||||
-- Поля для фона
|
||||
background_img.id AS background_img_id,
|
||||
background_img.file_name AS background_img_file_name,
|
||||
background_img.file_type AS background_img_type,
|
||||
background_img.size AS background_img_size
|
||||
|
||||
FROM donate_pages dp
|
||||
LEFT JOIN files head_img ON dp.head_img = head_img.id
|
||||
LEFT JOIN files avatar ON dp.avatar = avatar.id
|
||||
LEFT JOIN files background_img ON dp.background_img = background_img.id
|
||||
WHERE dp.streamer_id = (@streamer_id);
|
||||
`
|
||||
|
||||
var GetDonationPageByLogin = `
|
||||
|
@ -162,18 +162,45 @@ func (donatService *ServiceDonat) GetInnerDonatPage(
|
||||
ctx context.Context,
|
||||
streamerID model.StreamerID,
|
||||
) (model.InnerDonatePageResponse, error) {
|
||||
// Получаем данные страницы доната из репозитория
|
||||
donatePage, err := donatService.donatRepo.GetDonatPage(ctx, streamerID)
|
||||
if err != nil {
|
||||
slog.Error(err.Error())
|
||||
return model.InnerDonatePageResponse{}, err
|
||||
}
|
||||
|
||||
var innerDonatePageResponse = model.InnerDonatePageResponse{
|
||||
// Создаем объекты InnerFile для каждого изображения
|
||||
headImgFile := model.InnerFile{
|
||||
FileID: donatePage.HeadImgFileId,
|
||||
FileName: donatePage.HeadImgFileName,
|
||||
FileType: donatePage.HeadImgType,
|
||||
FileLink: donatService.storage.DownloadLink(donatePage.HeadImgFileId),
|
||||
FileSize: donatePage.HeadImgSize,
|
||||
}
|
||||
|
||||
avatarFile := model.InnerFile{
|
||||
FileID: donatePage.AvatarFileId,
|
||||
FileName: donatePage.AvatarFileName,
|
||||
FileType: donatePage.AvatarType,
|
||||
FileLink: donatService.storage.DownloadLink(donatePage.AvatarFileId),
|
||||
FileSize: donatePage.AvatarImgSize,
|
||||
}
|
||||
|
||||
backgroundImgFile := model.InnerFile{
|
||||
FileID: donatePage.BackgroundImgFileId,
|
||||
FileName: donatePage.BackgroundImgFileName,
|
||||
FileType: donatePage.BackgroundImgType,
|
||||
FileLink: donatService.storage.DownloadLink(donatePage.BackgroundImgFileId),
|
||||
FileSize: donatePage.BackgroundImgSize,
|
||||
}
|
||||
|
||||
// Создаем объект InnerDonatePageResponse
|
||||
innerDonatePageResponse := model.InnerDonatePageResponse{
|
||||
Description: donatePage.Description,
|
||||
TextAfterDonat: donatePage.TextAfterDonat,
|
||||
HeadImg: donatePage.HeadImg,
|
||||
Avatar: donatePage.Avatar,
|
||||
BackgroundImg: donatePage.BackgroundImg,
|
||||
HeadImg: headImgFile,
|
||||
Avatar: avatarFile,
|
||||
BackgroundImg: backgroundImgFile,
|
||||
}
|
||||
|
||||
return innerDonatePageResponse, nil
|
||||
@ -193,9 +220,9 @@ func (donatService *ServiceDonat) GetOuterDonatPage(
|
||||
Description: donatePage.Description,
|
||||
Login: donatePage.StreamerLogin,
|
||||
OnLine: "online",
|
||||
BackgroundImg: donatePage.BackgroundImg,
|
||||
HeadImg: donatePage.HeadImg,
|
||||
AvatarImg: donatePage.Avatar,
|
||||
BackgroundImg: donatService.storage.DownloadLink(donatePage.BackgroundImgFileId),
|
||||
HeadImg: donatService.storage.DownloadLink(donatePage.HeadImgFileId),
|
||||
AvatarImg: donatService.storage.DownloadLink(donatePage.AvatarFileId),
|
||||
}
|
||||
return outerDonatePageResponse, nil
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user