Quick and dirty fix to get database connection reestablish if connection was lost.
This commit is contained in:
parent
fc8f4e9d8b
commit
400ce0db0c
@ -42,12 +42,23 @@ type Database struct {
|
|||||||
db *sqlx.DB
|
db *sqlx.DB
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Checks if queries can be run on known connection and reestablish it
|
||||||
|
// if not.
|
||||||
|
func (db *Database) check() {
|
||||||
|
_, err := db.db.Exec("SELECT 1")
|
||||||
|
if err != nil {
|
||||||
|
db.Initialize()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (db *Database) GetDatabaseConnection() *sql.DB {
|
func (db *Database) GetDatabaseConnection() *sql.DB {
|
||||||
|
db.check()
|
||||||
return db.db.DB
|
return db.db.DB
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPaste returns a single paste by ID.
|
// GetPaste returns a single paste by ID.
|
||||||
func (db *Database) GetPaste(pasteID int) (*pastesmodel.Paste, error) {
|
func (db *Database) GetPaste(pasteID int) (*pastesmodel.Paste, error) {
|
||||||
|
db.check()
|
||||||
p := &pastesmodel.Paste{}
|
p := &pastesmodel.Paste{}
|
||||||
err := db.db.Get(p, db.db.Rebind("SELECT * FROM `pastes` WHERE id=?"), pasteID)
|
err := db.db.Get(p, db.db.Rebind("SELECT * FROM `pastes` WHERE id=?"), pasteID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -58,6 +69,7 @@ func (db *Database) GetPaste(pasteID int) (*pastesmodel.Paste, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (db *Database) GetPagedPastes(page int) ([]pastesmodel.Paste, error) {
|
func (db *Database) GetPagedPastes(page int) ([]pastesmodel.Paste, error) {
|
||||||
|
db.check()
|
||||||
var pastesRaw []pastesmodel.Paste
|
var pastesRaw []pastesmodel.Paste
|
||||||
var pastes []pastesmodel.Paste
|
var pastes []pastesmodel.Paste
|
||||||
|
|
||||||
@ -82,6 +94,7 @@ func (db *Database) GetPagedPastes(page int) ([]pastesmodel.Paste, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (db *Database) GetPastesPages() int {
|
func (db *Database) GetPastesPages() int {
|
||||||
|
db.check()
|
||||||
var pastesRaw []pastesmodel.Paste
|
var pastesRaw []pastesmodel.Paste
|
||||||
var pastes []pastesmodel.Paste
|
var pastes []pastesmodel.Paste
|
||||||
err := db.db.Get(&pastesRaw, "SELECT * FROM `pastes` WHERE private != true")
|
err := db.db.Get(&pastesRaw, "SELECT * FROM `pastes` WHERE private != true")
|
||||||
@ -135,6 +148,7 @@ func (db *Database) Initialize() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (db *Database) SavePaste(p *pastesmodel.Paste) (int64, error) {
|
func (db *Database) SavePaste(p *pastesmodel.Paste) (int64, error) {
|
||||||
|
db.check()
|
||||||
result, err := db.db.NamedExec("INSERT INTO `pastes` (title, data, created_at, keep_for, keep_for_unit_type, language, private, password, password_salt) VALUES (:title, :data, :created_at, :keep_for, :keep_for_unit_type, :language, :private, :password, :password_salt)", p)
|
result, err := db.db.NamedExec("INSERT INTO `pastes` (title, data, created_at, keep_for, keep_for_unit_type, language, private, password, password_salt) VALUES (:title, :data, :created_at, :keep_for, :keep_for_unit_type, :language, :private, :password, :password_salt)", p)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
|
Loading…
Reference in New Issue
Block a user