removed explicit "end" functions and turned them into functions returned by setup
This commit is contained in:
+5
-8
@@ -15,20 +15,17 @@ import (
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
// amdb is the reference to the Amsterdam database.
|
||||
// amdb is the reference to the Amsterdam database. Returns a function to close it down.
|
||||
var amdb *sqlx.DB
|
||||
|
||||
// SetupDb sets up the database and associated items.
|
||||
func SetupDb() error {
|
||||
func SetupDb() (func(), error) {
|
||||
db, err := sqlx.Open(config.GlobalConfig.Database.Driver, config.GlobalConfig.Database.Dsn)
|
||||
if err == nil {
|
||||
amdb = db
|
||||
// TODO: additional initialization
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
// ClosedownDb closes down the database and associated items.
|
||||
func ClosedownDb() {
|
||||
amdb.Close()
|
||||
return func() {
|
||||
amdb.Close()
|
||||
}, err
|
||||
}
|
||||
|
||||
+5
-7
@@ -186,7 +186,7 @@ var sendChan chan *amMessage
|
||||
var doneChan chan bool
|
||||
|
||||
// SetupMailSender starts the mail-sending goroutine.
|
||||
func SetupMailSender() {
|
||||
func SetupMailSender() func() {
|
||||
// Initialize mail host and authentication.
|
||||
mailHost = fmt.Sprintf("%s:%d", config.GlobalConfig.Email.Host, config.GlobalConfig.Email.Port)
|
||||
switch config.GlobalConfig.Email.AuthType {
|
||||
@@ -211,10 +211,8 @@ func SetupMailSender() {
|
||||
sendChan = make(chan *amMessage, 16)
|
||||
doneChan = make(chan bool)
|
||||
go senderLoop(sendChan, doneChan)
|
||||
}
|
||||
|
||||
// EndMailServer shuts down the mail-sending goroutine.
|
||||
func EndMailServer() {
|
||||
close(sendChan) // will break the loop in senderLoop
|
||||
<-doneChan // wait for routine to complete
|
||||
return func() {
|
||||
close(sendChan) // will break the loop in senderLoop
|
||||
<-doneChan // wait for routine to complete
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,13 +56,13 @@ func setupEcho() *echo.Echo {
|
||||
func main() {
|
||||
// Configure the system.
|
||||
config.SetupConfig()
|
||||
err := database.SetupDb()
|
||||
closer, err := database.SetupDb()
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("Database open failure: %v", err))
|
||||
}
|
||||
defer database.ClosedownDb()
|
||||
email.SetupMailSender()
|
||||
defer email.EndMailServer()
|
||||
defer closer()
|
||||
closer = email.SetupMailSender()
|
||||
defer closer()
|
||||
ui.SetupTemplates()
|
||||
ui.SetupSessionManager()
|
||||
ui.SetupLeftMenus()
|
||||
|
||||
Reference in New Issue
Block a user