summaryrefslogtreecommitdiff
path: root/internal/server/api/api.go
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2024-11-02 13:14:03 +0200
committerKyren223 <Kyren223@proton.me>2024-11-02 13:18:21 +0200
commitc5064f6bbd06596ba1eb002904b9572427d71fc6 (patch)
treeed747581c2eb99758f6b66981c328f96caa7c652 /internal/server/api/api.go
parent7ad5f5aa60cc940dbd4c6ec6cb091e7214a3fdb4 (diff)
feat: client and server api changes to accomedate DB
Diffstat (limited to 'internal/server/api/api.go')
-rw-r--r--internal/server/api/api.go35
1 files changed, 20 insertions, 15 deletions
diff --git a/internal/server/api/api.go b/internal/server/api/api.go
index cf072f3..8f9e6c6 100644
--- a/internal/server/api/api.go
+++ b/internal/server/api/api.go
@@ -2,6 +2,7 @@ package api
import (
"context"
+ "log"
"strings"
"github.com/kyren223/eko/internal/data"
@@ -14,28 +15,32 @@ func SendMessage(ctx context.Context, request *packet.SendMessage) packet.Payloa
sess, ok := session.FromContext(ctx)
assert.Assert(ok, "context in process packet should always have a session")
+ if (request.ReceiverID != nil) != (request.FrequencyID != nil) {
+ return &packet.ErrorMessage{Error: "either receiver id or frequency id must exist"}
+ }
+
content := strings.TrimSpace(request.Content)
if content == "" {
return &packet.ErrorMessage{Error: "message content must not be blank"}
}
node := sess.Manager().Node()
- message := data.Message{
- Id: node.Generate(),
- SenderId: sess.ID(),
- FrequencyId: node.Generate(), // TODO: replace with actual ID
- NetworkId: node.Generate(), // TODO: replace with actual ID
- Contents: content,
- }
- messages = append(messages, message)
-
- // TODO: broadcast message
- payload := &packet.Messages{Messages: messages}
- pkt := packet.NewPacket(packet.NewMsgPackEncoder(payload))
- sess.WriteQueue <- pkt
+ queries := data.New(db)
+ message, err := queries.CreateMessage(ctx, data.CreateMessageParams{
+ ID: node.Generate(),
+ SenderID: sess.ID(),
+ Content: content,
+ FrequencyID: request.FrequencyID,
+ ReceiverID: request.ReceiverID,
+ })
+ if err != nil {
+ log.Println(sess.Addr(), "SendMessage database error:", err)
+ return &packet.ErrorMessage{Error: "internal server error"}
+ }
- return packet.NewOkMessage()
+ return &packet.Messages{Messages: []data.Message{message}}
}
-var messages []data.Message
+func GetMessages(ctx context.Context, request *packet.GetMessagesRange) packet.Payload {
+}