/
t3
/
s3-server
Обзор
Документация
Войти
/
t3
/
s3-server
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
internal/storage/sqlite/sqlite.go
55 строк
1 KB
Ivan Shibkikh
cline crit fixes
22 июл 2026, 15:35
22 июл 2026, 15:35
7e21419
Код
Авторство
О чём код?
package sqlite import ( "context" "database/sql" "fmt" "os" "path/filepath" "gitverse.ru/t3/s3-server/internal/storage" _ "modernc.org/sqlite" ) var _ storage.MetadataStorage = (*Storage)(nil) type Storage struct { db *sql.DB } func New(dsn string) (*Storage, error) { dir := filepath.Dir(dsn) if err := os.MkdirAll(dir, 0755); err != nil { return nil, fmt.Errorf("failed to create metadata directory %q: %w", dir, err) } 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) Close() error { return s.db.Close() }