package sea /*** Пакет sea предназначен для облегчения работы с БД sea и weed. Текущая версия: v1.0.4 ***/ import ( "os" "fmt" "errors" "flag" _ "github.com/go-sql-driver/mysql" "github.com/jmoiron/sqlx" "github.com/kataras/pio" ) // глобальная переменная для логирования var p = pio.NewTextPrinter("color", os.Stdout) // ============= SEA ============ type Sea struct { db *sqlx.DB debug bool } func Connect() (*Sea, error) { debug := flag.Bool("debug", false, "enable debug mode") user := os.Getenv("SEA_USER") if user == "" { return nil, errors.New("Не установлена переменная SEA_USER") } password := os.Getenv("SEA_PASSWORD") if password == "" { return nil, errors.New("Не установлена переменная SEA_PASSWORD") } db, err := openDB(user, password) if err != nil { return nil, err } if *debug { p.Println(pio.Rich("БД sea успешно открыта", pio.Blue)) } sea := Sea{db: db, debug debug} return &sea, nil } func openDB(user, password string) (*sqlx.DB, error) { conn := fmt.Sprintf("%s:%s@(xigmanas:3306)/sea", user, password) db, err := sqlx.Open("mysql", conn) if err != nil { return nil, err } return db, nil } // ============= ALBUM ============ // Album содержит информацию об активном альбоме type Album struct { Seria string Cnt int Hash string } // Albums возвращает список активных альбомов, // без учета комиксов. func (s *Sea) Albums() ([]Album, error) { cmd := "call getAlbums()" var albums []Album err := s.db.Select(&albums, cmd) if err != nil { return nil, err } return albums, nil }