Send irc features to the client
This commit is contained in:
parent
9267c661dc
commit
613d9fca6e
20 changed files with 690 additions and 304 deletions
|
@ -109,6 +109,26 @@ func (s *BoltStore) DeleteUser(user *storage.User) error {
|
|||
})
|
||||
}
|
||||
|
||||
func (s *BoltStore) GetServer(user *storage.User, address string) (*storage.Server, error) {
|
||||
var server *storage.Server
|
||||
|
||||
err := s.db.View(func(tx *bolt.Tx) error {
|
||||
b := tx.Bucket(bucketServers)
|
||||
id := serverID(user, address)
|
||||
|
||||
v := b.Get(id)
|
||||
if v == nil {
|
||||
return storage.ErrNotFound
|
||||
} else {
|
||||
server = &storage.Server{}
|
||||
server.Unmarshal(v)
|
||||
return nil
|
||||
}
|
||||
})
|
||||
|
||||
return server, err
|
||||
}
|
||||
|
||||
func (s *BoltStore) GetServers(user *storage.User) ([]*storage.Server, error) {
|
||||
var servers []*storage.Server
|
||||
|
||||
|
@ -127,7 +147,7 @@ func (s *BoltStore) GetServers(user *storage.User) ([]*storage.Server, error) {
|
|||
return servers, nil
|
||||
}
|
||||
|
||||
func (s *BoltStore) AddServer(user *storage.User, server *storage.Server) error {
|
||||
func (s *BoltStore) SaveServer(user *storage.User, server *storage.Server) error {
|
||||
return s.db.Batch(func(tx *bolt.Tx) error {
|
||||
b := tx.Bucket(bucketServers)
|
||||
data, _ := server.Marshal(nil)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package storage
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"os"
|
||||
|
||||
"github.com/khlieng/dispatch/pkg/session"
|
||||
|
@ -13,16 +14,19 @@ func Initialize(dir string) {
|
|||
os.MkdirAll(Path.Root(), 0700)
|
||||
}
|
||||
|
||||
var (
|
||||
ErrNotFound = errors.New("no item found")
|
||||
)
|
||||
|
||||
type Store interface {
|
||||
GetUsers() ([]*User, error)
|
||||
SaveUser(user *User) error
|
||||
DeleteUser(user *User) error
|
||||
|
||||
GetServer(user *User, host string) (*Server, error)
|
||||
GetServers(user *User) ([]*Server, error)
|
||||
AddServer(user *User, server *Server) error
|
||||
SaveServer(user *User, server *Server) error
|
||||
RemoveServer(user *User, host string) error
|
||||
SetNick(user *User, nick, host string) error
|
||||
SetServerName(user *User, name, host string) error
|
||||
|
||||
GetChannels(user *User) ([]*Channel, error)
|
||||
AddChannel(user *User, channel *Channel) error
|
||||
|
|
|
@ -137,12 +137,16 @@ type Server struct {
|
|||
Realname string
|
||||
}
|
||||
|
||||
func (u *User) GetServer(address string) (*Server, error) {
|
||||
return u.store.GetServer(u, address)
|
||||
}
|
||||
|
||||
func (u *User) GetServers() ([]*Server, error) {
|
||||
return u.store.GetServers(u)
|
||||
}
|
||||
|
||||
func (u *User) AddServer(server *Server) error {
|
||||
return u.store.AddServer(u, server)
|
||||
return u.store.SaveServer(u, server)
|
||||
}
|
||||
|
||||
func (u *User) RemoveServer(address string) error {
|
||||
|
@ -150,13 +154,24 @@ func (u *User) RemoveServer(address string) error {
|
|||
}
|
||||
|
||||
func (u *User) SetNick(nick, address string) error {
|
||||
return u.store.SetNick(u, nick, address)
|
||||
server, err := u.GetServer(address)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
server.Nick = nick
|
||||
return u.AddServer(server)
|
||||
}
|
||||
|
||||
func (u *User) SetServerName(name, address string) error {
|
||||
return u.store.SetServerName(u, name, address)
|
||||
server, err := u.GetServer(address)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
server.Name = name
|
||||
return u.AddServer(server)
|
||||
}
|
||||
|
||||
// TODO: Remove topic from disk schema
|
||||
type Channel struct {
|
||||
Server string
|
||||
Name string
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue