Skip to content

Commit 429caef

Browse files
authored
Chore/breardon2011/token service db (#2416)
* token service own db * correct build errors * would doulbe token
1 parent b19022e commit 429caef

File tree

3 files changed

+52
-96
lines changed

3 files changed

+52
-96
lines changed

taco/cmd/token_service/main.go

Lines changed: 0 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,6 @@ import (
1616
"github.com/kelseyhightower/envconfig"
1717
"github.com/labstack/echo/v4"
1818
echomiddleware "github.com/labstack/echo/v4/middleware"
19-
"gorm.io/driver/mysql"
20-
"gorm.io/driver/postgres"
21-
"gorm.io/driver/sqlite"
22-
"gorm.io/gorm"
23-
"gorm.io/gorm/logger"
2419
)
2520

2621
// change this random number to bump version of token service: 2
@@ -106,72 +101,3 @@ func main() {
106101
log.Println("Server shutdown complete")
107102
}
108103

109-
// Database connection helpers (direct connections without QueryStore overhead)
110-
111-
func connectPostgres(cfg query.PostgresConfig) (*gorm.DB, error) {
112-
dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%d sslmode=%s",
113-
cfg.Host, cfg.User, cfg.Password, cfg.DBName, cfg.Port, cfg.SSLMode)
114-
115-
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
116-
Logger: logger.Default.LogMode(logger.Silent),
117-
PrepareStmt: true,
118-
})
119-
if err != nil {
120-
return nil, fmt.Errorf("failed to connect to postgres: %w", err)
121-
}
122-
123-
// Configure connection pool
124-
sqlDB, _ := db.DB()
125-
sqlDB.SetMaxOpenConns(cfg.MaxOpenConns)
126-
sqlDB.SetMaxIdleConns(cfg.MaxIdleConns)
127-
sqlDB.SetConnMaxLifetime(cfg.ConnMaxLifetime)
128-
sqlDB.SetConnMaxIdleTime(cfg.ConnMaxIdleTime)
129-
130-
return db, nil
131-
}
132-
133-
func connectMySQL(cfg query.MySQLConfig) (*gorm.DB, error) {
134-
dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local",
135-
cfg.User, cfg.Password, cfg.Host, cfg.Port, cfg.DBName)
136-
137-
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
138-
Logger: logger.Default.LogMode(logger.Silent),
139-
PrepareStmt: true,
140-
})
141-
if err != nil {
142-
return nil, fmt.Errorf("failed to connect to mysql: %w", err)
143-
}
144-
145-
// Configure connection pool
146-
sqlDB, _ := db.DB()
147-
sqlDB.SetMaxOpenConns(cfg.MaxOpenConns)
148-
sqlDB.SetMaxIdleConns(cfg.MaxIdleConns)
149-
sqlDB.SetConnMaxLifetime(cfg.ConnMaxLifetime)
150-
sqlDB.SetConnMaxIdleTime(cfg.ConnMaxIdleTime)
151-
152-
return db, nil
153-
}
154-
155-
func connectSQLite(cfg query.SQLiteConfig) (*gorm.DB, error) {
156-
dsn := fmt.Sprintf("%s?cache=%s&_busy_timeout=%d&_journal_mode=%s&_foreign_keys=%s",
157-
cfg.Path, cfg.Cache, int(cfg.BusyTimeout.Milliseconds()),
158-
cfg.PragmaJournalMode, cfg.PragmaForeignKeys)
159-
160-
db, err := gorm.Open(sqlite.Open(dsn), &gorm.Config{
161-
Logger: logger.Default.LogMode(logger.Silent),
162-
PrepareStmt: true,
163-
})
164-
if err != nil {
165-
return nil, fmt.Errorf("failed to connect to sqlite: %w", err)
166-
}
167-
168-
// Configure connection pool for SQLite
169-
sqlDB, _ := db.DB()
170-
sqlDB.SetMaxOpenConns(cfg.MaxOpenConns)
171-
sqlDB.SetMaxIdleConns(cfg.MaxIdleConns)
172-
sqlDB.SetConnMaxLifetime(cfg.ConnMaxLifetime)
173-
sqlDB.SetConnMaxIdleTime(cfg.ConnMaxIdleTime)
174-
175-
return db, nil
176-
}
177-

taco/cmd/token_service/query/config.go

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ import "time"
44

55
// Config holds database configuration for the token service
66
type Config struct {
7-
Backend string `envconfig:"TOKEN_QUERY_BACKEND" default:"sqlite"`
8-
SQLite SQLiteConfig `envconfig:"TOKEN_SQLITE"`
9-
Postgres PostgresConfig `envconfig:"TOKEN_POSTGRES"`
10-
MSSQL MSSQLConfig `envconfig:"TOKEN_MSSQL"`
11-
MySQL MySQLConfig `envconfig:"TOKEN_MYSQL"`
7+
Backend string `envconfig:"QUERY_BACKEND" default:"sqlite"`
8+
SQLite SQLiteConfig `envconfig:"SQLITE"`
9+
Postgres PostgresConfig `envconfig:"POSTGRES"`
10+
MSSQL MSSQLConfig `envconfig:"MSSQL"`
11+
MySQL MySQLConfig `envconfig:"MYSQL"`
1212
}
1313

