package main import ( "database/sql" "fmt" _ "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 music ( id INTEGER PRIMARY KEY AUTOINCREMENT, external_ids TEXT, name 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.price, &result.currency, &result.seller, &result.note, &result.purchase_date) if err != nil { panic("couldn't scan sql results") } results = append(results, result) } return results }