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
// @Accept json
// @Produce json
// @Security BearerAuth
// @Success 200 {object} model.FilterSettingResponse "Current filters settings"
// @Failure 400 {object} echo.HTTPError "Bad request"
// @Failure 401 {object} echo.HTTPError "Unauthorized or expired token"
// @Failure 422 {object} echo.HTTPError "Validation error"
// @Router /filters-settings [get]
func GetFiltersSettings(donatService model.DonatService) echo.HandlerFunc {
return func(c echo.Context) error {
return nil
return func(request echo.Context) error {
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.PATCH(PREFIX+"/voice-settings", UpdateVoiceSettings(donatService))
server.GET(PREFIX+"/filters-settings", GetFiltersSettings(donatService))
server.GET(PREFIX+"/donat/get/:streamerID", GetDonat(donatService))
server.POST(PREFIX+"/donat/view/:donatID", MarkDonatView(donatService))

View File

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

View File

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

View File

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

View File

@ -93,7 +93,7 @@ type DonatService interface {
GetVoiceSettings(ctx context.Context, streamerID int) (VoiceSettingsResponse, 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
GetModerationSettings(ctx context.Context, streamerID StreamerID) (ModerationResponse, error)
@ -128,6 +128,9 @@ type DonatRepo interface {
InsertLanguagesForVoiceSetting(ctx context.Context, voiceSettingID int, languageIDs []int) error
GetLanguageIDsByISOCodes(ctx context.Context, isoCodes []string) ([]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 {

View File

@ -268,7 +268,7 @@ var VoiceIDByStreamer = `
`
const UpdateVoiceSettings = `
var UpdateVoiceSettings = `
UPDATE voice_settings
SET
enable = COALESCE(@enable, enable),
@ -278,3 +278,10 @@ SET
min_price = COALESCE(@min_price, min_price)
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
}
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(
ctx context.Context,
streamerID model.StreamerID,
streamerID int,
) (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(