aboutsummaryrefslogtreecommitdiff
path: root/internal/scrobbler/db.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--internal/scrobbler/db.go55
1 files changed, 55 insertions, 0 deletions
diff --git a/internal/scrobbler/db.go b/internal/scrobbler/db.go
new file mode 100644
index 0000000..5f80aa4
--- /dev/null
+++ b/internal/scrobbler/db.go
@@ -0,0 +1,55 @@
+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
+}