removed explicit "end" functions and turned them into functions returned by setup

This commit is contained in:
2025-10-04 13:32:47 -06:00
parent 3ef8d6b9a6
commit 445f50a5c0
3 changed files with 14 additions and 19 deletions
+4 -7
View File
@@ -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() {
return func() {
amdb.Close()
}, err
}
+3 -5
View File
@@ -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() {
return func() {
close(sendChan) // will break the loop in senderLoop
<-doneChan // wait for routine to complete
}
}
+4 -4
View File
@@ -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()