46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package site
|
|
|
|
import (
|
|
"context"
|
|
|
|
"go.uber.org/zap"
|
|
|
|
domainsite "codeberg.org/mapleopentech/monorepo/cloud/maplepress-backend/internal/domain/site"
|
|
)
|
|
|
|
// ValidateDomainUseCase checks if a domain is available for registration
|
|
type ValidateDomainUseCase struct {
|
|
repo domainsite.Repository
|
|
logger *zap.Logger
|
|
}
|
|
|
|
// ProvideValidateDomainUseCase creates a new ValidateDomainUseCase
|
|
func ProvideValidateDomainUseCase(
|
|
repo domainsite.Repository,
|
|
logger *zap.Logger,
|
|
) *ValidateDomainUseCase {
|
|
return &ValidateDomainUseCase{
|
|
repo: repo,
|
|
logger: logger,
|
|
}
|
|
}
|
|
|
|
// Execute validates if a domain can be used for a new site
|
|
func (uc *ValidateDomainUseCase) Execute(ctx context.Context, domain string) error {
|
|
// Check if domain already exists
|
|
exists, err := uc.repo.DomainExists(ctx, domain)
|
|
if err != nil {
|
|
uc.logger.Error("failed to check domain existence",
|
|
zap.String("domain", domain),
|
|
zap.Error(err))
|
|
return err
|
|
}
|
|
|
|
if exists {
|
|
uc.logger.Warn("domain already exists", zap.String("domain", domain))
|
|
return domainsite.ErrDomainAlreadyExists
|
|
}
|
|
|
|
uc.logger.Info("domain is available", zap.String("domain", domain))
|
|
return nil
|
|
}
|