Compare commits

..

10 Commits
v1.0.2 ... main

@ -7,4 +7,11 @@ sea - api доступ к weed
- 04-02-2024 Возобновляю работу над пакетом - 04-02-2024 Возобновляю работу над пакетом
Текущий релиз v1.0.2, но почему-то не подхватывается.. Текущий релиз v1.0.2, но почему-то не подхватывается..
Разобрался - виновато кэширование пакетов в go.
Делай команду: `go clean -modcache` и будет тебе счастье.
Добавил pio и флаг debug.
че-то не хочет добавлять последний релиз
см. описание проблемы в obsidian.

@ -1,23 +1,14 @@
module git.tad17.ru/itman/sea module git.tad17.ru/itman/seaweed
go 1.21.0 go 1.21.0
require ( require (
github.com/go-sql-driver/mysql v1.7.1 github.com/go-sql-driver/mysql v1.7.1
github.com/gofiber/fiber/v2 v2.52.0
github.com/jmoiron/sqlx v1.3.5 github.com/jmoiron/sqlx v1.3.5
github.com/kataras/golog v0.1.11
) )
require ( require (
github.com/andybalholm/brotli v1.0.5 // indirect github.com/kataras/pio v0.0.13 // indirect
github.com/google/uuid v1.5.0 // indirect golang.org/x/sys v0.13.0 // indirect
github.com/klauspost/compress v1.17.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-runewidth v0.0.15 // indirect
github.com/rivo/uniseg v0.2.0 // indirect
github.com/valyala/bytebufferpool v1.0.0 // indirect
github.com/valyala/fasthttp v1.51.0 // indirect
github.com/valyala/tcplisten v1.0.0 // indirect
golang.org/x/sys v0.15.0 // indirect
) )

@ -1,36 +1,15 @@
github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs=
github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=
github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/gofiber/fiber/v2 v2.52.0 h1:S+qXi7y+/Pgvqq4DrSmREGiFwtB7Bu6+QFLuIHYw/UE=
github.com/gofiber/fiber/v2 v2.52.0/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ=
github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g=
github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ=
github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM= github.com/kataras/golog v0.1.11 h1:dGkcCVsIpqiAMWTlebn/ZULHxFvfG4K43LF1cNWSh20=
github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= 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= github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0=
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/mattn/go-sqlite3 v1.14.6 h1:dNPt6NO46WmLVt2DLNpwczCmdV5boIZ6g/tlDrlRUbg= github.com/mattn/go-sqlite3 v1.14.6 h1:dNPt6NO46WmLVt2DLNpwczCmdV5boIZ6g/tlDrlRUbg=
github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasthttp v1.51.0 h1:8b30A5JlZ6C7AS81RsWjYMQmrZG6feChmgAolCl1SqA=
github.com/valyala/fasthttp v1.51.0/go.mod h1:oI2XroL+lI7vdXyYoQk03bXBThfFl2cVdIA3Xl7cH8g=
github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8=
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=

@ -1,28 +1,67 @@
package sea /***
Пакет seaweed предназначен для облегчения работы с БД sea
и weed.
Текущая версия: v1.0.8
***/
package seaweed
import ( import (
// "fmt" "errors"
_ "github.com/go-sql-driver/mysql" // для связи с mysql "fmt"
"os"
_ "github.com/go-sql-driver/mysql"
"github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx"
// "github.com/kataras/pio"
"github.com/kataras/golog"
) )
const VERSION = "v1.0.8"
// ============= SEA ============ // ============= SEA ============
type Sea struct { type Sea struct {
db *sqlx.DB db *sqlx.DB
debug bool
}
// Окрывает БД 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")
}
password := os.Getenv("SEA_PASSWORD")
if password == "" {
return nil, errors.New("не установлена переменная SEA_PASSWORD")
} }
func Connect() (*Sea, error) { db, err := openDB(user, password)
db, err := openDB()
if err != nil { if err != nil {
return nil, err return nil, err
} }
sea := Sea{db: db}
sea := Sea{db: db, debug: debug}
if debug {
golog.Infof("БД \"sea\" успешно открыта. %s", VERSION)
}
return &sea, nil return &sea, nil
} }
func openDB() (*sqlx.DB, error) { func openDB(user, password string) (*sqlx.DB, error) {
db, err := sqlx.Open("mysql", "itman:X753951x@(xigmanas:3306)/sea") conn := fmt.Sprintf("%s:%s@(xigmanas:3306)/sea", user, password)
db, err := sqlx.Open("mysql", conn)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -31,20 +70,25 @@ func openDB() (*sqlx.DB, error) {
// ============= ALBUM ============ // ============= ALBUM ============
// Album содержит информацию об активном альбоме
type Album struct { type Album struct {
Seria string Seria string
Cnt int Cnt int
Hash string Hash string
} }
func (s *Sea) Albums(db *sqlx.DB) ([]Album, error) { // Albums возвращает список активных альбомов,
// без учета комиксов. Использует процедуру getAlbums в MySQL.
func (s *Sea) Albums() ([]Album, error) {
cmd := "call getAlbums()" cmd := "call getAlbums()"
var albums []Album var albums []Album
err := db.Select(&albums, cmd) err := s.db.Select(&albums, cmd)
if err != nil { if err != nil {
return nil, err 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