You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.7 KiB
Go

12 months ago
package stemdb
import (
"fmt"
"os"
_ "github.com/go-sql-driver/mysql"
"github.com/jmoiron/sqlx"
)
// The above type represents a book with properties such as ID, author, series, title, and flags for
// deletion and selection.
// @property {int} ID - The ID property is an integer that represents the unique identifier of a book.
// @property {string} Author - The author of the book.
// @property {string} Seria - The "Seria" property in the Book struct represents the series to which
// the book belongs. It is a string that holds the name or identifier of the series.
// @property {string} Title - The title of the book.
// @property {bool} Deleted - The "Deleted" property is a boolean value that indicates whether the book
// has been marked as deleted or not. If the value is true, it means the book has been deleted. If the
// value is false, it means the book is not deleted.
// @property {bool} Selected - The "Selected" property is a boolean value that indicates whether the
// book is currently selected or not. It can be used to keep track of which books are currently being
// interacted with or displayed in a user interface.
12 months ago
type Book struct {
ID int
Author string
Seria string
Title string
Deleted bool
Selected bool
}
var dbx *sqlx.DB
// The Connect function opens a connection to a MySQL database and returns the connection object.
12 months ago
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
// The function `ListAllBooks` retrieves a list of books from a database based on optional conditions.
12 months ago
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
}
// поскольку это отдельный пакет, то приходится дублировать
// ============================ разные утилиты ==========================
// Проверяет наличие ошибки
// The function "checkError" is used to print and exit the program if an error occurs.
12 months ago
func checkError(src string, err error) {
if err != nil {
fmt.Printf("[db] (%s): %s\n", src, err)
os.Exit(1)
}
}