Compare commits

...

4 Commits
v1.0.7 ... main

@ -5,7 +5,10 @@ go 1.21.0
require (
github.com/go-sql-driver/mysql v1.7.1
github.com/jmoiron/sqlx v1.3.5
github.com/kataras/pio v0.0.13
github.com/kataras/golog v0.1.11
)
require golang.org/x/sys v0.13.0 // indirect
require (
github.com/kataras/pio v0.0.13 // indirect
golang.org/x/sys v0.13.0 // indirect
)

@ -3,6 +3,8 @@ github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrt
github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g=
github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ=
github.com/kataras/golog v0.1.11 h1:dGkcCVsIpqiAMWTlebn/ZULHxFvfG4K43LF1cNWSh20=
github.com/kataras/golog v0.1.11/go.mod h1:mAkt1vbPowFUuUGvexyQ5NFW6djEgGyxQBIARJ0AH4A=
github.com/kataras/pio v0.0.13 h1:x0rXVX0fviDTXOOLOmr4MUxOabu1InVSTu5itF8CXCM=
github.com/kataras/pio v0.0.13/go.mod h1:k3HNuSw+eJ8Pm2lA4lRhg3DiCjVgHlP8hmXApSej3oM=
github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0=

@ -1,25 +1,24 @@
package seaweed
/***
Пакет seaweed предназначен для облегчения работы с БД sea
и weed.
Текущая версия: v1.0.6
Текущая версия: v1.0.8
***/
package seaweed
import (
"os"
"fmt"
"errors"
"flag"
"fmt"
"os"
_ "github.com/go-sql-driver/mysql"
"github.com/jmoiron/sqlx"
"github.com/kataras/pio"
// "github.com/kataras/pio"
"github.com/kataras/golog"
)
// глобальная переменная для логирования
var p = pio.NewTextPrinter("color", os.Stdout)
const VERSION = "v1.0.8"
// ============= SEA ============
@ -28,18 +27,22 @@ type Sea struct {
debug bool
}
func Connect() (*Sea, error) {
debug := flag.Bool("debug", false, "enable debug mode")
fmt.Printf("debug: %v\n", *debug)
// Окрывает БД sea, соединяется с weed.
// Если options = true, то будут выводиться отладочные сообщения
func Connect(options ...bool) (*Sea, error) {
debug := false
if len(options) > 0 && options[0] {
debug = true
}
user := os.Getenv("SEA_USER")
if user == "" {
return nil, errors.New("Не установлена переменная SEA_USER")
return nil, errors.New("не установлена переменная SEA_USER")
}
password := os.Getenv("SEA_PASSWORD")
if password == "" {
return nil, errors.New("Не установлена переменная SEA_PASSWORD")
return nil, errors.New("не установлена переменная SEA_PASSWORD")
}
db, err := openDB(user, password)
@ -47,11 +50,12 @@ func Connect() (*Sea, error) {
return nil, err
}
if *debug {
p.Println(pio.Rich("БД sea успешно открыта", pio.Blue))
sea := Sea{db: db, debug: debug}
if debug {
golog.Infof("БД \"sea\" успешно открыта. %s", VERSION)
}
sea := Sea{db: db, debug: *debug}
return &sea, nil
}
@ -74,7 +78,7 @@ type Album struct {
}
// Albums возвращает список активных альбомов,
// без учета комиксов.
// без учета комиксов. Использует процедуру getAlbums в MySQL.
func (s *Sea) Albums() ([]Album, error) {
cmd := "call getAlbums()"
var albums []Album
@ -82,6 +86,9 @@ func (s *Sea) Albums() ([]Album, error) {
if err != nil {
return nil, err
}
return albums, nil
if s.debug {
golog.Infof("Получен список альбомов: %d", len(albums))
}
return albums, nil
}

@ -0,0 +1,67 @@
/***
Пакет seaweed предназначен для облегчения работы с БД sea
и weed.
Текущая версия: v1.0.7
***/
package seaweed
import (
"os"
"testing"
_ "github.com/go-sql-driver/mysql"
)
func TestConnect(t *testing.T) {
t.Run("проверка создания", func(t *testing.T) {
user := os.Getenv("SEA_USER")
if user == "" {
t.Errorf("Не установлена env-переменная SEA_USER")
}
password := os.Getenv("SEA_PASSWORD")
if password == "" {
t.Errorf("Не установлена env-переменная SEA_PASSWORD")
}
// создание с признаком отладки
sea, err := Connect(true)
if err != nil {
t.Errorf("Ошибка создания: %v", err)
}
if sea.debug == false {
t.Errorf("Не установлен признак отладки")
}
// штатное создание
sea2, err := Connect()
if err != nil {
t.Errorf("Ошибка создания: %v", err)
}
if sea2.debug == true {
t.Errorf("Не правильно установлен признак отладки")
}
})
}
func TestAlbums(t *testing.T) {
t.Run("проверка получения списка альбомов", func(t *testing.T) {
// создание с признаком отладки
sea, err := Connect(true)
if err != nil {
t.Errorf("Ошибка создания: %v", err)
}
albums, err := sea.Albums()
if err != nil {
t.Errorf("Ошибка albums: %v", err)
}
if len(albums) == 0 {
t.Errorf("Получен пустой список альбомов")
}
})
}
Loading…
Cancel
Save