diff options
| author | bt <bt@rctt.net> | 2026-06-04 17:13:39 +0200 |
|---|---|---|
| committer | bt <bt@rctt.net> | 2026-06-04 17:13:39 +0200 |
| commit | 6628f924ba4aefa8f8361ebc252fb225718359c2 (patch) | |
| tree | f1337371a66546c5d87908b5fac682ff6b1b92f2 /server | |
| parent | ed2621c17f353878ea86ce2c16cac7cd04fb4c6a (diff) | |
| download | solec-0.6.0.tar.gz solec-0.6.0.zip | |
[common] Add channels list queryv0.6.0
Diffstat (limited to 'server')
| -rw-r--r-- | server/storage.go | 6 | ||||
| -rw-r--r-- | server/user.go | 22 |
2 files changed, 26 insertions, 2 deletions
diff --git a/server/storage.go b/server/storage.go index 99402c8..bffb783 100644 --- a/server/storage.go +++ b/server/storage.go @@ -8,8 +8,8 @@ import ( type Storage interface { AddMessage(msg core.Message) (err error) - GetHistory(target string, since time.Time, num, offset int) (history []core.Message, err error) - GetHistoryUser(user1, user2 string, since time.Time, num, offset int) (history []core.Message, err error) + GetHistory(target string, since time.Time, count, offset int) (history []core.Message, err error) + GetHistoryUser(user1, user2 string, since time.Time, count, offset int) (history []core.Message, err error) SetUser(user core.UserData) error DelUser(name string) error @@ -17,5 +17,7 @@ type Storage interface { SetPermission(data core.PermissionData) error GetPermission(user, channel string) (core.PermissionData, error) + GetChannelUsers(channel string) ([]string, error) + GetUserChannels(user string, count, offset int) ([]string, error) } diff --git a/server/user.go b/server/user.go index 69b7ced..5e29c8d 100644 --- a/server/user.go +++ b/server/user.go @@ -126,6 +126,8 @@ func (s *Server) handleUserPayload(user *User, sender net.Conn, payload any) err return s.handleUsermode(user, sender, v) case core.History: return s.handleHistory(user, sender, v) + case core.List: + return s.handleList(user, sender, v) default: return core.ErrUnexpectedPayloadType } @@ -206,3 +208,23 @@ func (s *Server) handleHistory(user *User, conn net.Conn, hist core.History) err return nil } + +func (s *Server) handleList(user *User, conn net.Conn, list core.List) error { + channels, err := s.Storage.GetUserChannels(user.Addr, int(list.Count), int(list.Offset)) + if err != nil { + return fmt.Errorf("cannot get user channels list: %v", err) + } + + for _, c := range channels { + li := core.ListItem{c} + data, err := core.Encode(li) + if err != nil { + return err + } + if _, err := conn.Write(data); err != nil { + return err + } + } + + return nil +} |
