Imported from hako

This commit is contained in:
Felipe M 2024-11-20 23:21:03 +01:00
parent f8377df327
commit 8b8447213f
Signed by: fmartingr
GPG key ID: CCFBC5637D4000A8
10 changed files with 315 additions and 0 deletions

39
database/database.go Normal file
View file

@ -0,0 +1,39 @@
package database
import (
"database/sql"
"fmt"
"net/url"
"strings"
_ "modernc.org/sqlite"
)
type Engine struct {
db *sql.DB
}
func connect(dbURL string) (*sql.DB, error) {
dbU, err := url.Parse(dbURL)
if err != nil {
return nil, fmt.Errorf("failed to parse database URL: %w", err)
}
return sql.Open(dbU.Scheme, strings.TrimPrefix(dbURL, dbU.Scheme+":"))
}
func New(databaseURI string) (*Engine, error) {
db, err := connect(databaseURI)
if err != nil {
return nil, fmt.Errorf("failed to connect to database: %w", err)
}
// TODO: try for several seconds before giving up
if err := db.Ping(); err != nil {
return nil, fmt.Errorf("failed to ping database: %w", err)
}
return &Engine{
db: db,
}, nil
}