mirror of
https://github.com/h44z/wg-portal.git
synced 2025-04-19 08:55:12 +00:00
92 lines
2.9 KiB
Go
92 lines
2.9 KiB
Go
package backend
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
|
|
"github.com/h44z/wg-portal/internal/config"
|
|
"github.com/h44z/wg-portal/internal/domain"
|
|
)
|
|
|
|
// region dependencies
|
|
|
|
type InterfaceServiceInterfaceManager interface {
|
|
GetAllInterfacesAndPeers(ctx context.Context) ([]domain.Interface, [][]domain.Peer, error)
|
|
GetInterfaceAndPeers(ctx context.Context, id domain.InterfaceIdentifier) (*domain.Interface, []domain.Peer, error)
|
|
CreateInterface(ctx context.Context, in *domain.Interface) (*domain.Interface, error)
|
|
UpdateInterface(ctx context.Context, in *domain.Interface) (*domain.Interface, []domain.Peer, error)
|
|
DeleteInterface(ctx context.Context, id domain.InterfaceIdentifier) error
|
|
PrepareInterface(ctx context.Context) (*domain.Interface, error)
|
|
ApplyPeerDefaults(ctx context.Context, in *domain.Interface) error
|
|
}
|
|
|
|
type InterfaceServiceConfigFileManager interface {
|
|
PersistInterfaceConfig(ctx context.Context, id domain.InterfaceIdentifier) error
|
|
GetInterfaceConfig(ctx context.Context, id domain.InterfaceIdentifier) (io.Reader, error)
|
|
}
|
|
|
|
// endregion dependencies
|
|
|
|
type InterfaceService struct {
|
|
cfg *config.Config
|
|
|
|
interfaces InterfaceServiceInterfaceManager
|
|
configFile InterfaceServiceConfigFileManager
|
|
}
|
|
|
|
func NewInterfaceService(
|
|
cfg *config.Config,
|
|
interfaces InterfaceServiceInterfaceManager,
|
|
configFile InterfaceServiceConfigFileManager,
|
|
) *InterfaceService {
|
|
return &InterfaceService{
|
|
cfg: cfg,
|
|
interfaces: interfaces,
|
|
configFile: configFile,
|
|
}
|
|
}
|
|
|
|
func (i InterfaceService) GetInterfaceAndPeers(ctx context.Context, id domain.InterfaceIdentifier) (
|
|
*domain.Interface,
|
|
[]domain.Peer,
|
|
error,
|
|
) {
|
|
return i.interfaces.GetInterfaceAndPeers(ctx, id)
|
|
}
|
|
|
|
func (i InterfaceService) PrepareInterface(ctx context.Context) (*domain.Interface, error) {
|
|
return i.interfaces.PrepareInterface(ctx)
|
|
}
|
|
|
|
func (i InterfaceService) CreateInterface(ctx context.Context, in *domain.Interface) (*domain.Interface, error) {
|
|
return i.interfaces.CreateInterface(ctx, in)
|
|
}
|
|
|
|
func (i InterfaceService) UpdateInterface(ctx context.Context, in *domain.Interface) (
|
|
*domain.Interface,
|
|
[]domain.Peer,
|
|
error,
|
|
) {
|
|
return i.interfaces.UpdateInterface(ctx, in)
|
|
}
|
|
|
|
func (i InterfaceService) DeleteInterface(ctx context.Context, id domain.InterfaceIdentifier) error {
|
|
return i.interfaces.DeleteInterface(ctx, id)
|
|
}
|
|
|
|
func (i InterfaceService) GetAllInterfacesAndPeers(ctx context.Context) ([]domain.Interface, [][]domain.Peer, error) {
|
|
return i.interfaces.GetAllInterfacesAndPeers(ctx)
|
|
}
|
|
|
|
func (i InterfaceService) GetInterfaceConfig(ctx context.Context, id domain.InterfaceIdentifier) (io.Reader, error) {
|
|
return i.configFile.GetInterfaceConfig(ctx, id)
|
|
}
|
|
|
|
func (i InterfaceService) PersistInterfaceConfig(ctx context.Context, id domain.InterfaceIdentifier) error {
|
|
return i.configFile.PersistInterfaceConfig(ctx, id)
|
|
}
|
|
|
|
func (i InterfaceService) ApplyPeerDefaults(ctx context.Context, in *domain.Interface) error {
|
|
return i.interfaces.ApplyPeerDefaults(ctx, in)
|
|
}
|