package dao

import (
	"fmt"
)

type Type int

const (
	ErrTypeNotFound Type = iota
	ErrTypeDuplicate
	ErrTypeForeignKeyViolation
)

type Error struct {
	Cause error
	Type  Type
}

func NewDAOError(t Type, cause error) error {
	return &Error{
		Type:  t,
		Cause: cause,
	}
}

func (e *Error) Error() string {
	if e.Cause != nil {
		return fmt.Sprintf("Type %d: %s", e.Type, e.Cause.Error())
	}
	return fmt.Sprintf("Type %d: no cause given", e.Type)
}
