reprogl

Форк
0
/
database.go 
57 строк · 919.0 Байт
1
package container
2

3
import (
4
	"database/sql"
5
	"log"
6
	"time"
7

8
	"github.com/doug-martin/goqu/v9"
9
	_ "github.com/doug-martin/goqu/v9/dialect/mysql"
10
	_ "github.com/go-sql-driver/mysql"
11
)
12

13
func (app *Application) SetupDatabase() error {
14
	db, err := getDBConnection(app.InfoLog)
15
	if err != nil {
16
		return err
17
	}
18

19
	app.DB = db
20
	goqu.SetTimeLocation(time.Local)
21

22
	return nil
23
}
24

25
func getDBConnection(logger *log.Logger) (db *sql.DB, err error) {
26
	var i int
27

28
	for i < 5 {
29
		logger.Print("Trying to connect to the database")
30
		db, err = openDB(cnf.DatabaseDSN)
31
		if err == nil {
32
			logger.Print("The database is connected")
33

34
			return
35
		} else {
36
			logger.Print(err)
37
		}
38

39
		i++
40
		time.Sleep(1000 * time.Millisecond)
41
	}
42

43
	return nil, err
44
}
45

46
func openDB(dsn string) (*sql.DB, error) {
47
	db, err := sql.Open("mysql", dsn)
48
	if err != nil {
49
		return nil, err
50
	}
51

52
	if err = db.Ping(); err != nil {
53
		return nil, err
54
	}
55

56
	return db, nil
57
}
58

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.