dev
This commit is contained in:
parent
13a80221ed
commit
c259b0f34c
@ -11,7 +11,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func CreateDonat(donatService model.DonatService) echo.HandlerFunc {
|
func CreateDonat(donatService model.DonatService) echo.HandlerFunc {
|
||||||
type Body struct {
|
type CreateDonatBody struct {
|
||||||
StreamerID model.StreamerID `json:"streamerID"`
|
StreamerID model.StreamerID `json:"streamerID"`
|
||||||
TargetID model.TargetID `json:"targetID"`
|
TargetID model.TargetID `json:"targetID"`
|
||||||
Amount model.DonatAmount `json:"amount"`
|
Amount model.DonatAmount `json:"amount"`
|
||||||
@ -20,7 +20,7 @@ func CreateDonat(donatService model.DonatService) echo.HandlerFunc {
|
|||||||
}
|
}
|
||||||
return func(request echo.Context) error {
|
return func(request echo.Context) error {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
var body Body
|
var body CreateDonatBody
|
||||||
if err := request.Bind(&body); err != nil {
|
if err := request.Bind(&body); err != nil {
|
||||||
slog.Error(err.Error())
|
slog.Error(err.Error())
|
||||||
return echo.NewHTTPError(400, err.Error())
|
return echo.NewHTTPError(400, err.Error())
|
||||||
@ -32,29 +32,30 @@ func CreateDonat(donatService model.DonatService) echo.HandlerFunc {
|
|||||||
|
|
||||||
orderID := model.OrderID(uuid.New().String())
|
orderID := model.OrderID(uuid.New().String())
|
||||||
|
|
||||||
err := donatService.CreateDonat(
|
order, err := donatService.CreateDonat(
|
||||||
ctx,
|
ctx,
|
||||||
body.StreamerID,
|
body.StreamerID,
|
||||||
orderID,
|
orderID,
|
||||||
|
body.TargetID,
|
||||||
body.Amount,
|
body.Amount,
|
||||||
body.Text,
|
body.Text,
|
||||||
body.DonatUser,
|
body.DonatUser,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return request.JSON(500, "Set donat error")
|
return request.JSON(500, "Create donat error")
|
||||||
}
|
}
|
||||||
|
|
||||||
return request.String(200, "Set donat success")
|
return request.JSON(http.StatusCreated, order)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func MarkDonatPaid(donatService model.DonatService) echo.HandlerFunc {
|
func MarkDonatPaid(donatService model.DonatService) echo.HandlerFunc {
|
||||||
type Body struct {
|
type MarkDonatPaidBody struct {
|
||||||
OrderID model.OrderID `json:"orderID"`
|
OrderID model.OrderID `json:"orderID"`
|
||||||
}
|
}
|
||||||
return func(request echo.Context) error {
|
return func(request echo.Context) error {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
var body Body
|
var body MarkDonatPaidBody
|
||||||
if err := request.Bind(&body); err != nil {
|
if err := request.Bind(&body); err != nil {
|
||||||
slog.Error(err.Error())
|
slog.Error(err.Error())
|
||||||
return echo.NewHTTPError(400, err.Error())
|
return echo.NewHTTPError(400, err.Error())
|
||||||
|
@ -10,8 +10,10 @@ import (
|
|||||||
|
|
||||||
func CreateWidget(widgetService model.WidgetService) echo.HandlerFunc {
|
func CreateWidget(widgetService model.WidgetService) echo.HandlerFunc {
|
||||||
type Body struct {
|
type Body struct {
|
||||||
StreamerID model.StreamerID `json:"streamerID" validate:"required"`
|
StreamerID model.StreamerID `json:"streamerID"`
|
||||||
TemplateID model.TemplateID `json:"templateID" validate:"required"`
|
TemplateID model.TemplateID `json:"templateID"`
|
||||||
|
MinAmount model.DonatAmount `json:"minAmount"`
|
||||||
|
Duration model.Duration `json:"duration"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Response struct {
|
type Response struct {
|
||||||
@ -31,6 +33,8 @@ func CreateWidget(widgetService model.WidgetService) echo.HandlerFunc {
|
|||||||
ctx,
|
ctx,
|
||||||
body.StreamerID,
|
body.StreamerID,
|
||||||
body.TemplateID,
|
body.TemplateID,
|
||||||
|
body.Duration,
|
||||||
|
body.MinAmount,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return request.JSON(422, "Create widget error")
|
return request.JSON(422, "Create widget error")
|
||||||
@ -140,7 +144,7 @@ func UpdateDuration(widgetService model.WidgetService) echo.HandlerFunc {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func SetMediaFile(service model.MediaService) echo.HandlerFunc {
|
func SetMediaFile(widgetService model.WidgetService) echo.HandlerFunc {
|
||||||
return func(request echo.Context) error {
|
return func(request echo.Context) error {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
@ -161,7 +165,7 @@ func SetMediaFile(service model.MediaService) echo.HandlerFunc {
|
|||||||
return echo.NewHTTPError(500, "File is invalid")
|
return echo.NewHTTPError(500, "File is invalid")
|
||||||
}
|
}
|
||||||
|
|
||||||
err = service.SetMediaFile(
|
err = widgetService.SetMediaFile(
|
||||||
ctx,
|
ctx,
|
||||||
model.MediaType(mediaType),
|
model.MediaType(mediaType),
|
||||||
model.WidgetID(widgetID),
|
model.WidgetID(widgetID),
|
||||||
@ -178,7 +182,7 @@ func SetMediaFile(service model.MediaService) echo.HandlerFunc {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetMediaFile(service model.MediaService) echo.HandlerFunc {
|
func GetMediaFile(widgetService model.WidgetService) echo.HandlerFunc {
|
||||||
return func(request echo.Context) error {
|
return func(request echo.Context) error {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
@ -191,7 +195,7 @@ func GetMediaFile(service model.MediaService) echo.HandlerFunc {
|
|||||||
return echo.NewHTTPError(400, "Path parameter 'widgetID' is invalid")
|
return echo.NewHTTPError(400, "Path parameter 'widgetID' is invalid")
|
||||||
}
|
}
|
||||||
|
|
||||||
file, err := service.GetMediaFile(
|
file, err := widgetService.GetMediaFile(
|
||||||
ctx,
|
ctx,
|
||||||
model.WidgetID(widgetID),
|
model.WidgetID(widgetID),
|
||||||
model.MediaType(mediaType),
|
model.MediaType(mediaType),
|
||||||
@ -204,7 +208,7 @@ func GetMediaFile(service model.MediaService) echo.HandlerFunc {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func UpdateMediaFile(service model.MediaService) echo.HandlerFunc {
|
func UpdateMediaFile(widgetService model.WidgetService) echo.HandlerFunc {
|
||||||
return func(request echo.Context) error {
|
return func(request echo.Context) error {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
@ -225,7 +229,7 @@ func UpdateMediaFile(service model.MediaService) echo.HandlerFunc {
|
|||||||
return echo.NewHTTPError(500, "File is invalid")
|
return echo.NewHTTPError(500, "File is invalid")
|
||||||
}
|
}
|
||||||
|
|
||||||
err = service.UpdateMediaFile(
|
err = widgetService.UpdateMediaFile(
|
||||||
ctx,
|
ctx,
|
||||||
model.WidgetID(widgetID),
|
model.WidgetID(widgetID),
|
||||||
model.MediaType(mediaType),
|
model.MediaType(mediaType),
|
||||||
@ -243,7 +247,7 @@ func UpdateMediaFile(service model.MediaService) echo.HandlerFunc {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func SetMediaUrl(service model.MediaService) echo.HandlerFunc {
|
func SetMediaUrl(widgetService model.WidgetService) echo.HandlerFunc {
|
||||||
type Body struct {
|
type Body struct {
|
||||||
WidgetID model.WidgetID `json:"widgetID" validate:"required"`
|
WidgetID model.WidgetID `json:"widgetID" validate:"required"`
|
||||||
MediaUrl model.MediaUrl `json:"mediaUrl" validate:"required"`
|
MediaUrl model.MediaUrl `json:"mediaUrl" validate:"required"`
|
||||||
@ -261,7 +265,7 @@ func SetMediaUrl(service model.MediaService) echo.HandlerFunc {
|
|||||||
|
|
||||||
mediaType := request.Param("mediaType")
|
mediaType := request.Param("mediaType")
|
||||||
|
|
||||||
err := service.SetMediaUrl(
|
err := widgetService.SetMediaUrl(
|
||||||
ctx,
|
ctx,
|
||||||
model.MediaType(mediaType),
|
model.MediaType(mediaType),
|
||||||
body.WidgetID,
|
body.WidgetID,
|
||||||
|
@ -2,7 +2,7 @@ package http
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
. "donat-widget/internal/api/http/handlers/donat"
|
|
||||||
"donat-widget/internal/model/sql"
|
"donat-widget/internal/model/sql"
|
||||||
"github.com/labstack/echo/v4"
|
"github.com/labstack/echo/v4"
|
||||||
"github.com/swaggo/echo-swagger"
|
"github.com/swaggo/echo-swagger"
|
||||||
@ -15,6 +15,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
. "donat-widget/internal/api/http/handlers/donat"
|
||||||
. "donat-widget/internal/api/http/handlers/widget"
|
. "donat-widget/internal/api/http/handlers/widget"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -44,20 +45,23 @@ func IncludeDonatHandlers(
|
|||||||
) {
|
) {
|
||||||
server.POST(PREFIX+"/donat/create", CreateDonat(donatService))
|
server.POST(PREFIX+"/donat/create", CreateDonat(donatService))
|
||||||
server.POST(PREFIX+"/donat/view/:donatID", MarkDonatView(donatService))
|
server.POST(PREFIX+"/donat/view/:donatID", MarkDonatView(donatService))
|
||||||
server.POST(PREFIX+"/donat/paid/:donatID", MarkDonatPaid(donatService))
|
server.POST(PREFIX+"/donat/paid", MarkDonatPaid(donatService))
|
||||||
}
|
}
|
||||||
|
|
||||||
func IncludeWidgetHandlers(
|
func IncludeWidgetHandlers(
|
||||||
server *echo.Echo,
|
server *echo.Echo,
|
||||||
widgetService model.WidgetService,
|
widgetService model.WidgetService,
|
||||||
) {
|
) {
|
||||||
|
server.POST(PREFIX+"/create", CreateWidget(widgetService))
|
||||||
|
server.GET(PREFIX+"/html/:widgetID", GetWidgetHTML(widgetService))
|
||||||
|
server.GET(PREFIX+"/info/:widgetID", GetWidgetInfo(widgetService))
|
||||||
|
|
||||||
server.POST(PREFIX+"/media/:mediaType/upload", SetMediaFile(widgetService))
|
server.POST(PREFIX+"/media/:mediaType/upload", SetMediaFile(widgetService))
|
||||||
server.POST(PREFIX+"/media/:mediaType/set", SetMediaUrl(widgetService))
|
server.POST(PREFIX+"/media/:mediaType/set", SetMediaUrl(widgetService))
|
||||||
server.GET(PREFIX+"/media/:mediaType/get/:widgetID", GetMediaFile(widgetService))
|
server.GET(PREFIX+"/media/:mediaType/get/:widgetID", GetMediaFile(widgetService))
|
||||||
server.POST(PREFIX+"/create", CreateWidget(widgetService))
|
|
||||||
server.PATCH(PREFIX+"/duration/update", UpdateDuration(widgetService))
|
server.PATCH(PREFIX+"/duration/update", UpdateDuration(widgetService))
|
||||||
server.GET(PREFIX+"/html/:widgetID", GetWidgetHTML(widgetService))
|
|
||||||
server.GET(PREFIX+"/info/:widgetID", GetWidgetInfo(widgetService))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateTale(db model.Db) echo.HandlerFunc {
|
func CreateTale(db model.Db) echo.HandlerFunc {
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
db:
|
db:
|
||||||
port: "5432"
|
port: "5432"
|
||||||
host: "80.87.195.79"
|
host: "db"
|
||||||
password: "test"
|
password: "postgres"
|
||||||
username: "test"
|
username: "postgres"
|
||||||
dbname: "test"
|
dbname: "postgres"
|
||||||
|
|
||||||
server:
|
server:
|
||||||
port: "8002"
|
port: "8002"
|
||||||
@ -13,5 +13,5 @@ storage:
|
|||||||
master: "http://92.63.193.151:9333"
|
master: "http://92.63.193.151:9333"
|
||||||
|
|
||||||
paymentService:
|
paymentService:
|
||||||
host: "payment-service"
|
host: "92.118.114.148"
|
||||||
port: "8003"
|
port: "8003"
|
@ -9,7 +9,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type WidgetService interface {
|
type WidgetService interface {
|
||||||
CreateWidget(ctx context.Context, streamerID StreamerID, templateId TemplateID) (WidgetID, error)
|
CreateWidget(ctx context.Context, streamerID StreamerID, templateId TemplateID, duration Duration, minAmount DonatAmount) (WidgetID, error)
|
||||||
DeleteWidget(ctx context.Context, widgetID WidgetID) error
|
DeleteWidget(ctx context.Context, widgetID WidgetID) error
|
||||||
UpdateDuration(ctx context.Context, widgetID WidgetID, duration Duration) error
|
UpdateDuration(ctx context.Context, widgetID WidgetID, duration Duration) error
|
||||||
GetWidgetInfo(ctx context.Context, widgetID WidgetID) (*DonatAndWidget, error)
|
GetWidgetInfo(ctx context.Context, widgetID WidgetID) (*DonatAndWidget, error)
|
||||||
@ -21,7 +21,7 @@ type WidgetService interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type WidgetRepo interface {
|
type WidgetRepo interface {
|
||||||
CreateWidget(ctx context.Context, streamerID StreamerID, templateId TemplateID) (WidgetID, error)
|
CreateWidget(ctx context.Context, streamerID StreamerID, templateId TemplateID, duration Duration, minAmount DonatAmount) (WidgetID, error)
|
||||||
DeleteWidget(ctx context.Context, widgetID WidgetID) error
|
DeleteWidget(ctx context.Context, widgetID WidgetID) error
|
||||||
UpdateDuration(ctx context.Context, widgetID WidgetID, duration Duration) error
|
UpdateDuration(ctx context.Context, widgetID WidgetID, duration Duration) error
|
||||||
GetWidget(ctx context.Context, widgetID WidgetID) (*Widget, error)
|
GetWidget(ctx context.Context, widgetID WidgetID) (*Widget, error)
|
||||||
@ -34,18 +34,26 @@ type WidgetRepo interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type DonatService interface {
|
type DonatService interface {
|
||||||
CreateDonat(ctx context.Context, streamerID StreamerID, orderID OrderID, amount DonatAmount, text string, donatUser string) error
|
CreateDonat(ctx context.Context, streamerID StreamerID, orderID OrderID, targetID TargetID, amount DonatAmount, text string, donatUser string) (api.CreatePaymentResponse, error)
|
||||||
MarkDonatPaid(ctx context.Context, orderID OrderID) error
|
MarkDonatPaid(ctx context.Context, orderID OrderID) error
|
||||||
MarkDonatView(ctx context.Context, DonatID DonatID) error
|
MarkDonatView(ctx context.Context, DonatID DonatID) error
|
||||||
}
|
}
|
||||||
|
|
||||||
type DonatRepo interface {
|
type DonatRepo interface {
|
||||||
CreateDonat(ctx context.Context, widgetID WidgetID, orderID OrderID, amount DonatAmount, text string, donatUser string) error
|
CreateDonat(ctx context.Context, widgetID WidgetID, orderID OrderID, targetID TargetID, amount DonatAmount, text string, donatUser string) error
|
||||||
GetDonat(ctx context.Context, widgetID WidgetID) ([]*Donat, error)
|
GetDonat(ctx context.Context, widgetID WidgetID) ([]*Donat, error)
|
||||||
MarkDonatPaid(ctx context.Context, orderID OrderID) error
|
MarkDonatPaid(ctx context.Context, orderID OrderID) error
|
||||||
MarkDonatView(ctx context.Context, DonatID DonatID) error
|
MarkDonatView(ctx context.Context, DonatID DonatID) error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type TargetService interface {
|
||||||
|
CreateTarget()
|
||||||
|
}
|
||||||
|
|
||||||
|
type TargetRepo interface {
|
||||||
|
CreateTarget()
|
||||||
|
}
|
||||||
|
|
||||||
type Error interface {
|
type Error interface {
|
||||||
Error() string
|
Error() string
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ CREATE TABLE IF NOT EXISTS donats (
|
|||||||
id SERIAL PRIMARY KEY,
|
id SERIAL PRIMARY KEY,
|
||||||
widget_id INTEGER NOT NULL,
|
widget_id INTEGER NOT NULL,
|
||||||
order_id TEXT NOT NULL,
|
order_id TEXT NOT NULL,
|
||||||
|
target_id INTEGER NOT NULL,
|
||||||
|
|
||||||
text TEXT NOT NULL,
|
text TEXT NOT NULL,
|
||||||
amount INTEGER NOT NULL,
|
amount INTEGER NOT NULL,
|
||||||
@ -35,9 +36,12 @@ CREATE TABLE IF NOT EXISTS donats (
|
|||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS targets (
|
CREATE TABLE IF NOT EXISTS targets (
|
||||||
id SERIAL PRIMARY KEY,
|
id SERIAL PRIMARY KEY,
|
||||||
|
streamer_id INTEGER NOT NULL,
|
||||||
|
|
||||||
text TEXT NOT NULL,
|
text TEXT NOT NULL,
|
||||||
amount INTEGER NOT NULL,
|
amount INTEGER NOT NULL,
|
||||||
collected INTEGER NOT NULL,
|
collected INTEGER DEFAULT 0,
|
||||||
|
|
||||||
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||||
);
|
);
|
||||||
|
@ -6,8 +6,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var CreateWidget = `
|
var CreateWidget = `
|
||||||
INSERT INTO widgets (streamer_id, template_id)
|
INSERT INTO widgets (streamer_id, template_id, duration, min_amount)
|
||||||
VALUES (@streamer_id, @template_id);
|
VALUES (@streamer_id, @template_id, @duration, @min_amount);
|
||||||
`
|
`
|
||||||
var UpdateDuration = `
|
var UpdateDuration = `
|
||||||
UPDATE widgets
|
UPDATE widgets
|
||||||
@ -43,8 +43,8 @@ func GetMediaUrl(mediaType model.MediaType) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var CreateDonat = `
|
var CreateDonat = `
|
||||||
INSERT INTO donats (widget_id, text, amount, donat_user, order_id)
|
INSERT INTO donats (widget_id, text, amount, donat_user, order_id, target_id)
|
||||||
VALUES (@widget_id, @text, @amount, @donat_user, @order_id);
|
VALUES (@widget_id, @text, @amount, @donat_user, @order_id, @target_id);
|
||||||
`
|
`
|
||||||
var MarkDonatView = `
|
var MarkDonatView = `
|
||||||
UPDATE donats
|
UPDATE donats
|
||||||
@ -60,3 +60,18 @@ var GetDonat = `
|
|||||||
SELECT * FROM donats
|
SELECT * FROM donats
|
||||||
WHERE widget_id = (@widget_id) AND paid = (@paid) AND view = (@view);
|
WHERE widget_id = (@widget_id) AND paid = (@paid) AND view = (@view);
|
||||||
`
|
`
|
||||||
|
|
||||||
|
var CreateTarget = `
|
||||||
|
INSERT INTO targets (streamer_id, text, amount)
|
||||||
|
VALUES (@streamer_id, @text, @amount);
|
||||||
|
`
|
||||||
|
|
||||||
|
var GetAllTarget = `
|
||||||
|
SELECT * FROM targets
|
||||||
|
WHERE streamer_id = (@streamer_id);
|
||||||
|
`
|
||||||
|
var AddAmountToTarget = `
|
||||||
|
UPDATE targets
|
||||||
|
SET amount = amount + (@amount)
|
||||||
|
WHERE id = (@target_id);
|
||||||
|
`
|
||||||
|
@ -81,7 +81,7 @@ async function endDonat(donatID) {
|
|||||||
while (contentDiv.firstChild) {
|
while (contentDiv.firstChild) {
|
||||||
contentDiv.removeChild(contentDiv.firstChild);
|
contentDiv.removeChild(contentDiv.firstChild);
|
||||||
}
|
}
|
||||||
let response = await fetch(baseUrl + '/donat/delete/' + String(donatID), {method: 'DELETE'});
|
let response = await fetch(baseUrl + '/donat/view/' + String(donatID), {method: 'POST'});
|
||||||
}
|
}
|
||||||
|
|
||||||
let audio;
|
let audio;
|
||||||
|
@ -23,13 +23,15 @@ func (repoDonat *RepoDonat) CreateDonat(
|
|||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
widgetID model.WidgetID,
|
widgetID model.WidgetID,
|
||||||
orderID model.OrderID,
|
orderID model.OrderID,
|
||||||
|
targetID model.TargetID,
|
||||||
amount model.DonatAmount,
|
amount model.DonatAmount,
|
||||||
text string,
|
text string,
|
||||||
donatUser string,
|
donatUser string,
|
||||||
) error {
|
) error {
|
||||||
args := model.QueryArgs{
|
args := pgx.NamedArgs{
|
||||||
"widget_id": widgetID,
|
"widget_id": widgetID,
|
||||||
"order_id": orderID,
|
"order_id": orderID,
|
||||||
|
"target_id": targetID,
|
||||||
"text": text,
|
"text": text,
|
||||||
"amount": amount,
|
"amount": amount,
|
||||||
"donat_user": donatUser,
|
"donat_user": donatUser,
|
||||||
|
@ -1 +1,81 @@
|
|||||||
package target
|
package target
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"donat-widget/internal/model"
|
||||||
|
"donat-widget/internal/model/sql"
|
||||||
|
"github.com/georgysavva/scany/v2/pgxscan"
|
||||||
|
"github.com/jackc/pgx/v5"
|
||||||
|
"log/slog"
|
||||||
|
)
|
||||||
|
|
||||||
|
func New(db model.Db) *RepoTarget {
|
||||||
|
return &RepoTarget{
|
||||||
|
db: db,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type RepoTarget struct {
|
||||||
|
db model.Db
|
||||||
|
}
|
||||||
|
|
||||||
|
func (targetRepo *RepoTarget) CreateTarget(
|
||||||
|
ctx context.Context,
|
||||||
|
streamerID model.StreamerID,
|
||||||
|
amount model.DonatAmount,
|
||||||
|
text string,
|
||||||
|
) error {
|
||||||
|
args := pgx.NamedArgs{
|
||||||
|
"streamer_id": streamerID,
|
||||||
|
"amount": amount,
|
||||||
|
"text": text,
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := targetRepo.db.Query(ctx, sql.CreateTarget, args)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("targetRepo.db.Query", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (targetRepo *RepoTarget) GetAllTarget(
|
||||||
|
ctx context.Context,
|
||||||
|
streamerID model.StreamerID,
|
||||||
|
) ([]*model.Target, error) {
|
||||||
|
args := pgx.NamedArgs{
|
||||||
|
"streamer_id": streamerID,
|
||||||
|
}
|
||||||
|
rows, err := targetRepo.db.Query(ctx, sql.GetAllTarget, args)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("targetRepo.db.Query", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var targets []*model.Target
|
||||||
|
err = pgxscan.ScanAll(&targets, rows)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("targetRepo.db.Query", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return targets, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (targetRepo *RepoTarget) AddAmountToTarget(
|
||||||
|
ctx context.Context,
|
||||||
|
targetID model.TargetID,
|
||||||
|
amount model.DonatAmount,
|
||||||
|
) error {
|
||||||
|
args := pgx.NamedArgs{
|
||||||
|
"target_id": targetID,
|
||||||
|
"amount": amount,
|
||||||
|
}
|
||||||
|
_, err := targetRepo.db.Query(ctx, sql.AddAmountToTarget, args)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("targetRepo.db.Query", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
"donat-widget/internal/model/sql"
|
"donat-widget/internal/model/sql"
|
||||||
"errors"
|
"errors"
|
||||||
"github.com/georgysavva/scany/v2/pgxscan"
|
"github.com/georgysavva/scany/v2/pgxscan"
|
||||||
|
"github.com/jackc/pgx/v5"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -28,10 +29,14 @@ func (widgetRepo *RepoWidget) CreateWidget(
|
|||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
streamerID model.StreamerID,
|
streamerID model.StreamerID,
|
||||||
templateID model.TemplateID,
|
templateID model.TemplateID,
|
||||||
|
duration model.Duration,
|
||||||
|
minAmount model.DonatAmount,
|
||||||
) (model.WidgetID, error) {
|
) (model.WidgetID, error) {
|
||||||
args := model.QueryArgs{
|
args := pgx.NamedArgs{
|
||||||
"streamer_id": streamerID,
|
"streamer_id": streamerID,
|
||||||
"template_id": templateID,
|
"template_id": templateID,
|
||||||
|
"duration": duration,
|
||||||
|
"min_amount": minAmount,
|
||||||
}
|
}
|
||||||
_, err := widgetRepo.db.Query(ctx, sql.CreateWidget, args)
|
_, err := widgetRepo.db.Query(ctx, sql.CreateWidget, args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -47,7 +52,7 @@ func (widgetRepo *RepoWidget) GetWidget(
|
|||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
widgetID model.WidgetID,
|
widgetID model.WidgetID,
|
||||||
) (*model.Widget, error) {
|
) (*model.Widget, error) {
|
||||||
args := model.QueryArgs{
|
args := pgx.NamedArgs{
|
||||||
"id": widgetID,
|
"id": widgetID,
|
||||||
}
|
}
|
||||||
rows, err := widgetRepo.db.Query(ctx, sql.GetWidget, args)
|
rows, err := widgetRepo.db.Query(ctx, sql.GetWidget, args)
|
||||||
@ -78,7 +83,7 @@ func (widgetRepo *RepoWidget) GetAllWidget(
|
|||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
streamerID model.StreamerID,
|
streamerID model.StreamerID,
|
||||||
) ([]*model.Widget, error) {
|
) ([]*model.Widget, error) {
|
||||||
args := model.QueryArgs{
|
args := pgx.NamedArgs{
|
||||||
"streamerID": streamerID,
|
"streamerID": streamerID,
|
||||||
}
|
}
|
||||||
rows, err := widgetRepo.db.Query(ctx, sql.GetAllWidget, args)
|
rows, err := widgetRepo.db.Query(ctx, sql.GetAllWidget, args)
|
||||||
@ -109,7 +114,7 @@ func (widgetRepo *RepoWidget) UpdateDuration(
|
|||||||
widgetID model.WidgetID,
|
widgetID model.WidgetID,
|
||||||
duration model.Duration,
|
duration model.Duration,
|
||||||
) error {
|
) error {
|
||||||
args := model.QueryArgs{
|
args := pgx.NamedArgs{
|
||||||
"id": widgetID,
|
"id": widgetID,
|
||||||
"duration": duration,
|
"duration": duration,
|
||||||
}
|
}
|
||||||
@ -166,7 +171,7 @@ func (widgetRepo *RepoWidget) UpdateMediaFile(
|
|||||||
}
|
}
|
||||||
|
|
||||||
mediaType = mediaType + "_url"
|
mediaType = mediaType + "_url"
|
||||||
args := model.QueryArgs{
|
args := pgx.NamedArgs{
|
||||||
string(mediaType): model.MediaUrl(fileID),
|
string(mediaType): model.MediaUrl(fileID),
|
||||||
"id": widgetID,
|
"id": widgetID,
|
||||||
}
|
}
|
||||||
@ -187,7 +192,7 @@ func (widgetRepo *RepoWidget) SetMediaUrl(
|
|||||||
) error {
|
) error {
|
||||||
mediaType = mediaType + "_url"
|
mediaType = mediaType + "_url"
|
||||||
|
|
||||||
args := model.QueryArgs{
|
args := pgx.NamedArgs{
|
||||||
string(mediaType): mediaUrl,
|
string(mediaType): mediaUrl,
|
||||||
"id": widgetID,
|
"id": widgetID,
|
||||||
}
|
}
|
||||||
@ -205,7 +210,7 @@ func (widgetRepo *RepoWidget) GetMediaUrl(
|
|||||||
mediaType model.MediaType,
|
mediaType model.MediaType,
|
||||||
) (model.MediaUrl, error) {
|
) (model.MediaUrl, error) {
|
||||||
mediaType = mediaType + "_url"
|
mediaType = mediaType + "_url"
|
||||||
args := model.QueryArgs{
|
args := pgx.NamedArgs{
|
||||||
"id": widgetID,
|
"id": widgetID,
|
||||||
}
|
}
|
||||||
rows, err := widgetRepo.db.Query(ctx, sql.GetMediaUrl(mediaType), args)
|
rows, err := widgetRepo.db.Query(ctx, sql.GetMediaUrl(mediaType), args)
|
||||||
|
@ -3,6 +3,7 @@ package donat
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"donat-widget/internal/model"
|
"donat-widget/internal/model"
|
||||||
|
"donat-widget/internal/model/api"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -28,14 +29,15 @@ func (donatService *ServiceDonat) CreateDonat(
|
|||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
streamerID model.StreamerID,
|
streamerID model.StreamerID,
|
||||||
orderID model.OrderID,
|
orderID model.OrderID,
|
||||||
|
targetID model.TargetID,
|
||||||
amount model.DonatAmount,
|
amount model.DonatAmount,
|
||||||
text string,
|
text string,
|
||||||
donatUser string,
|
donatUser string,
|
||||||
) error {
|
) (api.CreatePaymentResponse, error) {
|
||||||
widgets, err := donatService.widgetRepo.GetAllWidget(ctx, streamerID)
|
widgets, err := donatService.widgetRepo.GetAllWidget(ctx, streamerID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Error("donatService.widgetRepo.GetAllWidget: ", err)
|
slog.Error("donatService.widgetRepo.GetAllWidget: ", err)
|
||||||
return err
|
return api.CreatePaymentResponse{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var widgetID model.WidgetID
|
var widgetID model.WidgetID
|
||||||
@ -49,16 +51,23 @@ func (donatService *ServiceDonat) CreateDonat(
|
|||||||
ctx,
|
ctx,
|
||||||
widgetID,
|
widgetID,
|
||||||
orderID,
|
orderID,
|
||||||
|
targetID,
|
||||||
amount,
|
amount,
|
||||||
text,
|
text,
|
||||||
donatUser,
|
donatUser,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Error("donatService.donatRepo.SetDonat: " + err.Error())
|
slog.Error("donatService.donatRepo.CreateDonat: " + err.Error())
|
||||||
return err
|
return api.CreatePaymentResponse{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
createPaymentResponse, err := donatService.paymentClient.CreatePayment(streamerID, amount, orderID)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("donatService.paymentClient.CreatePayment: " + err.Error())
|
||||||
|
return api.CreatePaymentResponse{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return createPaymentResponse, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (donatService *ServiceDonat) MarkDonatPaid(
|
func (donatService *ServiceDonat) MarkDonatPaid(
|
||||||
|
@ -1 +1,19 @@
|
|||||||
package target
|
package target
|
||||||
|
|
||||||
|
import "donat-widget/internal/model"
|
||||||
|
|
||||||
|
type ServiceDonat struct {
|
||||||
|
targetRepo model.TargerRep
|
||||||
|
}
|
||||||
|
|
||||||
|
func New(
|
||||||
|
donatRepo model.DonatRepo,
|
||||||
|
widgetRepo model.WidgetRepo,
|
||||||
|
paymentClient model.PaymentClient,
|
||||||
|
) *ServiceDonat {
|
||||||
|
return &ServiceDonat{
|
||||||
|
donatRepo: donatRepo,
|
||||||
|
widgetRepo: widgetRepo,
|
||||||
|
paymentClient: paymentClient,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -25,8 +25,16 @@ func (widgetService *ServiceWidget) CreateWidget(
|
|||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
streamerID model.StreamerID,
|
streamerID model.StreamerID,
|
||||||
templateID model.TemplateID,
|
templateID model.TemplateID,
|
||||||
|
duration model.Duration,
|
||||||
|
minAmount model.DonatAmount,
|
||||||
) (model.WidgetID, error) {
|
) (model.WidgetID, error) {
|
||||||
widgetID, err := widgetService.widgetRepo.CreateWidget(ctx, streamerID, templateID)
|
widgetID, err := widgetService.widgetRepo.CreateWidget(
|
||||||
|
ctx,
|
||||||
|
streamerID,
|
||||||
|
templateID,
|
||||||
|
duration,
|
||||||
|
minAmount,
|
||||||
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Error("widgetService.widgetRepo.CreateWidget: " + err.Error())
|
slog.Error("widgetService.widgetRepo.CreateWidget: " + err.Error())
|
||||||
return 0, err
|
return 0, err
|
||||||
|
Loading…
x
Reference in New Issue
Block a user