Files
go-synapse-backupper/pkg/domain/pgdump/dumper.go
T

51 lines
1.1 KiB
Go

package pgdump
import (
"context"
"fmt"
"io"
)
// Options holds configuration for the pg_dump invocation.
type Options struct {
Host string
Port int
Database string
User string
Password string
Key string
ExcludeTables []string
}
// Dumper defines the contract for executing pg_dump.
type Dumper interface {
Dump(
ctx context.Context,
opts Options,
sink io.Writer,
) error
}
// pgDumpFailedError is returned when pg_dump exits with a non-zero status.
type pgDumpFailedError struct {
exitCode int
}
func (e *pgDumpFailedError) Error() string {
return fmt.Sprintf("pg_dump failed with exit code %d", e.exitCode)
}
// Is reports whether target is a pgDumpFailedError with the same exit code.
func (e *pgDumpFailedError) Is(target error) bool {
other, ok := target.(*pgDumpFailedError)
if !ok {
return false
}
return e.exitCode == other.exitCode
}
// ErrPgDumpFailed creates a new pg_dump failed error with the given exit code.
func ErrPgDumpFailed(exitCode int) error {
return &pgDumpFailedError{exitCode: exitCode}
}