diff --git a/internal/api/http/handlers/donat/donat.go b/internal/api/http/handlers/donat/donat.go index db819d2..7bbcde8 100644 --- a/internal/api/http/handlers/donat/donat.go +++ b/internal/api/http/handlers/donat/donat.go @@ -46,6 +46,7 @@ func CreateDonat(donatService model.DonatService) echo.HandlerFunc { body.DonatUser, body.TargetID, body.Amount, + body.MediaUrl, ) if err != nil { return request.JSON(http.StatusInternalServerError, err.Error()) @@ -91,6 +92,7 @@ func CreateTestDonat(donatService model.DonatService) echo.HandlerFunc { body.Text, body.DonatUser, body.TargetID, + body.MediaUrl, body.Amount, ) diff --git a/internal/model/interfaces.go b/internal/model/interfaces.go index 06fcd96..527abbf 100644 --- a/internal/model/interfaces.go +++ b/internal/model/interfaces.go @@ -76,13 +76,21 @@ type DonatService interface { CheckToken(request echo.Context) (api.CheckTokenResponse, error) - CreateDonat(ctx context.Context, streamerLogin, text, donatUser string, targetID *int, amount int) (CreateDonatResponse, error) + CreateDonat( + ctx context.Context, + streamerLogin, text, + donatUser string, + targetID *int, + amount int, + mediaUrl *string, + ) (CreateDonatResponse, error) CreateTestDonat( ctx context.Context, streamerID int, text string, donatUser string, targetID *int, + mediaURL *string, amount int, ) error @@ -142,6 +150,7 @@ type DonatRepo interface { amount int, text string, donatUser string, + mediaUrl *string, status string, ) error diff --git a/internal/model/models.go b/internal/model/models.go index fc8bdc6..0e2d4e0 100644 --- a/internal/model/models.go +++ b/internal/model/models.go @@ -266,10 +266,11 @@ type DonatAndWidget struct { } type CreateDonatBody struct { - TargetID *int `json:"targetID"` - Amount int `json:"amount"` - Text string `json:"text"` - DonatUser string `json:"donatUser"` + TargetID *int `json:"targetID"` + Amount int `json:"amount"` + Text string `json:"text"` + DonatUser string `json:"donatUser"` + MediaUrl *string `json:"mediaUrl"` } type DonationStat struct { diff --git a/internal/model/sql/model.go b/internal/model/sql/model.go index fdca981..758f371 100644 --- a/internal/model/sql/model.go +++ b/internal/model/sql/model.go @@ -39,6 +39,7 @@ CREATE TABLE IF NOT EXISTS donats ( target_id INTEGER, paid_time TIMESTAMP, is_test BOOLEAN DEFAULT 'false', + media_url VARCHAR(255), status VARCHAR(50) NOT NULL DEFAULT 'pending', diff --git a/internal/model/sql/query.go b/internal/model/sql/query.go index 841162b..5fcffef 100644 --- a/internal/model/sql/query.go +++ b/internal/model/sql/query.go @@ -40,8 +40,8 @@ func GetMediaUrl(mediaType model.MediaType) string { } var CreateDonat = ` -INSERT INTO donats (streamer_id, widget_id, text, amount, donat_user, order_id, target_id, status, paid_time, is_test) -VALUES (@streamer_id, @widget_id, @text, @amount, @donat_user, @order_id, @target_id, @status, @paid_time, @is_test) +INSERT INTO donats (streamer_id, widget_id, text, amount, donat_user, order_id, target_id, status, paid_time, is_test, media_url) +VALUES (@streamer_id, @widget_id, @text, @amount, @donat_user, @order_id, @target_id, @status, @paid_time, @is_test, @media_url) RETURNING id; ` var MarkDonatView = ` diff --git a/internal/repository/donat/donat.go b/internal/repository/donat/donat.go index 425142e..3bd1d6d 100644 --- a/internal/repository/donat/donat.go +++ b/internal/repository/donat/donat.go @@ -33,6 +33,7 @@ func (repoDonat *RepoDonat) CreateDonat( amount int, text string, donatUser string, + mediaUrl *string, status string, ) error { args := pgx.NamedArgs{ @@ -44,6 +45,7 @@ func (repoDonat *RepoDonat) CreateDonat( "amount": amount, "status": status, "donat_user": donatUser, + "media_url": mediaUrl, "is_test": false, "paid_time": nil, } diff --git a/internal/service/donat/donat.go b/internal/service/donat/donat.go index 7b70184..0d088fe 100644 --- a/internal/service/donat/donat.go +++ b/internal/service/donat/donat.go @@ -95,6 +95,7 @@ func (donatService *ServiceDonat) CreateDonat( donatUser string, targetID *int, amount int, + mediaUrl *string, ) (model.CreateDonatResponse, error) { donatePage, err := donatService.donatRepo.GetDonatPageByLogin(ctx, streamerLogin) @@ -128,6 +129,7 @@ func (donatService *ServiceDonat) CreateDonat( amount, text, donatUser, + mediaUrl, "pending", ) if err != nil { @@ -153,6 +155,7 @@ func (donatService *ServiceDonat) CreateTestDonat( text string, donatUser string, targetID *int, + mediaUrl *string, amount int, ) error { orderID := uuid.New() @@ -180,6 +183,7 @@ func (donatService *ServiceDonat) CreateTestDonat( amount, text, donatUser, + mediaUrl, "test_donat", ) if err != nil {