add router for get filters
This commit is contained in:
parent
3a51c42061
commit
3a1cf6f778
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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))
|
||||
|
@ -254,6 +254,11 @@ const docTemplate = `{
|
||||
},
|
||||
"/filters-settings": {
|
||||
"get": {
|
||||
"security": [
|
||||
{
|
||||
"BearerAuth": []
|
||||
}
|
||||
],
|
||||
"description": "Get donat filters settings",
|
||||
"consumes": [
|
||||
"application/json"
|
||||
|
@ -247,6 +247,11 @@
|
||||
},
|
||||
"/filters-settings": {
|
||||
"get": {
|
||||
"security": [
|
||||
{
|
||||
"BearerAuth": []
|
||||
}
|
||||
],
|
||||
"description": "Get donat filters settings",
|
||||
"consumes": [
|
||||
"application/json"
|
||||
|
@ -468,6 +468,8 @@ paths:
|
||||
description: Validation error
|
||||
schema:
|
||||
$ref: '#/definitions/echo.HTTPError'
|
||||
security:
|
||||
- BearerAuth: []
|
||||
summary: Get donat filters settings
|
||||
tags:
|
||||
- Donate
|
||||
|
@ -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 {
|
||||
|
@ -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;`
|
||||
|
@ -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
|
||||
|
||||
}
|
||||
|
@ -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(
|
||||
|
Loading…
x
Reference in New Issue
Block a user