71 lines
1.8 KiB
Go
71 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
"runtime"
|
|
"os"
|
|
"fmt"
|
|
"log"
|
|
)
|
|
|
|
func OpenDatabase() (*sql.DB){
|
|
var db *sql.DB
|
|
var err error
|
|
switch runtime.GOOS {
|
|
case "linux", "darwin":
|
|
dbFolder := os.Getenv("HOME") + "/.config/boxd"
|
|
_, err = os.Stat(dbFolder)
|
|
if os.IsNotExist(err) {
|
|
err := os.Mkdir(dbFolder, 0755)
|
|
if err != nil {
|
|
fmt.Println("failed to create the configuration directory")
|
|
}
|
|
} else if err != nil {
|
|
fmt.Println("error checking configuration directory")
|
|
}
|
|
dbLocation := dbFolder + "/boxd.db?_foreign_keys=true"
|
|
db, err = sql.Open("sqlite3", "file:" + dbLocation)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
case "windows":
|
|
userProfile := os.Getenv("USERPROFILE")
|
|
dbFolder := userProfile + "\\Documents\\"
|
|
_, err = os.Stat(dbFolder)
|
|
if os.IsNotExist(err) {
|
|
err := os.Mkdir(dbFolder, 0755)
|
|
if err != nil {
|
|
fmt.Println("failed to create the configuration directory")
|
|
}
|
|
} else if err != nil {
|
|
fmt.Println("error checking configuration directory")
|
|
}
|
|
dbLocation := dbFolder + "boxd.db"
|
|
db, err = sql.Open("sqlite3", dbLocation)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
return db
|
|
}
|
|
|
|
|
|
|
|
func DBEntryExist(db *sql.DB, name string, isMovie bool, isSeries bool) (bool, error) {
|
|
var count int
|
|
var row *sql.Row
|
|
if isMovie == true && isSeries == false {
|
|
row = db.QueryRow("SELECT COUNT(*) FROM movies WHERE imdb = ?", name)
|
|
} else if isMovie == false && isSeries == true {
|
|
row = db.QueryRow("SELECT COUNT(*) FROM series WHERE tmdb = ?", name)
|
|
} else {
|
|
fmt.Println("oops there is some confusion")
|
|
os.Exit(1)
|
|
}
|
|
|
|
err := row.Scan(&count)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
return count > 0, nil
|
|
}
|