package db import ( "context" "fmt" "github.com/jackc/pgx/v5" "os" ) var pool *pgx.Conn func InitDB(host string, port int, user string, password string, dbname string) { psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+ "password=%s dbname=%s sslmode=disable", host, port, user, password, dbname) fmt.Println(psqlInfo) var err error pool, err = pgx.Connect(context.Background(), psqlInfo) if err != nil { _, _ = fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err) os.Exit(1) } var success string err = pool.QueryRow(context.Background(), "select 'Successfully connected!'").Scan(&success) if err != nil { _, _ = fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", err) os.Exit(1) } Testf() fmt.Println(success) } func CloseDb() { err := pool.Close(context.Background()) if err != nil { return } } func Testf() { rows, dbErr := pool.Query(context.Background(), "select game_name from game") if dbErr != nil { _, _ = fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", dbErr) os.Exit(1) } for rows.Next() { var gameName string dbErr = rows.Scan(&gameName) if dbErr != nil { _, _ = fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", dbErr) } _, _ = fmt.Fprintf(os.Stderr, "%v\n", gameName) } } func resetGameIdSeq() { _, err := pool.Query(context.Background(), "SELECT setval('game_id_seq', (SELECT MAX(id) FROM game)+1);") if err != nil { _, _ = fmt.Fprintf(os.Stderr, "Exec failed: %v\n", err) } }