validation

package
v0.0.0-...-6b1c1c1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 6, 2020 License: MIT Imports: 5 Imported by: 0

README

Validation Infrastructure層

Domain層のValidationで定義したインターフェースを実装する。 Repositoryへのアクセスが必要な箇所は、別途バリデーションを実装する。

テンプレート

package validation

import (
	"context"

	"golang.org/x/xerrors"

	"github.com/16francs/gran/api/sample/internal/domain"
	"github.com/16francs/gran/api/sample/internal/domain/repository"
	dv "github.com/16francs/gran/api/sample/internal/domain/validation"
)

type sampleDomainValidation struct {
	validator      DomainValidator
	sampleRepository repository.SampleRepository
}

// NewSampleDomainValidation - SampleDomainValidationの生成
func NewSampleDomainValidation(ur repository.SampleRepository) dv.SampleDomainValidation {
	v := NewDomainValidator()

	return &sampleDomainValidation{
		validator:      v,
		sampleRepository: ur,
	}
}

func (udv *sampleDomainValidation) Sample(ctx context.Context, u *domain.Sample) error {
	err := udv.validator.Run(u)
	if err != nil {
		return err
	}

	err = uniqueCheckEmail(ctx, udv.sampleRepository, u.Email)
	if err != nil {
		return err
	}

	return nil
}

func uniqueCheckEmail(ctx context.Context, ur repository.SampleRepository, email string) error {
	uid, _ := ur.GetUIDByEmail(ctx, email)
	if uid != "" {
		return xerrors.New("Email is not unique.")
	}

	return nil
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewUserDomainValidation

func NewUserDomainValidation(ur repository.UserRepository) dv.UserDomainValidation

NewUserDomainValidation - UserDomainValidationの生成

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL