56 lines
1.6 KiB
Go
56 lines
1.6 KiB
Go
package domains
|
|
|
|
import (
|
|
"context"
|
|
|
|
appv1 "stream.api/internal/gen/proto/app/v1"
|
|
)
|
|
|
|
type Handler struct {
|
|
appv1.UnimplementedDomainsServiceServer
|
|
module *Module
|
|
}
|
|
|
|
var _ appv1.DomainsServiceServer = (*Handler)(nil)
|
|
|
|
func NewHandler(module *Module) *Handler { return &Handler{module: module} }
|
|
|
|
func (h *Handler) ListDomains(ctx context.Context, _ *appv1.ListDomainsRequest) (*appv1.ListDomainsResponse, error) {
|
|
result, err := h.module.runtime.Authenticate(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
payload, err := h.module.ListDomains(ctx, ListDomainsQuery{UserID: result.UserID})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return presentListDomainsResponse(payload), nil
|
|
}
|
|
|
|
func (h *Handler) CreateDomain(ctx context.Context, req *appv1.CreateDomainRequest) (*appv1.CreateDomainResponse, error) {
|
|
result, err := h.module.runtime.Authenticate(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
payload, err := h.module.CreateDomain(ctx, CreateDomainCommand{UserID: result.UserID, Name: req.GetName()})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return presentCreateDomainResponse(*payload), nil
|
|
}
|
|
|
|
func (h *Handler) DeleteDomain(ctx context.Context, req *appv1.DeleteDomainRequest) (*appv1.MessageResponse, error) {
|
|
result, err := h.module.runtime.Authenticate(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if err := h.module.DeleteDomain(ctx, DeleteDomainCommand{UserID: result.UserID, ID: req.GetId()}); err != nil {
|
|
return nil, err
|
|
}
|
|
return commonMessage("Domain deleted"), nil
|
|
}
|
|
|
|
func commonMessage(message string) *appv1.MessageResponse {
|
|
return &appv1.MessageResponse{Message: message}
|
|
}
|