hakobox/database/model.go
2025-04-21 17:59:57 -03:00

47 lines
748 B
Go

package database
import (
"fmt"
"golang.org/x/crypto/bcrypt"
)
type Model interface {
Id() (int, error)
SetId(int)
Saved() bool
}
type identity struct {
id int
saved bool
}
var (
ErrNotSaved = fmt.Errorf("primary key id não foi salva")
)
func (p *identity) Id() (int, error) {
if !p.saved {
return 0, ErrNotSaved
}
return p.id, nil
}
func (p *identity) SetId(i int) {
p.id = i
p.saved = true
}
func (p *identity) Saved() bool {
return p.saved
}
func checkPasswordHash(password, hash string) error {
return bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
}
func HashPassword(password string) (string, error) {
bytes, err := bcrypt.GenerateFromPassword([]byte(password), 14)
return string(bytes), err
}