diff options
Diffstat (limited to 'internal/server')
| -rw-r--r-- | internal/server/api/api.go | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/internal/server/api/api.go b/internal/server/api/api.go index 479da95..75d7d02 100644 --- a/internal/server/api/api.go +++ b/internal/server/api/api.go @@ -331,6 +331,7 @@ func SwapFrequencies(ctx context.Context, sess *session.Session, request *packet func DeleteFrequency(ctx context.Context, sess *session.Session, request *packet.DeleteFrequency) packet.Payload { queries := data.New(db) + // Existence frequency, err := queries.GetFrequencyById(ctx, request.Frequency) if err == sql.ErrNoRows { return &packet.Error{Error: "frequency doesn't exist"} @@ -340,6 +341,7 @@ func DeleteFrequency(ctx context.Context, sess *session.Session, request *packet return &ErrInternalError } + // Authentication isAdmin, err := IsNetworkAdmin(ctx, queries, sess.ID(), frequency.NetworkID) if err == sql.ErrNoRows { return &packet.Error{Error: "either user or network don't exist"} @@ -352,11 +354,21 @@ func DeleteFrequency(ctx context.Context, sess *session.Session, request *packet return &ErrPermissionDenied } - err = queries.DeleteFrequency(ctx, frequency.ID) + // At least one frequency exists + frequencies, err := queries.GetNetworkFrequencies(frequency.NetworkID) if err != nil { log.Println("database error 3:", err) return &ErrInternalError } + if len(frequencies) == 1 { + return &packet.Error{Error: "at least 1 frequency must exist at all times"} + } + + err = queries.DeleteFrequency(ctx, frequency.ID) + if err != nil { + log.Println("database error 4:", err) + return &ErrInternalError + } return &packet.FrequenciesInfo{ RemoveFrequencies: []snowflake.ID{frequency.ID}, |
