130 lines
3.3 KiB
Go
130 lines
3.3 KiB
Go
package http
|
|
|
|
import (
|
|
"context"
|
|
"github.com/labstack/echo/v4/middleware"
|
|
|
|
"donat-widget/internal/model/sql"
|
|
"github.com/labstack/echo/v4"
|
|
"github.com/swaggo/echo-swagger"
|
|
"log/slog"
|
|
)
|
|
|
|
import (
|
|
"donat-widget/internal/model"
|
|
"donat-widget/pkg/validator"
|
|
)
|
|
|
|
import (
|
|
. "donat-widget/internal/api/http/handlers/donat"
|
|
. "donat-widget/internal/api/http/handlers/target"
|
|
)
|
|
|
|
var PREFIX = "/api/widget"
|
|
|
|
func NewApp(
|
|
db model.Db,
|
|
widgetService model.WidgetService,
|
|
donatService model.DonatService,
|
|
targetService model.TargetService,
|
|
authClient model.AuthClient,
|
|
) {
|
|
server := echo.New()
|
|
|
|
server.Use(
|
|
middleware.CORSWithConfig(
|
|
middleware.CORSConfig{
|
|
AllowOrigins: []string{"*"}, // Разрешить все домены
|
|
AllowMethods: []string{"*"},
|
|
AllowHeaders: []string{"*"},
|
|
},
|
|
),
|
|
)
|
|
|
|
server.Validator = validator.NewValidator()
|
|
|
|
server.GET(PREFIX+"/docs/*", echoSwagger.WrapHandler)
|
|
|
|
server.GET(PREFIX+"/docs/*", echoSwagger.WrapHandler)
|
|
server.GET(PREFIX+"/table/create", CreateTale(db))
|
|
server.GET(PREFIX+"/table/drop", DropTale(db))
|
|
|
|
IncludeWidgetHandlers(server, widgetService, authClient)
|
|
IncludeDonatHandlers(server, donatService)
|
|
IncludeTargetHandlers(server, targetService, donatService, authClient)
|
|
|
|
server.Logger.Fatal(server.Start(":8002"))
|
|
}
|
|
|
|
func IncludeTargetHandlers(
|
|
server *echo.Echo,
|
|
targetService model.TargetService,
|
|
donatService model.DonatService,
|
|
authClient model.AuthClient,
|
|
) {
|
|
server.POST(PREFIX+"/target/create", CreateTarget(targetService, authClient))
|
|
server.GET(PREFIX+"/target/all", GetAllTarget(targetService))
|
|
server.POST(PREFIX+"/target/addAmount", AddAmountTarget(targetService, donatService))
|
|
}
|
|
|
|
func IncludeDonatHandlers(
|
|
server *echo.Echo,
|
|
donatService model.DonatService,
|
|
) {
|
|
server.POST(PREFIX+"/donat/create", CreateDonat(donatService))
|
|
|
|
server.GET(PREFIX+"/inner-donate-page", GetInnerDonatePage(donatService))
|
|
|
|
server.GET(PREFIX+"/donat/get/:streamerID", GetDonat(donatService))
|
|
|
|
server.POST(PREFIX+"/donat/view/:donatID", MarkDonatView(donatService))
|
|
server.POST(PREFIX+"/donat/paid", MarkDonatPaid(donatService))
|
|
}
|
|
|
|
func IncludeWidgetHandlers(
|
|
server *echo.Echo,
|
|
widgetService model.WidgetService,
|
|
authClient model.AuthClient,
|
|
) {
|
|
//server.POST(PREFIX+"/create", model.CreateWidget(widgetService, authClient))
|
|
//
|
|
//server.GET(PREFIX+"/html/:streamerID", model.GetWidgetHTML(widgetService))
|
|
//server.GET(PREFIX+"/info/:widgetID", model.GetWidgetInfo(widgetService))
|
|
//
|
|
//server.POST(PREFIX+"/media/:mediaType/file/set", model.SetMediaFile(widgetService))
|
|
//server.GET(PREFIX+"/media/:mediaType/file/get/:widgetID", model.GetMediaFile(widgetService))
|
|
//
|
|
//server.POST(PREFIX+"/media/:mediaType/url/set", model.SetMediaUrl(widgetService))
|
|
|
|
}
|
|
|
|
func CreateTale(db model.Db) echo.HandlerFunc {
|
|
return func(request echo.Context) error {
|
|
ctx := context.Background()
|
|
|
|
err := db.CreateTable(ctx, sql.CreateTableQuery)
|
|
if err != nil {
|
|
slog.Error("db.CreateTable: ", err)
|
|
return err
|
|
}
|
|
|
|
slog.Info("Create table ok")
|
|
return request.String(200, "Create table ok")
|
|
}
|
|
}
|
|
|
|
func DropTale(db model.Db) echo.HandlerFunc {
|
|
return func(request echo.Context) error {
|
|
ctx := context.Background()
|
|
|
|
err := db.DropTable(ctx, sql.DropTableQuery)
|
|
if err != nil {
|
|
slog.Error("db.DropTable: ", err)
|
|
return err
|
|
}
|
|
|
|
slog.Info("Dropped table ok")
|
|
return request.String(200, "Dropped table ok")
|
|
}
|
|
}
|