Update storage queues and remote server info

This commit is contained in:
Melody Becker 2024-09-17 15:45:43 +02:00
parent fff753e3aa
commit 8f75009848
4 changed files with 110 additions and 14 deletions

View file

@ -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
}