package storage

import (
	"database/sql"
	"log"
	"strings"

	_ "github.com/mattn/go-sqlite3"
)

type Storage struct {
	db *sql.DB
}

func New(path string) (*Storage, error) {
	if pos := strings.IndexRune(path, '?'); pos == -1 {
        params := "_journal=WAL&_sync=NORMAL&_busy_timeout=5000&cache=shared"
        log.Printf("opening db with params: %s", params)
        path = path + "?" + params
    }

	db, err := sql.Open("sqlite3", path)
	if err != nil {
		return nil, err
	}

	if err = migrate(db); err != nil {
		return nil, err
	}
	return &Storage{db: db}, nil
}
