Две функции проходят тестирование вроде бы все хорошо. Но по факту не важно есть ли запись в таблице или нет функция все равно вернет в место заполненной структуры пользователя null. Другими словами ожидаем что функция будет возвращать *model.User, error а она возвращает null, error. Функция срабатывает как задумано только при двух условиях есть она возвращает только структуру пользователя func(r *UserRepository) Find(id int) *model.User{ return mode.User} или func(r *UserRepository) Find(id int) (model.User,error{ return *mode.User, error}
Почему так происходит?
func (r *UserRepository) Find(id int) (*model.User, error) { u := &model.User{} if err := r.store.db.QueryRow( "SELECT id, email, encrypted_password FROM users WHERE id = $1", id, ).Scan( &u.ID, &u.Email, &u.EncryptedPassword, ); err != nil { if err == sql.ErrNoRows { return nil, store.ErrRecordNotFound } return nil, err } return u, nil} func (r *UserRepository) FindByEmail(email string) (*model.User, error) { u := &model.User{} if err := r.store.db.QueryRow( "SELECT id, email, encrypted_password FROM users WHERE email = $1", email, ).Scan( &u.ID, &u.Email, &u.EncryptedPassword, ); err != nil { if err == sql.ErrNoRows { return nil, store.ErrRecordNotFound } return nil, err } return u, nil}
Две функции проходят тестирование вроде бы все хорошо. Но по факту не важно есть ли запись в таблице или нет функция все равно вернет в место заполненной структуры пользователя null. Другими словами ожидаем что функция будет возвращать
*model.User, errorа она возвращаетnull, error. Функция срабатывает как задумано только при двух условиях есть она возвращает только структуру пользователяfunc(r *UserRepository) Find(id int) *model.User{ return mode.User}илиfunc(r *UserRepository) Find(id int) (model.User,error{ return *mode.User, error}Почему так происходит?
func (r *UserRepository) Find(id int) (*model.User, error) { u := &model.User{} if err := r.store.db.QueryRow( "SELECT id, email, encrypted_password FROM users WHERE id = $1", id, ).Scan( &u.ID, &u.Email, &u.EncryptedPassword, ); err != nil { if err == sql.ErrNoRows { return nil, store.ErrRecordNotFound } return nil, err } return u, nil} func (r *UserRepository) FindByEmail(email string) (*model.User, error) { u := &model.User{} if err := r.store.db.QueryRow( "SELECT id, email, encrypted_password FROM users WHERE email = $1", email, ).Scan( &u.ID, &u.Email, &u.EncryptedPassword, ); err != nil { if err == sql.ErrNoRows { return nil, store.ErrRecordNotFound } return nil, err } return u, nil}