package user

import "github.com/eminetto/clean-architecture-go-v2/domain/entity"

//Reader interface
type Reader interface {
	Get(id entity.ID) (*User, error)
	Search(query string) ([]*User, error)
	List() ([]*User, error)
}

//Writer user writer
type Writer interface {
	Create(e *User) (entity.ID, error)
	Update(e *User) error
	Delete(id entity.ID) error
}

//Repository repository interface
type Repository interface {
	Reader
	Writer
}

//UseCase use case interface
type UseCase interface {
	Reader
	Writer
}