diff options
| author | Franck Cuny <franck@fcuny.net> | 2025-08-29 09:23:18 -0700 |
|---|---|---|
| committer | Franck Cuny <franck@fcuny.net> | 2025-08-29 09:23:18 -0700 |
| commit | 91ead5e4493bb459ea537ad204e7e6b3d15a220b (patch) | |
| tree | f712f9d75a969479bda177bc439918ed2a1008f0 /internal/scrobbler/db.go | |
| parent | fix readme for x509-info project (diff) | |
| parent | prepare the migration (diff) | |
| download | x-91ead5e4493bb459ea537ad204e7e6b3d15a220b.tar.gz | |
Merge remote-tracking branch 'import/main'
Diffstat (limited to '')
| -rw-r--r-- | internal/scrobbler/db.go | 55 |
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 +} |
