add router for get filters

This commit is contained in:
harold 2025-03-09 00:22:52 +05:00
parent 3a51c42061
commit 3a1cf6f778
9 changed files with 111 additions and 6 deletions

View File

@ -320,14 +320,27 @@ func UpdateVoiceSettings(donatService model.DonatService) echo.HandlerFunc {
// @Tags Donate // @Tags Donate
// @Accept json // @Accept json
// @Produce json // @Produce json
// @Security BearerAuth
// @Success 200 {object} model.FilterSettingResponse "Current filters settings" // @Success 200 {object} model.FilterSettingResponse "Current filters settings"
// @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 /filters-settings [get] // @Router /filters-settings [get]
func GetFiltersSettings(donatService model.DonatService) echo.HandlerFunc { func GetFiltersSettings(donatService model.DonatService) echo.HandlerFunc {
return func(c echo.Context) error { return func(request echo.Context) error {
return nil ctx := context.Background()
authData, err := donatService.CheckToken(request)
if err != nil {
slog.Error("Unauthorized")
return echo.NewHTTPError(http.StatusUnauthorized, err.Error())
}
filtersSettings, err := donatService.GetFiltersSettings(ctx, authData.AccountID)
if err != nil {
slog.Error("Failed to get filters settings", "error", err)
return echo.NewHTTPError(http.StatusInternalServerError, "Internal server error")
}
return request.JSON(http.StatusOK, filtersSettings)
} }
} }

View File

@ -78,6 +78,8 @@ func IncludeDonatHandlers(
server.GET(PREFIX+"/voice-settings", GetVoiceSettings(donatService)) server.GET(PREFIX+"/voice-settings", GetVoiceSettings(donatService))
server.PATCH(PREFIX+"/voice-settings", UpdateVoiceSettings(donatService)) server.PATCH(PREFIX+"/voice-settings", UpdateVoiceSettings(donatService))
server.GET(PREFIX+"/filters-settings", GetFiltersSettings(donatService))
server.GET(PREFIX+"/donat/get/:streamerID", GetDonat(donatService)) server.GET(PREFIX+"/donat/get/:streamerID", GetDonat(donatService))
server.POST(PREFIX+"/donat/view/:donatID", MarkDonatView(donatService)) server.POST(PREFIX+"/donat/view/:donatID", MarkDonatView(donatService))

View File

@ -254,6 +254,11 @@ const docTemplate = `{
}, },
"/filters-settings": { "/filters-settings": {
"get": { "get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get donat filters settings", "description": "Get donat filters settings",
"consumes": [ "consumes": [
"application/json" "application/json"

View File

@ -247,6 +247,11 @@
}, },
"/filters-settings": { "/filters-settings": {
"get": { "get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get donat filters settings", "description": "Get donat filters settings",
"consumes": [ "consumes": [
"application/json" "application/json"

View File

@ -468,6 +468,8 @@ paths:
description: Validation error description: Validation error
schema: schema:
$ref: '#/definitions/echo.HTTPError' $ref: '#/definitions/echo.HTTPError'
security:
- BearerAuth: []
summary: Get donat filters settings summary: Get donat filters settings
tags: tags:
- Donate - Donate

View File

@ -93,7 +93,7 @@ type DonatService interface {
GetVoiceSettings(ctx context.Context, streamerID int) (VoiceSettingsResponse, error) GetVoiceSettings(ctx context.Context, streamerID int) (VoiceSettingsResponse, error)
UpdateVoiceSettings(ctx context.Context, streamerID int, updateModel UpdateVoiceSettings) error UpdateVoiceSettings(ctx context.Context, streamerID int, updateModel UpdateVoiceSettings) error
GetFiltersSettings(ctx context.Context, streamerID StreamerID) (FilterSettingResponse, error) GetFiltersSettings(ctx context.Context, streamerID int) (FilterSettingResponse, error)
UpdateFiltersSettings(ctx context.Context, streamerID StreamerID, updateModel UpdateFilterSettings) error UpdateFiltersSettings(ctx context.Context, streamerID StreamerID, updateModel UpdateFilterSettings) error
GetModerationSettings(ctx context.Context, streamerID StreamerID) (ModerationResponse, error) GetModerationSettings(ctx context.Context, streamerID StreamerID) (ModerationResponse, error)
@ -128,6 +128,9 @@ type DonatRepo interface {
InsertLanguagesForVoiceSetting(ctx context.Context, voiceSettingID int, languageIDs []int) error InsertLanguagesForVoiceSetting(ctx context.Context, voiceSettingID int, languageIDs []int) error
GetLanguageIDsByISOCodes(ctx context.Context, isoCodes []string) ([]int, error) GetLanguageIDsByISOCodes(ctx context.Context, isoCodes []string) ([]int, error)
GetVoiceSettingIDByStreamerID(ctx context.Context, streamerID int) (int, error) GetVoiceSettingIDByStreamerID(ctx context.Context, streamerID int) (int, error)
GetFilterSettingsByStreamerID(ctx context.Context, streamerID int) (int, bool, error)
GetFilteredWords(ctx context.Context, streamerID int) ([]string, error)
} }
type TargetService interface { type TargetService interface {

View File

@ -268,7 +268,7 @@ var VoiceIDByStreamer = `
` `
const UpdateVoiceSettings = ` var UpdateVoiceSettings = `
UPDATE voice_settings UPDATE voice_settings
SET SET
enable = COALESCE(@enable, enable), enable = COALESCE(@enable, enable),
@ -278,3 +278,10 @@ SET
min_price = COALESCE(@min_price, min_price) min_price = COALESCE(@min_price, min_price)
WHERE streamer_id = @streamer_id; WHERE streamer_id = @streamer_id;
` `
var GetFilterSettings = `
SELECT id, enable_links FROM filters WHERE streamer_id = @streamer_id;
`
var GetFilterWords = `
SELECT word FROM filters_words WHERE donat_filter_id = @donat_filter_id;`

View File

@ -418,3 +418,52 @@ func (repoDonat *RepoDonat) UpdateVoiceSettings(
return nil return nil
} }
func (repoDonat *RepoDonat) GetFilterSettingsByStreamerID(
ctx context.Context,
streamerID int,
) (int, bool, error) {
args := pgx.NamedArgs{
"streamer_id": streamerID,
}
row, err := repoDonat.db.SelectOne(ctx, sql.GetFilterSettings, args)
if err != nil {
slog.Error("Failed to get filter settings", "error", err)
return 0, false, err
}
var filterSettingID int
var enableLinks bool
err = row.Scan(&filterSettingID, &enableLinks)
if err != nil {
slog.Error("Failed to scan filter settings", "error", err)
return 0, false, err
}
return filterSettingID, enableLinks, nil
}
func (repoDonat *RepoDonat) GetFilteredWords(
ctx context.Context,
filterId int,
) ([]string, error) {
args := pgx.NamedArgs{
"donat_filter_id": filterId,
}
rows, err := repoDonat.db.Select(ctx, sql.GetFilterSettings, args)
if err != nil {
slog.Error("Failed to get filter settings", "error", err)
return nil, err
}
var filterWords []string
err = pgxscan.ScanAll(&filterWords, rows)
if err != nil {
slog.Error("Failed to scan filter settings", "error", err)
return nil, err
}
return filterWords, nil
}

View File

@ -352,9 +352,28 @@ func (donatService *ServiceDonat) UpdateVoiceSettings(
func (donatService *ServiceDonat) GetFiltersSettings( func (donatService *ServiceDonat) GetFiltersSettings(
ctx context.Context, ctx context.Context,
streamerID model.StreamerID, streamerID int,
) (model.FilterSettingResponse, error) { ) (model.FilterSettingResponse, error) {
return model.FilterSettingResponse{}, nil filterSettingID, enableLinks, err := donatService.donatRepo.GetFilterSettingsByStreamerID(ctx, streamerID)
if err != nil {
slog.Error("Failed to get filter settings", "error", err)
return model.FilterSettingResponse{}, err
}
filteredWords, err := donatService.donatRepo.GetFilteredWords(ctx, filterSettingID)
if err != nil {
slog.Error("Failed to get filtered words", "error", err)
return model.FilterSettingResponse{}, err
}
if filteredWords == nil {
filteredWords = []string{}
}
response := model.FilterSettingResponse{
EnableLinks: enableLinks,
FilteredWords: filteredWords,
}
return response, nil
} }
func (donatService *ServiceDonat) UpdateFiltersSettings( func (donatService *ServiceDonat) UpdateFiltersSettings(