1414
type SQLiteConfig struct {
@@ -23,28 +23,34 @@ type SQLiteConfig struct {
2323
}
2424

2525
type PostgresConfig struct {
26-
Host string `envconfig:"HOST" default:"localhost"`
27-
Port int `envconfig:"PORT" default:"5432"`
28-
User string `envconfig:"USER" default:"postgres"`
29-
Password string `envconfig:"PASSWORD"`
30-
DBName string `envconfig:"DBNAME" default:"token_service"`
31-
SSLMode string `envconfig:"SSLMODE" default:"disable"`
26+
Host string `envconfig:"HOST" default:"localhost"`
27+
Port int `envconfig:"PORT" default:"5432"`
28+
User string `envconfig:"USER" default:"postgres"`
29+
Password string `envconfig:"PASSWORD"`
30+
DBName string `envconfig:"DBNAME" default:"token_service"`
31+
SSLMode string `envconfig:"SSLMODE" default:"disable"`
32+
MaxOpenConns int `envconfig:"MAX_OPEN_CONNS" default:"25"`
33+
MaxIdleConns int `envconfig:"MAX_IDLE_CONNS" default:"10"`
3234
}
3335

3436
type MSSQLConfig struct {
35-
Host string `envconfig:"HOST" default:"localhost"`
36-
Port int `envconfig:"PORT" default:"1433"`
37-
User string `envconfig:"USER"`
38-
Password string `envconfig:"PASSWORD"`
39-
DBName string `envconfig:"DBNAME" default:"token_service"`
37+
Host string `envconfig:"HOST" default:"localhost"`
38+
Port int `envconfig:"PORT" default:"1433"`
39+
User string `envconfig:"USER"`
40+
Password string `envconfig:"PASSWORD"`
41+
DBName string `envconfig:"DBNAME" default:"token_service"`
42+
MaxOpenConns int `envconfig:"MAX_OPEN_CONNS" default:"25"`
43+
MaxIdleConns int `envconfig:"MAX_IDLE_CONNS" default:"10"`
4044
}
4145

4246
type MySQLConfig struct {
43-
Host string `envconfig:"HOST" default:"localhost"`
44-
Port int `envconfig:"PORT" default:"3306"`
45-
User string `envconfig:"USER" default:"root"`
46-
Password string `envconfig:"PASSWORD"`
47-
DBName string `envconfig:"DBNAME" default:"token_service"`
48-
Charset string `envconfig:"CHARSET" default:"utf8mb4"`
47+
Host string `envconfig:"HOST" default:"localhost"`
48+
Port int `envconfig:"PORT" default:"3306"`
49+
User string `envconfig:"USER" default:"root"`
50+
Password string `envconfig:"PASSWORD"`
51+
DBName string `envconfig:"DBNAME" default:"token_service"`
52+
Charset string `envconfig:"CHARSET" default:"utf8mb4"`
53+
MaxOpenConns int `envconfig:"MAX_OPEN_CONNS" default:"25"`
54+
MaxIdleConns int `envconfig:"MAX_IDLE_CONNS" default:"10"`
4955
}
5056

taco/cmd/token_service/query/factory.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,14 @@ func NewDB(cfg Config) (*gorm.DB, error) {
5656
return nil, fmt.Errorf("failed to connect to postgres: %w", err)
5757
}
5858

59+
// Configure connection pool
60+
sqlDB, err := db.DB()
61+
if err != nil {
62+
return nil, fmt.Errorf("get underlying sql.DB: %w", err)
63+
}
64+
sqlDB.SetMaxOpenConns(cfg.Postgres.MaxOpenConns)
65+
sqlDB.SetMaxIdleConns(cfg.Postgres.MaxIdleConns)
66+
5967
case "mysql":
6068
dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=True&loc=Local",
6169
cfg.MySQL.User, cfg.MySQL.Password, cfg.MySQL.Host,
@@ -65,6 +73,14 @@ func NewDB(cfg Config) (*gorm.DB, error) {
6573
return nil, fmt.Errorf("failed to connect to mysql: %w", err)
6674
}
6775

76+
// Configure connection pool
77+
sqlDB, err := db.DB()
78+
if err != nil {
79+
return nil, fmt.Errorf("get underlying sql.DB: %w", err)
80+
}
81+
sqlDB.SetMaxOpenConns(cfg.MySQL.MaxOpenConns)
82+
sqlDB.SetMaxIdleConns(cfg.MySQL.MaxIdleConns)
83+
6884
case "mssql":
6985
dsn := fmt.Sprintf("sqlserver://%s:%s@%s:%d?database=%s",
7086
cfg.MSSQL.User, cfg.MSSQL.Password, cfg.MSSQL.Host,
@@ -74,6 +90,14 @@ func NewDB(cfg Config) (*gorm.DB, error) {
7490
return nil, fmt.Errorf("failed to connect to mssql: %w", err)
7591
}
7692

93+
// Configure connection pool
94+
sqlDB, err := db.DB()
95+
if err != nil {
96+
return nil, fmt.Errorf("get underlying sql.DB: %w", err)
97+
}
98+
sqlDB.SetMaxOpenConns(cfg.MSSQL.MaxOpenConns)
99+
sqlDB.SetMaxIdleConns(cfg.MSSQL.MaxIdleConns)
100+
77101
default:
78102
return nil, fmt.Errorf("unsupported database backend: %s", cfg.Backend)
79103
}

0 commit comments

Comments
 (0)