add update moderation router logic and some fixes

This commit is contained in:
harold 2025-03-09 01:23:37 +05:00
parent 0586252a25
commit 7d421c24ab
8 changed files with 83 additions and 17 deletions

View File

@ -421,13 +421,34 @@ func GetModerationSettings(donatService model.DonatService) echo.HandlerFunc {
// @Accept json // @Accept json
// @Produce json // @Produce json
// @Security BearerAuth // @Security BearerAuth
// @Success 200 {object} model.UpdateModeration "Update moderation settings" // @Param request body model.UpdateModeration true "Update fields"
// @Success 200 {string} string "Moderation settings updated successfully"
// @Failure 400 {object} echo.HTTPError "Bad request" // @Failure 400 {object} echo.HTTPError "Bad request"
// @Failure 401 {object} echo.HTTPError "Unauthorized or expired token" // @Failure 401 {object} echo.HTTPError "Unauthorized or expired token"
// @Failure 422 {object} echo.HTTPError "Validation error" // @Failure 422 {object} echo.HTTPError "Validation error"
// @Router /moderation-settings [patch] // @Router /moderation-settings [patch]
func UpdateModerationSettings(donatService model.DonatService) echo.HandlerFunc { func UpdateModerationSettings(donatService model.DonatService) echo.HandlerFunc {
return func(c echo.Context) error { return func(request echo.Context) error {
return nil ctx := context.Background()
var body model.UpdateModeration
err := validator.ParseAndValidate(&body, request)
if err != nil {
slog.Error(err.Error())
return echo.NewHTTPError(http.StatusUnprocessableEntity, "Unprocessable Entity")
}
authData, err := donatService.CheckToken(request)
if err != nil {
slog.Error("Unauthorized")
return echo.NewHTTPError(http.StatusUnauthorized, err.Error())
}
donatService.UpdateModerationSettings(
ctx,
authData.AccountID,
body,
)
return request.JSON(http.StatusOK, "Success update")
} }
} }

View File

@ -461,12 +461,23 @@ const docTemplate = `{
"Donate" "Donate"
], ],
"summary": "Update donat moderation settings", "summary": "Update donat moderation settings",
"responses": { "parameters": [
"200": { {
"description": "Update moderation settings", "description": "Update fields",
"name": "request",
"in": "body",
"required": true,
"schema": { "schema": {
"$ref": "#/definitions/donat-widget_internal_model.UpdateModeration" "$ref": "#/definitions/donat-widget_internal_model.UpdateModeration"
} }
}
],
"responses": {
"200": {
"description": "Moderation settings updated successfully",
"schema": {
"type": "string"
}
}, },
"400": { "400": {
"description": "Bad request", "description": "Bad request",

View File

@ -454,12 +454,23 @@
"Donate" "Donate"
], ],
"summary": "Update donat moderation settings", "summary": "Update donat moderation settings",
"responses": { "parameters": [
"200": { {
"description": "Update moderation settings", "description": "Update fields",
"name": "request",
"in": "body",
"required": true,
"schema": { "schema": {
"$ref": "#/definitions/donat-widget_internal_model.UpdateModeration" "$ref": "#/definitions/donat-widget_internal_model.UpdateModeration"
} }
}
],
"responses": {
"200": {
"description": "Moderation settings updated successfully",
"schema": {
"type": "string"
}
}, },
"400": { "400": {
"description": "Bad request", "description": "Bad request",

View File

@ -570,13 +570,20 @@ paths:
consumes: consumes:
- application/json - application/json
description: Update donat moderation settings description: Update donat moderation settings
parameters:
- description: Update fields
in: body
name: request
required: true
schema:
$ref: '#/definitions/donat-widget_internal_model.UpdateModeration'
produces: produces:
- application/json - application/json
responses: responses:
"200": "200":
description: Update moderation settings description: Moderation settings updated successfully
schema: schema:
$ref: '#/definitions/donat-widget_internal_model.UpdateModeration' type: string
"400": "400":
description: Bad request description: Bad request
schema: schema:

View File

@ -97,7 +97,7 @@ type DonatService interface {
UpdateFiltersSettings(ctx context.Context, streamerID int, updateModel UpdateFilterSettings) error UpdateFiltersSettings(ctx context.Context, streamerID int, updateModel UpdateFilterSettings) error
GetModerationSettings(ctx context.Context, streamerID int) (ModerationResponse, error) GetModerationSettings(ctx context.Context, streamerID int) (ModerationResponse, error)
UpdateModerationSettings(ctx context.Context, streamerID StreamerID, updateModel UpdateModeration) error UpdateModerationSettings(ctx context.Context, streamerID int, updateModel UpdateModeration) error
} }
type DonatRepo interface { type DonatRepo interface {
@ -137,6 +137,7 @@ type DonatRepo interface {
GetFilterIDByStreamer(ctx context.Context, streamerID int) (int, error) GetFilterIDByStreamer(ctx context.Context, streamerID int) (int, error)
GetModeration(ctx context.Context, streamerID int) (ModerationResponse, error) GetModeration(ctx context.Context, streamerID int) (ModerationResponse, error)
UpdateModeration(ctx context.Context, streamerID int, enable *bool, duration *int) error
} }
type TargetService interface { type TargetService interface {

View File

@ -224,8 +224,8 @@ type ModerationResponse struct {
} }
type UpdateModeration struct { type UpdateModeration struct {
Enable bool `json:"enable"` Enable *bool `json:"enable"`
Duration int `json:"duration"` Duration *int `json:"duration"`
} }
type CreateWidgetResponse struct { type CreateWidgetResponse struct {

View File

@ -303,7 +303,11 @@ WHERE donat_filter_id = @donat_filter_id AND word = ANY(@words);
` `
var UpdateModeration = ` var UpdateModeration = `
UPDATE moderation SET (enable, duration) VALUES (@enable, duration) WHERE streamer_id = @streamer_id;` UPDATE moderation
SET
enable = COALESCE(@enable, enable),
duration = COALESCE(@duration, duration)
WHERE streamer_id = @streamer_id;
`
var GetModeration = ` var GetModeration = `
SELECT enable, duration FROM moderation WHERE streamer_id = @streamer_id;` SELECT enable, duration FROM moderation WHERE streamer_id = @streamer_id;`

View File

@ -432,8 +432,19 @@ func (donatService *ServiceDonat) GetModerationSettings(
func (donatService *ServiceDonat) UpdateModerationSettings( func (donatService *ServiceDonat) UpdateModerationSettings(
ctx context.Context, ctx context.Context,
streamerID model.StreamerID, streamerID int,
updateModel model.UpdateModeration, updateModel model.UpdateModeration,
) error { ) error {
err := donatService.donatRepo.UpdateModeration(
ctx,
streamerID,
updateModel.Enable,
updateModel.Duration,
)
if err != nil {
slog.Error("Failed to update moderation settings", "error", err)
return err
}
return nil return nil
} }