From 567d569dd649cc0b82d6f8890e2bd77b052ebed6 Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Sun, 1 Dec 2024 16:29:22 +0200 Subject: Added delete for frequency and network on the server and only frequency on the client --- internal/server/api/api.go | 68 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) (limited to 'internal/server/api/api.go') diff --git a/internal/server/api/api.go b/internal/server/api/api.go index b1cc58d..479da95 100644 --- a/internal/server/api/api.go +++ b/internal/server/api/api.go @@ -327,3 +327,71 @@ func SwapFrequencies(ctx context.Context, sess *session.Session, request *packet return request } + +func DeleteFrequency(ctx context.Context, sess *session.Session, request *packet.DeleteFrequency) packet.Payload { + queries := data.New(db) + + frequency, err := queries.GetFrequencyById(ctx, request.Frequency) + if err == sql.ErrNoRows { + return &packet.Error{Error: "frequency doesn't exist"} + } + if err != nil { + log.Println("database error 1:", err) + return &ErrInternalError + } + + isAdmin, err := IsNetworkAdmin(ctx, queries, sess.ID(), frequency.NetworkID) + if err == sql.ErrNoRows { + return &packet.Error{Error: "either user or network don't exist"} + } + if err != nil { + log.Println("database error 2:", err) + return &ErrInternalError + } + if !isAdmin { + return &ErrPermissionDenied + } + + err = queries.DeleteFrequency(ctx, frequency.ID) + if err != nil { + log.Println("database error 3:", err) + return &ErrInternalError + } + + return &packet.FrequenciesInfo{ + RemoveFrequencies: []snowflake.ID{frequency.ID}, + Frequencies: nil, + Network: frequency.NetworkID, + Set: false, + } +} + +func DeleteNetwork(ctx context.Context, sess *session.Session, request *packet.DeleteNetwork) packet.Payload { + queries := data.New(db) + + network, err := queries.GetNetworkById(ctx, request.Network) + if err == sql.ErrNoRows { + return &packet.Error{Error: "network doesn't exist"} + } + if err != nil { + log.Println("database error 1:", err) + return &ErrInternalError + } + + // NOTE: important check, make sure they are the owner (authorized) + if network.OwnerID != sess.ID() { + return &ErrPermissionDenied + } + + err = queries.DeleteNetwork(ctx, request.Network) + if err != nil { + log.Println("database error 2:", err) + return &ErrInternalError + } + + return &packet.NetworksInfo{ + Networks: nil, + RemoveNetworks: []snowflake.ID{request.Network}, + Set: false, + } +} -- cgit v1.3.1