From 61de04338e1aa59bfb5d5def9ab1d83fd69fdc92 Mon Sep 17 00:00:00 2001
From: Matt Baer <matt@write.as>
Date: Sun, 2 Dec 2018 17:21:43 -0500
Subject: [PATCH] Extract out common DB connection logic

T529
---
 app.go | 24 ++++++++++--------------
 1 file changed, 10 insertions(+), 14 deletions(-)

diff --git a/app.go b/app.go
index 497d4ca..359ab2d 100644
--- a/app.go
+++ b/app.go
@@ -438,26 +438,22 @@ func Serve() {
 func connectToDatabase(app *app) {
 	log.Info("Connecting to %s database...", app.cfg.Database.Type)
 
+	var db *sql.DB
+	var err error
 	if app.cfg.Database.Type == "mysql" {
-		db, err := sql.Open(app.cfg.Database.Type, fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=true&loc=%s", app.cfg.Database.User, app.cfg.Database.Password, app.cfg.Database.Host, app.cfg.Database.Port, app.cfg.Database.Database, url.QueryEscape(time.Local.String())))
-		if err != nil {
-			log.Error("%s", err)
-			os.Exit(1)
-		}
-		app.db = &datastore{db, "mysql"}
-		app.db.SetMaxOpenConns(50)
+		db, err = sql.Open(app.cfg.Database.Type, fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=true&loc=%s", app.cfg.Database.User, app.cfg.Database.Password, app.cfg.Database.Host, app.cfg.Database.Port, app.cfg.Database.Database, url.QueryEscape(time.Local.String())))
 	} else if app.cfg.Database.Type == "sqlite3" {
-		db, err := sql.Open("sqlite3", "./writefreely.db?parseTime=true")
-		if err != nil {
-			log.Error("%s", err)
-			os.Exit(1)
-		}
-		app.db = &datastore{db, "sqlite3"}
-		app.db.SetMaxOpenConns(50)
+		db, err = sql.Open("sqlite3", "./writefreely.db?parseTime=true")
 	} else {
 		log.Error("Invalid database type '%s'. Only 'mysql' and 'sqlite3' are supported right now.", app.cfg.Database.Type)
 		os.Exit(1)
 	}
+	if err != nil {
+		log.Error("%s", err)
+		os.Exit(1)
+	}
+	app.db = &datastore{db, app.cfg.Database.Type}
+	app.db.SetMaxOpenConns(50)
 }
 
 func shutdown(app *app) {