package stemdb import ( "fmt" "os" _ "github.com/go-sql-driver/mysql" "github.com/jmoiron/sqlx" ) type Book struct { ID int Author string Seria string Title string Deleted bool Selected bool } var dbx *sqlx.DB func Connect() *sqlx.DB { db, err := sqlx.Open("mysql", "itman:X753951x@(xigmanas:3306)/stem") checkError("open db", err) dbx = db return db } // возвращает список всех книг // возможно использование фильтров в query, типа: ?deleted=deleted&selected=not selected func ListAllBooks(options ...string) ([]Book, error) { cmd := ` SELECT id, author, seria, title, deleted, selected FROM book ` // блок условий where := "" if options != nil { where = "WHERE 1=1" for _, o := range options { if o != "" { where += fmt.Sprintf(" AND %s", o) } } } //fmt.Printf("where: %s\n", where) var books []Book err := dbx.Select(&books, cmd+where) //checkError("ListBooks", err) return books, err } // поскольку это отдельный пакет, то приходится дублировать // ============================ разные утилиты ========================== // Проверяет наличие ошибки func checkError(src string, err error) { if err != nil { fmt.Printf("[db] (%s): %s\n", src, err) os.Exit(1) } }