Как правильно обратиться к базе данных на Go по нижеописанной структуре?

второй день не могу дошурупать, как правильно закодить.

Задача:
у нас есть Структура User в нее приходит логин и пароль из фронта.
type User struct {
	Username string `json:"username"`
	Password string `json:"password"`
}


мне нужно выгребти id этого юзера из MySQL, делаю так:
package ui

import (
	"encoding/json"
	"fmt"
	"net"
	_ "github.com/lib/pq"
	_ "github.com/go-sql-driver/mysql"
	"database/sql"
	"github.com/jmoiron/sqlx"



)

type User struct {
	Username string `json:"username"`
	Password string `json:"password"`
}

type db interface {
	SelectUsers() ([]*User, error)
}

type Model struct {
	db
}

type myDb struct {
	dbConn *sqlx.DB
	sqlSelectUsers  *sqlx.Stmt
	sqlSelectUser   *sqlx.Rows
}


func New(db db) *Model {
	return &Model{
		db: db,
	}
}

func (m *Model) Users() ([]*User, error) {
    return m.SelectUsers()
}
//****************************************//
//*коннект к бд, все работает ок.*//
//***************************************//
func InitDb(cfg Config) (*myDb, error) {
	if dbConn, err := sqlx.Connect("mysql", cfg.ConnectString); err != nil {
		return nil, err
	} else {
		p := &myDb{dbConn: dbConn}
		if err := p.dbConn.Ping(); err != nil {
			return nil, err
		}
		if err := p.prepareSqlStatements(); err != nil {
			return nil, err
		}
		return p, nil
	}
}

func (p *myDb) prepareSqlStatements() (err error) {
if p.sqlSelectUsers, err = p.dbConn.Preparex(
		"SELECT login, pass, id FROM users WHERE login=? AND pass=?",
	); err != nil {
		return err
	}
}

func (p *myDb) SelectUsers() ([]*model.User, error) {
	user := make([]*model.User, 0)
	if err := p.sqlSelectUsers.Select(&user); err != nil {
		return nil, err
	}
	return user, nil
}

usr, err := m.Users()
 js, err := json.Marshal(usr)
        		if err != nil {
        			http.Error(w, "This is an error2", http.StatusBadRequest)
        			return
        		}

        		fmt.Fprintf(w, string(js))

Код работает но выгребает с базы всех юзверей, но это как по мне напряжно.
Так вот в чем вопрос, как мне вытянуть именно юзера по login, password
Проблема в том, что не могу допетрать, как передать значения структуры User в функцию, чтоб подставить их после WHERE.

За любые пинки буду только благодарен, так как после пыха, чуток по другому нужно понимать этот язык.
  • Вопрос задан
  • 652 просмотра
Пригласить эксперта
Ответы на вопрос 1
@PapaStifflera
Родился, вырос...
Учитесь пользоваться поисковиками и документацией.
Все есть в примерах: https://github.com/go-sql-driver/mysql/wiki/Examples
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы