mirror of
https://github.com/eduardolat/pgbackweb.git
synced 2026-01-23 21:19:31 -06:00
Add TestDatabase function to databases service
This commit is contained in:
@@ -9,6 +9,11 @@ import (
|
||||
func (s *Service) CreateDatabase(
|
||||
ctx context.Context, params dbgen.DatabasesServiceCreateDatabaseParams,
|
||||
) (dbgen.Database, error) {
|
||||
err := s.TestDatabase(ctx, params.PgVersion, params.ConnectionString)
|
||||
if err != nil {
|
||||
return dbgen.Database{}, err
|
||||
}
|
||||
|
||||
params.EncryptionKey = *s.env.PBW_ENCRYPTION_KEY
|
||||
return s.dbgen.DatabasesServiceCreateDatabase(ctx, params)
|
||||
}
|
||||
|
||||
@@ -3,16 +3,21 @@ package databases
|
||||
import (
|
||||
"github.com/eduardolat/pgbackweb/internal/config"
|
||||
"github.com/eduardolat/pgbackweb/internal/database/dbgen"
|
||||
"github.com/eduardolat/pgbackweb/internal/integration"
|
||||
)
|
||||
|
||||
type Service struct {
|
||||
env *config.Env
|
||||
dbgen *dbgen.Queries
|
||||
ints *integration.Integration
|
||||
}
|
||||
|
||||
func New(env *config.Env, dbgen *dbgen.Queries) *Service {
|
||||
func New(
|
||||
env *config.Env, dbgen *dbgen.Queries, ints *integration.Integration,
|
||||
) *Service {
|
||||
return &Service{
|
||||
env: env,
|
||||
dbgen: dbgen,
|
||||
ints: ints,
|
||||
}
|
||||
}
|
||||
|
||||
22
internal/service/databases/test_database.go
Normal file
22
internal/service/databases/test_database.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package databases
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func (s *Service) TestDatabase(
|
||||
ctx context.Context, version, connString string,
|
||||
) error {
|
||||
pgVersion, err := s.ints.PGDumpClient.ParseVersion(version)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error parsing PostgreSQL version: %w", err)
|
||||
}
|
||||
|
||||
err = s.ints.PGDumpClient.Ping(pgVersion, connString)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error pinging database: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -10,6 +10,13 @@ import (
|
||||
func (s *Service) UpdateDatabase(
|
||||
ctx context.Context, params dbgen.DatabasesServiceUpdateDatabaseParams,
|
||||
) (dbgen.Database, error) {
|
||||
err := s.TestDatabase(
|
||||
ctx, params.PgVersion.String, params.ConnectionString.String,
|
||||
)
|
||||
if err != nil {
|
||||
return dbgen.Database{}, err
|
||||
}
|
||||
|
||||
params.EncryptionKey = *s.env.PBW_ENCRYPTION_KEY
|
||||
return s.dbgen.DatabasesServiceUpdateDatabase(ctx, params)
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ func New(
|
||||
cr *cron.Cron, ints *integration.Integration,
|
||||
) *Service {
|
||||
authService := auth.New(env, dbgen)
|
||||
databasesService := databases.New(env, dbgen)
|
||||
databasesService := databases.New(env, dbgen, ints)
|
||||
destinationsService := destinations.New(env, dbgen)
|
||||
executionsService := executions.New(env, dbgen, ints)
|
||||
usersService := users.New(dbgen)
|
||||
|
||||
Reference in New Issue
Block a user