/
t3
/
iam-server
Обзор
Документация
Войти
/
t3
/
iam-server
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
internal/storage/sqlite.go
58 строк
953 B
Ivan
integration test
23 июл 2026, 17:47
23 июл 2026, 17:47
dd430e2
Код
Авторство
О чём код?
package storage import ( "context" "database/sql" "fmt" "os" "path/filepath" _ "modernc.org/sqlite" ) type Storage struct { db *sql.DB } func New(dsn string) (*Storage, error) { path, err := filepath.Abs(dsn) if err != nil { return nil, err } os.MkdirAll(filepath.Dir(path), os.ModePerm) db, err := sql.Open("sqlite", dsn) if err != nil { return nil, err } db.SetMaxOpenConns(1) return &Storage{db: db}, nil } func (s *Storage) Init(ctx context.Context) error { pragmas := []string{ "PRAGMA journal_mode=WAL;", "PRAGMA synchronous=NORMAL;", "PRAGMA busy_timeout=5000;", "PRAGMA foreign_keys=ON;", } for _, p := range pragmas { if _, err := s.db.ExecContext(ctx, p); err != nil { return err } } err := s.Migrate(ctx) if err != nil { return fmt.Errorf("migration failed: %w", err) } return nil } func (s *Storage) DB() *sql.DB { return s.db } func (s *Storage) Close() error { return s.db.Close() }