Add all to subscriber deletion by query which broke with query validation. Ref: #2122.

This commit is contained in:
Kailash Nadh 2024-12-04 22:07:54 +05:30
parent a1291114d9
commit 7bfbd6a856
3 changed files with 12 additions and 5 deletions

View file

@ -30,6 +30,7 @@ type subQueryReq struct {
Action string `json:"action"` Action string `json:"action"`
Status string `json:"status"` Status string `json:"status"`
SubscriptionStatus string `json:"subscription_status"` SubscriptionStatus string `json:"subscription_status"`
All bool `json:"all"`
} }
// subProfileData represents a subscriber's collated data in JSON // subProfileData represents a subscriber's collated data in JSON
@ -439,7 +440,9 @@ func handleDeleteSubscribersByQuery(c echo.Context) error {
return err return err
} }
if req.Query == "" { if req.All {
req.Query = ""
} else if req.Query == "" {
return echo.NewHTTPError(http.StatusBadRequest, app.i18n.Ts("globals.messages.invalidFields", "name", "query")) return echo.NewHTTPError(http.StatusBadRequest, app.i18n.Ts("globals.messages.invalidFields", "name", "query"))
} }

View file

@ -604,10 +604,11 @@ Delete subscribers based on SQL expression.
##### Parameters ##### Parameters
| Name | Type | Required | Description | | Name | Type | Required | Description |
|:---------|:---------|:---------|:--------------------------------------------| |:---------|:---------|:---------|:-------------------------------------------------------------------|
| query | string | Yes | SQL expression to filter subscribers with. | | query | string | No | SQL expression to filter subscribers with. |
| list_ids | []number | No | Optional list IDs to limit the filtering to.| | list_ids | []number | No | Optional list IDs to limit the filtering to. |
| all | bool | No | When set to `true`, ignores any query and deletes all subscribers. |
##### Example Request ##### Example Request

View file

@ -423,6 +423,9 @@ export default Vue.extend({
// 'All' is selected, delete by query. // 'All' is selected, delete by query.
fn = () => { fn = () => {
this.$api.deleteSubscribersByQuery({ this.$api.deleteSubscribersByQuery({
// If the query expression is empty, explicitly pass `all=true`
// so that the backend deletes all records in the DB with an empty query string.
all: this.queryParams.queryExp.trim() === '',
query: this.queryParams.queryExp, query: this.queryParams.queryExp,
list_ids: this.queryParams.listID ? [this.queryParams.listID] : null, list_ids: this.queryParams.listID ? [this.queryParams.listID] : null,
subscription_status: this.queryParams.subStatus, subscription_status: this.queryParams.subStatus,