Added support for profiling. Removed the pkg module altogether. Everything except old sync is now using code generated by sqlc.
104 lines
2.5 KiB
Go
104 lines
2.5 KiB
Go
package database
|
|
|
|
import (
|
|
"fmt"
|
|
"music-server/internal/db"
|
|
"os"
|
|
"time"
|
|
)
|
|
|
|
type gameData struct {
|
|
Id int
|
|
GameName string
|
|
Added time.Time
|
|
Deleted time.Time
|
|
LastChanged time.Time
|
|
Path string
|
|
TimesPlayed int
|
|
LastPlayed time.Time
|
|
NumberOfSongs int32
|
|
}
|
|
|
|
func GetGameName(gameId int) string {
|
|
var gameName = ""
|
|
err := db.Dbpool.QueryRow(db.Ctx,
|
|
"SELECT game_name FROM game WHERE id = $1", gameId).Scan(&gameName)
|
|
if err != nil {
|
|
if compareError.Error() != err.Error() {
|
|
_, _ = fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", err)
|
|
}
|
|
return ""
|
|
}
|
|
return gameName
|
|
}
|
|
|
|
func SetGameDeletionDate() {
|
|
_, err := db.Dbpool.Exec(db.Ctx,
|
|
"UPDATE game SET deleted=$1 WHERE deleted IS NULL", time.Now())
|
|
if err != nil {
|
|
_, _ = fmt.Fprintf(os.Stderr, "Exec failed: %v\n", err)
|
|
}
|
|
}
|
|
|
|
func UpdateGameName(id int, name string, path string) {
|
|
_, err := db.Dbpool.Exec(db.Ctx,
|
|
"UPDATE game SET game_name=$1, path=$2, last_changed=$3 WHERE id=$4",
|
|
name, path, time.Now(), id)
|
|
if err != nil {
|
|
_, _ = fmt.Fprintf(os.Stderr, "Exec failed: %v\n", err)
|
|
}
|
|
}
|
|
|
|
func RemoveDeletionDate(id int) {
|
|
_, err := db.Dbpool.Exec(db.Ctx,
|
|
"UPDATE game SET deleted=null WHERE id=$1", id)
|
|
if err != nil {
|
|
_, _ = fmt.Fprintf(os.Stderr, "Exec failed: %v\n", err)
|
|
}
|
|
}
|
|
|
|
func GetIdByGameName(name string) int {
|
|
var gameId = -1
|
|
err := db.Dbpool.QueryRow(db.Ctx,
|
|
"SELECT id FROM game WHERE game_name = $1", name).Scan(&gameId)
|
|
if err != nil {
|
|
if compareError.Error() != err.Error() {
|
|
_, _ = fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", err)
|
|
}
|
|
return -1
|
|
}
|
|
return gameId
|
|
}
|
|
|
|
func InsertGame(name string, path string) int {
|
|
gameId := -1
|
|
err := db.Dbpool.QueryRow(db.Ctx,
|
|
"INSERT INTO game(game_name, path, added) VALUES ($1, $2, $3) RETURNING id",
|
|
name, path, time.Now()).Scan(&gameId)
|
|
if err != nil {
|
|
if compareError.Error() != err.Error() {
|
|
_, _ = fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", err)
|
|
}
|
|
db.ResetGameIdSeq()
|
|
err2 := db.Dbpool.QueryRow(db.Ctx,
|
|
"INSERT INTO game(game_name, path, added) VALUES ($1, $2, $3) RETURNING id",
|
|
name, path, time.Now()).Scan(&gameId)
|
|
if err2 != nil {
|
|
if compareError.Error() != err2.Error() {
|
|
_, _ = fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", err)
|
|
}
|
|
return -1
|
|
}
|
|
}
|
|
return gameId
|
|
}
|
|
|
|
func InsertGameWithExistingId(id int, name string, path string) {
|
|
_, err := db.Dbpool.Exec(db.Ctx,
|
|
"INSERT INTO game(id, game_name, path, added) VALUES ($1, $2, $3, $4)",
|
|
id, name, path, time.Now())
|
|
if err != nil {
|
|
_, _ = fmt.Fprintf(os.Stderr, "Exec failed: %v\n", err)
|
|
}
|
|
}
|