package scrobbler import ( "database/sql" "fmt" "os" _ "github.com/mattn/go-sqlite3" ) func initdb(dbpath string) error { if _, err := os.Stat(dbpath); err == nil { return fmt.Errorf("%s already exists", dbpath) } db, err := sql.Open("sqlite3", dbpath) if err != nil { return err } defer db.Close() sqlStmt := `create table records (id text primary key, title text, artist text, album text, duration int, playtime int, time timestamp );` _, err = db.Exec(sqlStmt) if err != nil { return err } return nil } func opendatabase(dbpath string) (*sql.DB, error) { var err error _, err = os.Stat(dbpath) if err != nil { if err := initdb(dbpath); err != nil { return nil, err } } db, err := sql.Open("sqlite3", dbpath) if err != nil { return nil, fmt.Errorf("unable to open database: %s", err) } return db, nil }