package budgeteer

// User struct contains Login information
type User struct {
	ID       string
	Email    string
	Password string
	Name     string
	Budgets  []*Budget `pg:",many2many:user_budgets"`
}

// UserService provides Methods for CRUD of Users
type UserService interface {
	User(id string) (*User, error)
	UserByUsername(username string) (*User, error)
	//Users() ([]*User, error)
	CreateUser(u *User) error
	//DeleteUser(id int) error
}

// CredentialVerifier verifies the provided credentials
type CredentialVerifier interface {
	Verify(password string, hashOnDb string) error
	Hash(password string) (string, error)
}
