diff --git a/go.mod b/go.mod index 23568e1..ba74552 100644 --- a/go.mod +++ b/go.mod @@ -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 +) diff --git a/go.sum b/go.sum index c22ac13..c1284a4 100644 --- a/go.sum +++ b/go.sum @@ -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= diff --git a/sea.go b/sea.go index dcee233..660f20c 100644 --- a/sea.go +++ b/sea.go @@ -8,18 +8,17 @@ package seaweed import ( "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.7" // ============= SEA ============ @@ -29,9 +28,11 @@ type Sea struct { } // Connect to database and connect to weed -func Connect() (*Sea, error) { - debug := flag.Bool("debug", false, "enable debug mode") - fmt.Printf("debug: %v\n", *debug) +func Connect(options ...bool) (*Sea, error) { + debug := false + if len(options) > 0 && options[0] == true { + debug = true + } user := os.Getenv("SEA_USER") if user == "" { @@ -48,11 +49,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 } @@ -83,5 +85,9 @@ func (s *Sea) Albums() ([]Album, error) { if err != nil { return nil, err } + if s.debug { + golog.Infof("Получен список альбомов: %d", len(albums)) + } + return albums, nil } diff --git a/sea_test.go b/sea_test.go index edd5613..eb25ae0 100644 --- a/sea_test.go +++ b/sea_test.go @@ -7,30 +7,61 @@ package seaweed import ( - "reflect" + "os" "testing" _ "github.com/go-sql-driver/mysql" ) func TestConnect(t *testing.T) { - tests := []struct { - name string - want *Sea - wantErr bool - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got, err := Connect() - if (err != nil) != tt.wantErr { - t.Errorf("Connect() error = %v, wantErr %v", err, tt.wantErr) - return - } - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("Connect() = %v, want %v", got, tt.want) - } - }) - } + 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("Получен пустой список альбомов") + } + }) }