diff --git a/docs/docu.md b/docs/docu.md index 71c4ca3..8ce10df 100644 --- a/docs/docu.md +++ b/docs/docu.md @@ -116,6 +116,18 @@ Labels are used to control each containers backup. `db-backup-runner.dump_args = ` : Additional arguments for the `dump` command. +`db-backup-runner.user = ` +: Database user for, default from `env` variables. + +`db-backup-runner.database = ` +: Database name for, default from `env` variables. + +`db-backup-runner.restore_binary = ` +: If the default command doesn't work. + +`db-backup-runner.restore_args = ` +: Additional arguments for the `restore` command. + `db-backup-runner.min_file_size = ` : A sanity check is done for the file size, this can be changed per container (default: 200) diff --git a/src/db_backup_runner/provider/_postgres.py b/src/db_backup_runner/provider/_postgres.py index 6aaaf22..0dc590d 100755 --- a/src/db_backup_runner/provider/_postgres.py +++ b/src/db_backup_runner/provider/_postgres.py @@ -1,6 +1,3 @@ -import click - - from db_backup_runner.provider import BackupProviderBase @@ -10,7 +7,7 @@ class PostgresBackupProvider(BackupProviderBase): name = "postgres" default_dump_binary = "pg_dump" # default_dump_binary = "pg_dumpall" - default_dump_args = "-Fc -U USER" + default_dump_args = "-Fc -U USER DATABASE" default_restore_binary = "pg_restore" default_restore_args = "-Fc -U USER -d DATABASE" plain_file_extension = ".dump" @@ -18,18 +15,28 @@ class PostgresBackupProvider(BackupProviderBase): def dump(self) -> str: """Overwrite dump method with custom postgres dump""" env = self.get_container_env() - user = env.get("POSTGRES_USER") or "postgres" + user = self.get_container_label("user", env.get("POSTGRES_USER") or "postgres") + assert user is not None + database_env = ( + env.get("POSTGRES_DATABASE", env.get("POSTGRES_DB")) or "postgres" + ) + database = self.get_container_label("database", database_env) + assert database is not None - return f"{self.get_dump_binary()} {self.get_dump_args()}".replace("USER", user) + return f"{self.get_dump_binary()} {self.get_dump_args()}".replace( + "USER", user + ).replace("DATABASE", database) def get_restore_args(self) -> str: """Overwrite restore args with custom postgres arguments""" env = self.get_container_env() - user = env.get("POSTGRES_USER") or "postgres" - # TODO get database from label or argument - database = env.get("POSTGRES_DATABASE") or click.style( - "DATABASE", fg="green", bold=True + user = self.get_container_label("user", env.get("POSTGRES_USER") or "postgres") + assert user is not None + database_env = ( + env.get("POSTGRES_DATABASE", env.get("POSTGRES_DB")) or "postgres" ) + database = self.get_container_label("database", database_env) + assert database is not None return ( (self.get_container_label("restore_args", self.default_restore_args) or "") .replace("USER", user)