diff --git a/internal/adapters/db/db.go b/internal/adapters/db/db.go index 3a49c63..cab6029 100644 --- a/internal/adapters/db/db.go +++ b/internal/adapters/db/db.go @@ -1 +1,39 @@ package db + +import ( + "context" + "database/sql" + "fmt" + "time" + _"embed" + + _ "github.com/mattn/go-sqlite3" +) + +//go:embed schema.sql +var schema string + + +func NewDB(ctx context.Context, URI string)(db *sql.DB, err error) { + + params := "cache=shared&_foreign_keys=on&_busy_timeout=3000&_journal_mode=WAL" + db, err = sql.Open("sqlite3", fmt.Sprintf("%s?%s", URI, params)) + if err != nil { + return nil, fmt.Errorf("connecting %w", err) + } + // test conn + err = db.PingContext(ctx) + if err != nil { + return nil, fmt.Errorf("ping Error %w", err) + } + db.SetConnMaxIdleTime(5*time.Second) + CreateTables(db) + return db, nil +} + +func CreateTables(db *sql.DB) { + _, err := db.Exec(schema) + if err != nil { + panic(err) + } +}