mirror of
https://github.com/MizuchiLabs/mantrae.git
synced 2025-12-16 20:05:17 -06:00
266 lines
7.1 KiB
Go
266 lines
7.1 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/mizuchilabs/mantrae/server/internal/config"
|
|
"github.com/mizuchilabs/mantrae/server/internal/store/db"
|
|
"github.com/mizuchilabs/mantrae/server/internal/store/schema"
|
|
mantraev1 "github.com/mizuchilabs/mantrae/proto/gen/mantrae/v1"
|
|
)
|
|
|
|
type ServersTransportOps interface {
|
|
Get(
|
|
ctx context.Context,
|
|
req *mantraev1.GetServersTransportRequest,
|
|
) (*mantraev1.GetServersTransportResponse, error)
|
|
Create(
|
|
ctx context.Context,
|
|
req *mantraev1.CreateServersTransportRequest,
|
|
) (*mantraev1.CreateServersTransportResponse, error)
|
|
Update(
|
|
ctx context.Context,
|
|
req *mantraev1.UpdateServersTransportRequest,
|
|
) (*mantraev1.UpdateServersTransportResponse, error)
|
|
Delete(
|
|
ctx context.Context,
|
|
req *mantraev1.DeleteServersTransportRequest,
|
|
) (*mantraev1.DeleteServersTransportResponse, error)
|
|
List(
|
|
ctx context.Context,
|
|
req *mantraev1.ListServersTransportsRequest,
|
|
) (*mantraev1.ListServersTransportsResponse, error)
|
|
}
|
|
|
|
type HTTPServersTransportOps struct {
|
|
app *config.App
|
|
}
|
|
|
|
type TCPServersTransportOps struct {
|
|
app *config.App
|
|
}
|
|
|
|
func NewHTTPServersTransportOps(app *config.App) *HTTPServersTransportOps {
|
|
return &HTTPServersTransportOps{app: app}
|
|
}
|
|
|
|
func NewTCPServersTransportOps(app *config.App) *TCPServersTransportOps {
|
|
return &TCPServersTransportOps{app: app}
|
|
}
|
|
|
|
// HTTP Servers Transport Operations ------------------------------------------
|
|
|
|
func (s *HTTPServersTransportOps) Get(
|
|
ctx context.Context,
|
|
req *mantraev1.GetServersTransportRequest,
|
|
) (*mantraev1.GetServersTransportResponse, error) {
|
|
result, err := s.app.Conn.GetQuery().GetHttpServersTransport(ctx, req.Id)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &mantraev1.GetServersTransportResponse{
|
|
ServersTransport: result.ToProto(),
|
|
}, nil
|
|
}
|
|
|
|
func (s *HTTPServersTransportOps) Create(
|
|
ctx context.Context,
|
|
req *mantraev1.CreateServersTransportRequest,
|
|
) (*mantraev1.CreateServersTransportResponse, error) {
|
|
params := db.CreateHttpServersTransportParams{
|
|
ProfileID: req.ProfileId,
|
|
AgentID: req.AgentId,
|
|
Name: req.Name,
|
|
}
|
|
|
|
var err error
|
|
params.Config, err = db.UnmarshalStruct[schema.HTTPServersTransport](req.Config)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
result, err := s.app.Conn.GetQuery().CreateHttpServersTransport(ctx, params)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &mantraev1.CreateServersTransportResponse{
|
|
ServersTransport: result.ToProto(),
|
|
}, nil
|
|
}
|
|
|
|
func (s *HTTPServersTransportOps) Update(
|
|
ctx context.Context,
|
|
req *mantraev1.UpdateServersTransportRequest,
|
|
) (*mantraev1.UpdateServersTransportResponse, error) {
|
|
params := db.UpdateHttpServersTransportParams{
|
|
ID: req.Id,
|
|
Name: req.Name,
|
|
Enabled: req.Enabled,
|
|
}
|
|
|
|
var err error
|
|
params.Config, err = db.UnmarshalStruct[schema.HTTPServersTransport](req.Config)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
result, err := s.app.Conn.GetQuery().UpdateHttpServersTransport(ctx, params)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &mantraev1.UpdateServersTransportResponse{
|
|
ServersTransport: result.ToProto(),
|
|
}, nil
|
|
}
|
|
|
|
func (s *HTTPServersTransportOps) Delete(
|
|
ctx context.Context,
|
|
req *mantraev1.DeleteServersTransportRequest,
|
|
) (*mantraev1.DeleteServersTransportResponse, error) {
|
|
if err := s.app.Conn.GetQuery().DeleteHttpServersTransport(ctx, req.Id); err != nil {
|
|
return nil, err
|
|
}
|
|
return &mantraev1.DeleteServersTransportResponse{}, nil
|
|
}
|
|
|
|
func (s *HTTPServersTransportOps) List(
|
|
ctx context.Context,
|
|
req *mantraev1.ListServersTransportsRequest,
|
|
) (*mantraev1.ListServersTransportsResponse, error) {
|
|
result, err := s.app.Conn.GetQuery().
|
|
ListHttpServersTransports(ctx, db.ListHttpServersTransportsParams{
|
|
ProfileID: req.ProfileId,
|
|
AgentID: req.AgentId,
|
|
Limit: req.Limit,
|
|
Offset: req.Offset,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
totalCount, err := s.app.Conn.GetQuery().
|
|
CountHttpServersTransports(ctx, db.CountHttpServersTransportsParams{
|
|
ProfileID: req.ProfileId,
|
|
AgentID: req.AgentId,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
serversTransports := make([]*mantraev1.ServersTransport, 0, len(result))
|
|
for _, s := range result {
|
|
serversTransports = append(serversTransports, s.ToProto())
|
|
}
|
|
return &mantraev1.ListServersTransportsResponse{
|
|
ServersTransports: serversTransports,
|
|
TotalCount: totalCount,
|
|
}, nil
|
|
}
|
|
|
|
// TCP Servers Transport Operations -------------------------------------------
|
|
|
|
func (s *TCPServersTransportOps) Get(
|
|
ctx context.Context,
|
|
req *mantraev1.GetServersTransportRequest,
|
|
) (*mantraev1.GetServersTransportResponse, error) {
|
|
result, err := s.app.Conn.GetQuery().GetTcpServersTransport(ctx, req.Id)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &mantraev1.GetServersTransportResponse{
|
|
ServersTransport: result.ToProto(),
|
|
}, nil
|
|
}
|
|
|
|
func (s *TCPServersTransportOps) Create(
|
|
ctx context.Context,
|
|
req *mantraev1.CreateServersTransportRequest,
|
|
) (*mantraev1.CreateServersTransportResponse, error) {
|
|
params := db.CreateTcpServersTransportParams{
|
|
ProfileID: req.ProfileId,
|
|
AgentID: req.AgentId,
|
|
Name: req.Name,
|
|
}
|
|
|
|
var err error
|
|
params.Config, err = db.UnmarshalStruct[schema.TCPServersTransport](req.Config)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
result, err := s.app.Conn.GetQuery().CreateTcpServersTransport(ctx, params)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &mantraev1.CreateServersTransportResponse{
|
|
ServersTransport: result.ToProto(),
|
|
}, nil
|
|
}
|
|
|
|
func (s *TCPServersTransportOps) Update(
|
|
ctx context.Context,
|
|
req *mantraev1.UpdateServersTransportRequest,
|
|
) (*mantraev1.UpdateServersTransportResponse, error) {
|
|
params := db.UpdateTcpServersTransportParams{
|
|
ID: req.Id,
|
|
Name: req.Name,
|
|
Enabled: req.Enabled,
|
|
}
|
|
|
|
var err error
|
|
params.Config, err = db.UnmarshalStruct[schema.TCPServersTransport](req.Config)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
result, err := s.app.Conn.GetQuery().UpdateTcpServersTransport(ctx, params)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &mantraev1.UpdateServersTransportResponse{
|
|
ServersTransport: result.ToProto(),
|
|
}, nil
|
|
}
|
|
|
|
func (s *TCPServersTransportOps) Delete(
|
|
ctx context.Context,
|
|
req *mantraev1.DeleteServersTransportRequest,
|
|
) (*mantraev1.DeleteServersTransportResponse, error) {
|
|
if err := s.app.Conn.GetQuery().DeleteTcpServersTransport(ctx, req.Id); err != nil {
|
|
return nil, err
|
|
}
|
|
return &mantraev1.DeleteServersTransportResponse{}, nil
|
|
}
|
|
|
|
func (s *TCPServersTransportOps) List(
|
|
ctx context.Context,
|
|
req *mantraev1.ListServersTransportsRequest,
|
|
) (*mantraev1.ListServersTransportsResponse, error) {
|
|
result, err := s.app.Conn.GetQuery().
|
|
ListTcpServersTransports(ctx, db.ListTcpServersTransportsParams{
|
|
ProfileID: req.ProfileId,
|
|
AgentID: req.AgentId,
|
|
Limit: req.Limit,
|
|
Offset: req.Offset,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
totalCount, err := s.app.Conn.GetQuery().
|
|
CountTcpServersTransports(ctx, db.CountTcpServersTransportsParams{
|
|
ProfileID: req.ProfileId,
|
|
AgentID: req.AgentId,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
serversTransports := make([]*mantraev1.ServersTransport, 0, len(result))
|
|
for _, s := range result {
|
|
serversTransports = append(serversTransports, s.ToProto())
|
|
}
|
|
return &mantraev1.ListServersTransportsResponse{
|
|
ServersTransports: serversTransports,
|
|
TotalCount: totalCount,
|
|
}, nil
|
|
}
|