diff options
| author | Kyren223 <Kyren223@proton.me> | 2024-12-01 16:03:31 +0200 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2024-12-01 16:03:31 +0200 |
| commit | e00a17a2f483fc00d5daecb3426c29a6c8598492 (patch) | |
| tree | ecfb4100072db4ea043ce6e64377a6f3c4d72c43 /internal/server/api/api.go | |
| parent | 3e9c0ee6a1e765d42d54acb71c10ae7e67353a17 (diff) | |
Added swap frequencies support on server-side
Diffstat (limited to 'internal/server/api/api.go')
| -rw-r--r-- | internal/server/api/api.go | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/internal/server/api/api.go b/internal/server/api/api.go index 533a9b0..74abd94 100644 --- a/internal/server/api/api.go +++ b/internal/server/api/api.go @@ -232,8 +232,6 @@ func GetNetworksInfo(ctx context.Context, sess *session.Session) (packet.Payload }, nil } -// FIXME: Deletion of a network is not handled! -// it needs to be shifted like how it works with frequencies! func SwapUserNetworks(ctx context.Context, sess *session.Session, request *packet.SwapUserNetworks) packet.Payload { queries := data.New(db) pos1, pos2 := int64(request.Pos1), int64(request.Pos2) @@ -259,8 +257,7 @@ func CreateFrequency(ctx context.Context, sess *session.Session, request *packet NetworkID: request.Network, }) if err == sql.ErrNoRows { - log.Println("Err", err) - return &packet.Error{Error: "user entry in network doesn't exist"} + return &packet.Error{Error: "either user or network don't exist"} } if err != nil { log.Println("database error 1:", err) @@ -306,3 +303,35 @@ func CreateFrequency(ctx context.Context, sess *session.Session, request *packet Set: false, } } + +func SwapFrequencies(ctx context.Context, sess *session.Session, request *packet.SwapFrequencies) packet.Payload { + queries := data.New(db) + + // Check if authorized + userNetwork, err := queries.GetUserNetwork(ctx, data.GetUserNetworkParams{ + UserID: sess.ID(), + NetworkID: request.Network, + }) + if err == sql.ErrNoRows { + return &packet.Error{Error: "either user or network don't exist"} + } + if err != nil { + log.Println("database error 1:", err) + return &ErrInternalError + } + if !userNetwork.IsAdmin || !userNetwork.IsMember || userNetwork.IsBanned { + return &ErrPermissionDenied + } + + err = queries.SwapFrequencies(ctx, data.SwapFrequenciesParams{ + Pos1: int64(request.Pos1), + Pos2: int64(request.Pos2), + NetworkID: request.Network, + }) + if err != nil { + log.Println("database error 2:", err) + return &ErrInternalError + } + + return request +} |
