diff options
Diffstat (limited to 'internal/server')
| -rw-r--r-- | internal/server/api/api.go | 46 | ||||
| -rw-r--r-- | internal/server/server.go | 8 |
2 files changed, 53 insertions, 1 deletions
diff --git a/internal/server/api/api.go b/internal/server/api/api.go index 50176b6..c67f906 100644 --- a/internal/server/api/api.go +++ b/internal/server/api/api.go @@ -102,6 +102,7 @@ func CreateNetwork(ctx context.Context, sess *session.Session, request *packet.C log.Println("database error:", err) return &internalError } + defer tx.Rollback() //nolint queries := data.New(db) qtx := queries.WithTx(tx) @@ -161,7 +162,7 @@ func CreateNetwork(ctx context.Context, sess *session.Session, request *packet.C fullNetwork := packet.FullNetwork{ Network: network, Frequencies: []data.Frequency{frequency}, - Members: []packet.Member{{ + Members: []data.GetNetworkMembersRow{{ JoinedAt: networkUser.JoinedAt, User: user, IsAdmin: networkUser.IsAdmin, @@ -172,3 +173,46 @@ func CreateNetwork(ctx context.Context, sess *session.Session, request *packet.C Networks: []packet.FullNetwork{fullNetwork}, } } + +func GetNetworksInfo(ctx context.Context, sess *session.Session) (packet.Payload, error) { + networksInfo := &packet.NetworksInfo{} + + tx, err := db.BeginTx(ctx, nil) + if err != nil { + return nil, err + } + defer tx.Rollback() //nolint + + queries := data.New(db) + qtx := queries.WithTx(tx) + + networks, err := qtx.GetUserNetworks(ctx, sess.ID()) + if err != nil { + return nil, err + } + + for _, network := range networks { + frequencies, err := qtx.GetNetworkFrequencies(ctx, network.ID) + if err != nil { + return nil, err + } + + members, err := qtx.GetNetworkMembers(ctx, network.ID) + if err != nil { + return nil, err + } + + networksInfo.Networks = append(networksInfo.Networks, packet.FullNetwork{ + Network: network, + Frequencies: frequencies, + Members: members, + }) + } + + err = tx.Commit() + if err != nil { + return nil, err + } + + return networksInfo, nil +} diff --git a/internal/server/server.go b/internal/server/server.go index db3cb6b..474be10 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -221,6 +221,14 @@ func (server *server) handleConnection(conn net.Conn) { } }() + // Send initial packets + payload, err := api.GetNetworksInfo(server.ctx, sess) + if err != nil { + return // closes the connection + } + infoPacket := packet.NewPacket(packet.NewMsgPackEncoder(payload)) + sess.Write(server.ctx, infoPacket) + buffer := make([]byte, 512) for { n, err := conn.Read(buffer) |
