Skip to content

Commit bb2064d

Browse files
committed
feat: select database from environment variable
1 parent d9fd516 commit bb2064d

File tree

4 files changed

+31
-8
lines changed

4 files changed

+31
-8
lines changed

README.md

-2
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@ Libraries or functions that help to maintain and improve the application.
4444

4545
Databases and their functionalities.
4646

47-
No business logic should be implemented here, just simple `CRUD`.
48-
4947
## /services
5048

5149
Services that application provides.

cmd/commands.go

+27-4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ import (
1313
"github.com/barahouei/clean-architecture-telegram-bot/handlers/bot"
1414
"github.com/barahouei/clean-architecture-telegram-bot/models"
1515
"github.com/barahouei/clean-architecture-telegram-bot/pkg/logger/zap"
16+
"github.com/barahouei/clean-architecture-telegram-bot/repositories"
17+
"github.com/barahouei/clean-architecture-telegram-bot/repositories/mongodb"
18+
"github.com/barahouei/clean-architecture-telegram-bot/repositories/mysql"
1619
"github.com/barahouei/clean-architecture-telegram-bot/repositories/postgres"
1720
"github.com/urfave/cli/v2"
1821
"go.uber.org/zap/zapcore"
@@ -64,12 +67,32 @@ func serve(c *cli.Context) error {
6467

6568
ctx := context.TODO()
6669

67-
db, err := postgres.New(ctx, cfg.Postgres, logger)
68-
if err != nil {
69-
logger.Error(err)
70+
var db repositories.DB
7071

71-
return err
72+
switch cfg.App.Driver {
73+
case "postgres":
74+
db, err = postgres.New(ctx, cfg.Postgres, logger)
75+
if err != nil {
76+
logger.Error(err)
77+
78+
return err
79+
}
80+
case "mysql":
81+
db, err = mysql.New(ctx, cfg.MySQL, logger)
82+
if err != nil {
83+
logger.Error(err)
84+
85+
return err
86+
}
87+
case "mongodb":
88+
db, err = mongodb.New(ctx, cfg.MongoDB, logger)
89+
if err != nil {
90+
logger.Error(err)
91+
92+
return err
93+
}
7294
}
95+
7396
defer db.Close(ctx)
7497

7598
bot := bot.New(db, logger)

configs/.env

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
BOT_NAME=cleanBot
22
BOT_APITOKEN=something
3+
BOT_DB_DRIVER=postgres
34

45
BOT_POSTGRES_HOST=localhost
56
BOT_POSTGRES_PORT=5432

configs/config.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ type (
1717
}
1818

1919
App struct {
20-
Name string `env:"BOT_NAME,required"`
21-
Token string `env:"BOT_APITOKEN,required"`
20+
Name string `env:"BOT_NAME,required"`
21+
Token string `env:"BOT_APITOKEN,required"`
22+
Driver string `env:"BOT_DB_DRIVER,required"`
2223
}
2324

2425
Postgres struct {

0 commit comments

Comments
 (0)