DDD (Domain Design) partially implemented, added comments everywhere.

This commit is contained in:
2018-04-30 22:31:48 +05:00
parent 3456ecd312
commit 242fb3d361
20 changed files with 85 additions and 17 deletions

View File

@@ -9,17 +9,22 @@ import (
"github.com/jmoiron/sqlx"
)
// Database represents control structure for database connection.
type Database struct {
db *sqlx.DB
}
// GetDatabaseConnection returns current database connection.
func (db *Database) GetDatabaseConnection() *sqlx.DB {
return db.db
}
// Initialize initializes connection to database.
func (db *Database) Initialize() {
c.Logger.Info().Msg("Initializing database connection...")
// There might be only user, without password. MySQL/MariaDB driver
// in DSN wants "user" or "user:password", "user:" is invalid.
var userpass = ""
if c.Config.Database.Password == "" {
userpass = c.Config.Database.Username

View File

@@ -11,6 +11,7 @@ var (
d *Database
)
// New initializes database structure.
func New(cc *context.Context) {
c = cc
d = &Database{}

View File

@@ -5,12 +5,16 @@ import (
"github.com/jmoiron/sqlx"
)
// Handler is an interfaceable structure that proxifies calls from anyone
// to Database structure.
type Handler struct{}
// GetDatabaseConnection returns current database connection.
func (dbh Handler) GetDatabaseConnection() *sqlx.DB {
return d.GetDatabaseConnection()
}
// Initialize initializes connection to database.
func (dbh Handler) Initialize() {
d.Initialize()
}

View File

@@ -5,6 +5,8 @@ import (
"github.com/jmoiron/sqlx"
)
// Interface represents database interface which is available to all
// parts of application and registers with context.Context.
type Interface interface {
GetDatabaseConnection() *sqlx.DB
Initialize()

View File

@@ -13,15 +13,18 @@ var (
c *context.Context
)
// New initializes migrations.
func New(cc *context.Context) {
c = cc
}
// Migrate launching migrations.
func Migrate() {
c.Logger.Info().Msg("Migrating database...")
goose.SetDialect("mysql")
goose.AddNamedMigration("1_initial.go", InitialUp, nil)
// Add new migrations BEFORE this message.
dbConn := c.Database.GetDatabaseConnection()
err := goose.Up(dbConn.DB, ".")