Update storage queues and remote server info
This commit is contained in:
parent
fff753e3aa
commit
8f75009848
4 changed files with 110 additions and 14 deletions
|
@ -21,14 +21,32 @@ type RemoteServer struct {
|
|||
}
|
||||
|
||||
func (s *Storage) FindRemoteServer(url string) (*RemoteServer, error) {
|
||||
// TODO: Implement me
|
||||
panic("not implemented")
|
||||
server := RemoteServer{
|
||||
ID: url,
|
||||
}
|
||||
err := s.db.First(&server).Error
|
||||
switch err {
|
||||
case nil:
|
||||
return &server, nil
|
||||
case gorm.ErrRecordNotFound:
|
||||
return nil, ErrEntryNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
// Find a remote server with a given display name
|
||||
func (s *Storage) FindRemoteServerByDisplayName(displayName string) (*RemoteServer, error) {
|
||||
// TODO: Implement me
|
||||
panic("not implemented")
|
||||
server := RemoteServer{}
|
||||
err := s.db.Where("name = ?", displayName).First(&server).Error
|
||||
switch err {
|
||||
case nil:
|
||||
return &server, nil
|
||||
case gorm.ErrRecordNotFound:
|
||||
return nil, ErrEntryNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
// Create a new remote server
|
||||
|
@ -36,8 +54,25 @@ func (s *Storage) NewRemoteServer(
|
|||
url, displayName, icon string,
|
||||
serverType RemoteServerType,
|
||||
) (*RemoteServer, error) {
|
||||
// TODO: Implement me
|
||||
panic("not implemented")
|
||||
_, err := s.FindRemoteServer(url)
|
||||
switch err {
|
||||
case nil:
|
||||
return nil, ErrEntryAlreadyExists
|
||||
case ErrEntryNotFound: // Empty case, not found is what we want
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
server := RemoteServer{
|
||||
ID: url,
|
||||
Name: displayName,
|
||||
Icon: icon,
|
||||
ServerType: serverType,
|
||||
}
|
||||
err = s.db.Create(&server).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &server, nil
|
||||
}
|
||||
|
||||
// Update a remote server with the given url
|
||||
|
@ -45,6 +80,22 @@ func (s *Storage) NewRemoteServer(
|
|||
// If icon is set, update that
|
||||
// Returns the updated version
|
||||
func (s *Storage) UpdateRemoteServer(url string, displayName, icon *string) (*RemoteServer, error) {
|
||||
// TODO: Implement me
|
||||
panic("not implemented")
|
||||
if displayName == nil && icon == nil {
|
||||
return nil, ErrNothingToChange
|
||||
}
|
||||
server, err := s.FindRemoteServer(url)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if displayName != nil {
|
||||
server.Name = *displayName
|
||||
}
|
||||
if icon != nil {
|
||||
server.Icon = *icon
|
||||
}
|
||||
err = s.db.Save(server).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return server, nil
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue