From f7fe237fcf3a8783ae04328e5b930e16b381b53f Mon Sep 17 00:00:00 2001 From: Pavel Botsman <11509664+botsman@users.noreply.github.com> Date: Wed, 24 Sep 2025 10:36:00 +0300 Subject: [PATCH] refactor init functions --- server/run.go | 10 ++++++---- server/sqlite/db.go | 2 +- tools/certdb/mongo.go | 23 +++++++++-------------- tools/certdb/run.go | 7 +++---- tools/certdb/sqlite.go | 2 +- tools/tppdb/mongo.go | 23 +++++++++-------------- tools/tppdb/run.go | 8 ++++---- 7 files changed, 33 insertions(+), 42 deletions(-) diff --git a/server/run.go b/server/run.go index 05ce231..9a801f1 100644 --- a/server/run.go +++ b/server/run.go @@ -4,21 +4,23 @@ import ( "context" "log" "net/http" + "os" "github.com/botsman/tppVerifier/app" "github.com/botsman/tppVerifier/app/cert" "github.com/botsman/tppVerifier/app/verify" - // "github.com/botsman/tppVerifier/server/mongo" - "github.com/botsman/tppVerifier/server/sqlite" + "github.com/botsman/tppVerifier/server/mongo" + // "github.com/botsman/tppVerifier/server/sqlite" ) func main() { ctx := context.Background() + connStr := os.Getenv("DATABASE_URL") // Uncomment the backend you want to use: - // repo, err := mongo.NewMongoRepo(ctx, "mongodb://localhost:27017/tppVerifier") - repo, err := sqlite.NewSQLiteRepo("../data/sqlite.db") + repo, err := mongo.NewMongoRepo(ctx, connStr) + // repo, err := sqlite.NewSQLiteRepo(ctx, connStr) if err != nil { log.Fatalf("Failed to initialize repository: %v", err) } diff --git a/server/sqlite/db.go b/server/sqlite/db.go index 6faf5d1..499d752 100644 --- a/server/sqlite/db.go +++ b/server/sqlite/db.go @@ -12,7 +12,7 @@ import ( ) // NewSQLiteRepo creates a TppRepository backed by SQLite, using the given database file path. -func NewSQLiteRepo(path string) (db.TppRepository, error) { +func NewSQLiteRepo(_ context.Context, path string) (db.TppRepository, error) { dbConn, err := sql.Open("sqlite3", path) if err != nil { return nil, err diff --git a/tools/certdb/mongo.go b/tools/certdb/mongo.go index 15af604..87bec2b 100644 --- a/tools/certdb/mongo.go +++ b/tools/certdb/mongo.go @@ -5,8 +5,6 @@ import ( "github.com/botsman/tppVerifier/app/cert" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" - "log" - "os" "time" ) @@ -15,27 +13,24 @@ type MongoCertDb struct { Database *mongo.Database } -func setupMongoCertDb() (*MongoCertDb, error) { - mongoURI := os.Getenv("MONGO_URL") - if mongoURI == "" { - mongoURI = "mongodb://localhost:27017" - } - clientOptions := options.Client().ApplyURI(mongoURI) - - client, err := mongo.Connect(context.TODO(), clientOptions) +func setupMongoCertDb(ctx context.Context, connStr string) (*MongoCertDb, error) { + opts := options.Client().ApplyURI(connStr) + client, err := mongo.Connect(ctx, opts) if err != nil { - log.Fatal(err) return nil, err } - err = client.Ping(context.TODO(), nil) + err = client.Ping(ctx, nil) if err != nil { - log.Fatal(err) return nil, err } + db := client.Database(opts.Auth.AuthSource) + if db == nil { + db = client.Database("tppVerifier") + } return &MongoCertDb{ Client: client, - Database: client.Database("tppVerifier"), + Database: db, }, nil } diff --git a/tools/certdb/run.go b/tools/certdb/run.go index 1e4e413..48640d3 100644 --- a/tools/certdb/run.go +++ b/tools/certdb/run.go @@ -7,11 +7,10 @@ import ( "time" ) -func Run() error { - ctx := context.Background() +func Run(ctx context.Context, connStr string) error { // Choose DB implementation here (Mongo or SQLite) - db, err := setupMongoCertDb() - // db, err := setupSqliteCertDb("data/sqlite.db") + db, err := setupMongoCertDb(ctx, connStr) + // db, err := setupSqliteCertDb(ctx, connStr) if err != nil { return fmt.Errorf("DB setup failed: %w", err) } diff --git a/tools/certdb/sqlite.go b/tools/certdb/sqlite.go index 61d5108..28a232d 100644 --- a/tools/certdb/sqlite.go +++ b/tools/certdb/sqlite.go @@ -12,7 +12,7 @@ type SqliteCertDb struct { DB *sql.DB } -func setupSqliteCertDb(path string) (*SqliteCertDb, error) { +func setupSqliteCertDb(_ context.Context, path string) (*SqliteCertDb, error) { db, err := sql.Open("sqlite3", path) if err != nil { return nil, err diff --git a/tools/tppdb/mongo.go b/tools/tppdb/mongo.go index 28cc0bc..96e5e4b 100644 --- a/tools/tppdb/mongo.go +++ b/tools/tppdb/mongo.go @@ -2,8 +2,6 @@ package tppdb import ( "context" - "log" - "os" "github.com/botsman/tppVerifier/app/models" "go.mongodb.org/mongo-driver/bson" @@ -16,27 +14,24 @@ type MongoDb struct { Database *mongo.Database } -func setupMongoDb() (*MongoDb, error) { - mongoURI := os.Getenv("MONGO_URL") - if mongoURI == "" { - mongoURI = "mongodb://localhost:27017" - } - clientOptions := options.Client().ApplyURI(mongoURI) - - client, err := mongo.Connect(context.TODO(), clientOptions) +func setupMongoDb(ctx context.Context, connStr string) (*MongoDb, error) { + opts := options.Client().ApplyURI(connStr) + client, err := mongo.Connect(ctx, opts) if err != nil { - log.Fatal(err) return nil, err } - err = client.Ping(context.TODO(), nil) + err = client.Ping(ctx, nil) if err != nil { - log.Fatal(err) return nil, err } + db := client.Database(opts.Auth.AuthSource) + if db == nil { + db = client.Database("tppVerifier") + } return &MongoDb{ Client: client, - Database: client.Database("tppVerifier"), + Database: db, }, nil } diff --git a/tools/tppdb/run.go b/tools/tppdb/run.go index 07a152e..9ed07c6 100644 --- a/tools/tppdb/run.go +++ b/tools/tppdb/run.go @@ -11,7 +11,7 @@ type db interface { Disconnect(ctx context.Context) error } -func Run() error { +func Run(ctx context.Context, connStr string) error { // Download and parse the registry // populate DB // 1. Download metadata at https://euclid.eba.europa.eu/register/api/filemetadata?t=1737374419184 @@ -27,11 +27,11 @@ func Run() error { if err != nil { return err } - client, err := setupMongoDb() - // client, err := setupSqliteDb("data/sqlite.db") + client, err := setupMongoDb(ctx, connStr) + // client, err := setupSqliteDb(ctx, connStr) if err != nil { return err } - defer client.Disconnect(context.TODO()) + defer client.Disconnect(ctx) return saveTPPs(client, tppChan) }