nfsense/internal/api/object/addresses.go
2023-04-13 22:47:37 +02:00

92 lines
2.2 KiB
Go

package object
import (
"context"
"fmt"
"nfsense.net/nfsense/internal/definitions/object"
)
type GetAddressParameters struct {
ID string
}
type GetAddressResult struct {
Name string `json:"name"`
object.Address
}
func (f *Object) GetAddress(ctx context.Context, params GetAddressParameters) (GetAddressResult, error) {
_, ok := f.ConfigManager.GetPendingConfig().Object.Addresses[params.ID]
if !ok {
return GetAddressResult{}, fmt.Errorf("Address does not Exist")
}
return GetAddressResult{
Name: params.ID,
Address: f.ConfigManager.GetPendingConfig().Object.Addresses[params.ID],
}, nil
}
type GetAddressesResult struct {
Addresses map[string]object.Address
}
func (f *Object) GetAddresses(ctx context.Context, params struct{}) (GetAddressesResult, error) {
return GetAddressesResult{
Addresses: f.ConfigManager.GetPendingConfig().Object.Addresses,
}, nil
}
type CreateAddressParameters struct {
Name string
object.Address
}
func (f *Object) CreateAddress(ctx context.Context, params CreateAddressParameters) (struct{}, error) {
_, ok := f.ConfigManager.GetPendingConfig().Object.Addresses[params.Name]
if ok {
return struct{}{}, fmt.Errorf("Address already Exists")
}
t, conf := f.ConfigManager.StartTransaction()
defer t.Discard()
conf.Object.Addresses[params.Name] = params.Address
return struct{}{}, t.Commit()
}
type UpdateAddressParameters struct {
Name string
object.Address
}
func (f *Object) UpdateAddress(ctx context.Context, params UpdateAddressParameters) (struct{}, error) {
_, ok := f.ConfigManager.GetPendingConfig().Object.Addresses[params.Name]
if !ok {
return struct{}{}, fmt.Errorf("Address does not Exist")
}
t, conf := f.ConfigManager.StartTransaction()
defer t.Discard()
conf.Object.Addresses[params.Name] = params.Address
return struct{}{}, t.Commit()
}
type DeleteAddressParameters struct {
Name string
}
func (f *Object) DeleteAddress(ctx context.Context, params DeleteAddressParameters) (struct{}, error) {
_, ok := f.ConfigManager.GetPendingConfig().Object.Addresses[params.Name]
if !ok {
return struct{}{}, fmt.Errorf("Address does not Exist")
}
t, conf := f.ConfigManager.StartTransaction()
defer t.Discard()
delete(conf.Object.Addresses, params.Name)
return struct{}{}, t.Commit()
}