summaryrefslogtreecommitdiff
path: root/internal/server/api
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2024-11-27 11:14:36 +0200
committerKyren223 <Kyren223@proton.me>2024-11-27 11:14:36 +0200
commite415a13211316cb804752c18833a10057bc0994c (patch)
tree62a0dfe214d333470a6bb8242037dcbd2184f381 /internal/server/api
parentf5576211d38cf8923a0e5c20ccb0677317c63ebe (diff)
Reimplemented existing server APIs
Diffstat (limited to 'internal/server/api')
-rw-r--r--internal/server/api/api.go42
1 files changed, 18 insertions, 24 deletions
diff --git a/internal/server/api/api.go b/internal/server/api/api.go
index f60e0ec..6c8d51a 100644
--- a/internal/server/api/api.go
+++ b/internal/server/api/api.go
@@ -11,14 +11,10 @@ import (
"github.com/kyren223/eko/internal/data"
"github.com/kyren223/eko/internal/packet"
"github.com/kyren223/eko/internal/server/session"
- "github.com/kyren223/eko/pkg/assert"
"github.com/kyren223/eko/pkg/snowflake"
)
-func SendMessage(ctx context.Context, request *packet.SendMessage) packet.Payload {
- sess, ok := session.FromContext(ctx)
- assert.Assert(ok, "context in process packet should always have a session")
-
+func SendMessage(ctx context.Context, sess *session.Session, request *packet.SendMessage) packet.Payload {
if (request.ReceiverID != nil) == (request.FrequencyID != nil) {
return &packet.Error{Error: "either receiver id or frequency id must exist"}
}
@@ -28,27 +24,38 @@ func SendMessage(ctx context.Context, request *packet.SendMessage) packet.Payloa
return &packet.Error{Error: "message content must not be blank"}
}
- node := sess.Manager().Node()
-
queries := data.New(db)
message, err := queries.CreateMessage(ctx, data.CreateMessageParams{
- ID: node.Generate(),
+ ID: sess.Manager().Node().Generate(),
SenderID: sess.ID(),
Content: content,
FrequencyID: request.FrequencyID,
ReceiverID: request.ReceiverID,
})
if err != nil {
- log.Println(sess.Addr(), "SendMessage database error:", err)
+ log.Println(sess.Addr(), "database error:", err, "in SendMessage")
return &packet.Error{Error: "internal server error"}
}
return &packet.MessagesInfo{Messages: []data.Message{message}}
}
-func GetMessages(ctx context.Context, request *packet.RequestMessages) packet.Payload {
+func RequestMessages(ctx context.Context, sess *session.Session, request *packet.RequestMessages) packet.Payload {
queries := data.New(db)
- messages, err := queries.GetFrequencyMessages(ctx, request.FrequencyID)
+ var messages []data.Message
+ var err error
+
+ if request.FrequencyID != nil && request.ReceiverID == nil {
+ messages, err = queries.GetFrequencyMessages(ctx, request.FrequencyID)
+ } else if request.ReceiverID != nil && request.FrequencyID == nil {
+ messages, err = queries.GetDirectMessages(ctx, data.GetDirectMessagesParams{
+ User1: sess.ID(),
+ User2: request.ReceiverID,
+ })
+ } else {
+ return &packet.Error{Error: "either receiver id or frequency id must exist"}
+ }
+
if err != nil {
log.Println("database error when retrieving messages:", err)
return &packet.Error{Error: "internal server error"}
@@ -56,19 +63,6 @@ func GetMessages(ctx context.Context, request *packet.RequestMessages) packet.Pa
return &packet.MessagesInfo{Messages: messages}
}
-// func GetUserById(ctx context.Context, request *packet.GetUserByID) packet.Payload {
-// queries := data.New(db)
-// user, err := queries.GetUserById(ctx, request.UserID)
-// if err == sql.ErrNoRows {
-// return &packet.Users{Users: []data.User{}}
-// }
-// if err != nil {
-// log.Println("database error when retrieving user by id:", err)
-// return &packet.ErrorMessage{Error: "internal server error"}
-// }
-// return &packet.Users{Users: []data.User{user}}
-// }
-
func CreateOrGetUser(ctx context.Context, node *snowflake.Node, pubKey ed25519.PublicKey) (data.User, error) {
queries := data.New(db)
user, err := queries.GetUserByPublicKey(ctx, pubKey)