summaryrefslogtreecommitdiff
path: root/internal/server
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2024-11-29 23:24:06 +0200
committerKyren223 <Kyren223@proton.me>2024-11-29 23:24:06 +0200
commit3fa1c902c1049f56b30092cf6de28c4d358cf434 (patch)
treefb5de446cc6bd127cfe946d33c4812194e6f1f73 /internal/server
parent371e6c169cd39d9abe5b8d9023d4e5d0025e47a1 (diff)
Implemented network positions per user on client and server
Diffstat (limited to 'internal/server')
-rw-r--r--internal/server/api/api.go17
-rw-r--r--internal/server/server.go19
2 files changed, 32 insertions, 4 deletions
diff --git a/internal/server/api/api.go b/internal/server/api/api.go
index 53ef76a..ec3adf9 100644
--- a/internal/server/api/api.go
+++ b/internal/server/api/api.go
@@ -220,3 +220,20 @@ func GetNetworksInfo(ctx context.Context, sess *session.Session) (packet.Payload
return networksInfo, 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)
+ err := queries.SwapUserNetworks(ctx, data.SwapUserNetworksParams{
+ Pos1: &pos1,
+ Pos2: &pos2,
+ UserID: sess.ID(),
+ })
+ if err != nil {
+ log.Println("database error:", err)
+ return &internalError
+ }
+
+ return request
+}
diff --git a/internal/server/server.go b/internal/server/server.go
index 474be10..2ca0c2a 100644
--- a/internal/server/server.go
+++ b/internal/server/server.go
@@ -311,16 +311,27 @@ func processRequest(ctx context.Context, sess *session.Session, request packet.P
// TODO: add a way to measure the time each request/response took and log it
// Potentially even separate time for code vs DB operations
+ var response packet.Payload
switch request := request.(type) {
case *packet.CreateNetwork:
- return timeout(20*time.Millisecond, api.CreateNetwork, ctx, sess, request)
+ response = timeout(20*time.Millisecond, api.CreateNetwork, ctx, sess, request)
+ case *packet.SwapUserNetworks:
+ response = timeout(5*time.Millisecond, api.SwapUserNetworks, ctx, sess, request)
+
case *packet.SendMessage:
- return timeout(20*time.Millisecond, api.SendMessage, ctx, sess, request)
+ response = timeout(20*time.Millisecond, api.SendMessage, ctx, sess, request)
case *packet.RequestMessages:
- return timeout(50*time.Millisecond, api.RequestMessages, ctx, sess, request)
+ response = timeout(50*time.Millisecond, api.RequestMessages, ctx, sess, request)
+
default:
- return &packet.Error{Error: "use of disallowed packet type for request"}
+ response = &packet.Error{Error: "use of disallowed packet type for request"}
}
+
+ if response, ok := response.(*packet.Error); ok {
+ response.PktType = request.Type()
+ }
+
+ return response
}
func timeout[T packet.Payload](