sql.go (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/mattn/go-sqlite3"
)
func openDB(DBName string) (*sql.DB, error) {
db, err := sql.Open("sqlite3", DBName + ".db")
if err != nil {
panic("couldn't open db")
}
return db, nil
}
func createTables(db *sql.DB, tableName string) (err error) {
switch tableName {
case "music":
_, err = db.Exec(`CREATE TABLE IF NOT EXISTS purchase (
id INTEGER PRIMARY KEY AUTOINCREMENT,
external_ids TEXT,
name TEXT NOT NULL,
artist TEXT NOT NULL,
price FLOAT,
currency TEXT,
seller TEXT,
note TEXT,
purchase_date TEXT);`)
if err != nil {
panic(err)
return err
}
return nil
default:
panic("wrong table name")
}
}
func loadCategory(category string) []musicItem {
db, err := openDB("walletdrain")
if err != nil {
panic("couldn't open db")
}
defer db.Close()
createTables(db, "music")
query := fmt.Sprintf("SELECT * FROM %s", category)
rows, err := db.Query(query)
if err != nil {
panic(err)
}
defer rows.Close()
var results []musicItem
for rows.Next() {
var result musicItem
err := rows.Scan(
&result.id,
&result.external_ids,
&result.name,
&result.artist,
&result.price,
&result.currency,
&result.seller,
&result.note,
&result.purchase_date)
if err != nil {
log.Print(err)
}
results = append(results, result)
}
return results
}
|