Documentation
¶
Index ¶
- Variables
- func WithInstance(instance *sql.DB, config *Config) (database.Driver, error)
- type Config
- type Postgres
- func (p *Postgres) Close() error
- func (p *Postgres) Drop() (err error)
- func (p *Postgres) IsDatabaseDirty() (int, bool, error)
- func (p *Postgres) Lock() error
- func (p *Postgres) Open(url string) (database.Driver, error)
- func (p *Postgres) Run(migration io.Reader) error
- func (p *Postgres) SetVersion(version int, dirty bool) error
- func (p *Postgres) Unlock() error
- func (p *Postgres) Version() (version int, dirty bool, err error)
- type PostgresExtras
- func (p *PostgresExtras) AddDirtyMigration(version uint) error
- func (p *PostgresExtras) GetAllAppliedMigrations() ([]int, error)
- func (p *PostgresExtras) IsMigrationApplied(version uint) (bool, error)
- func (p *PostgresExtras) RemoveMigration(version uint) error
- func (p *PostgresExtras) UpdateMigrationDirtyFlag(version uint, dirty bool) error
Constants ¶
This section is empty.
Variables ¶
var ( DefaultMigrationsTable = "schema_migrations" DefaultMultiStatementMaxSize = 10 * 1 << 20 // 10 MB )
Functions ¶
Types ¶
type Postgres ¶
type Postgres struct {
// contains filtered or unexported fields
}
func (*Postgres) IsDatabaseDirty ¶
IsDatabaseDirty checks if the database's migrations table contains any "dirty" (in-progress or failed) migrations. It queries the migrations table for any entry where the dirty flag is set to true. If a dirty migration is found, it returns its migration_timestamp and true. If no dirty migrations are found, or if the migrations table itself doesn't exist (e.g., first run), it returns 0 and false. Any other database errors are wrapped and returned.
type PostgresExtras ¶
type PostgresExtras struct {
*Postgres
}
func WithConnection ¶
WithConnection initializes a new PostgresExtras instance using an existing, active sql.Conn and a Config struct. It ensures the connection is valid and, if not explicitly provided in the config, it automatically fetches the current database name and schema name from the connection. It also sets default values for the migrations table if none are specified and correctly parses quoted table names. Finally, it verifies the existence and readiness of the migrations version table in the database before returning the initialized PostgresExtras object.
func (*PostgresExtras) AddDirtyMigration ¶
func (p *PostgresExtras) AddDirtyMigration(version uint) error
AddDirtyMigration marks a specific migration version as "dirty" or "in-progress" in the database's migrations table. It does this by inserting a new record with the provided version into the table within a database transaction. If the insertion fails or the transaction cannot be committed, it attempts to roll back the transaction and returns a detailed error.
func (*PostgresExtras) GetAllAppliedMigrations ¶
func (p *PostgresExtras) GetAllAppliedMigrations() ([]int, error)
GetAllAppliedMigrations retrieves a list of all applied migration timestamps from the migrations table in the database. It constructs a SQL query to select migration_timestamp values, orders them in descending order, and executes the query against the database. The function then scans the results into a slice of integers and handles any potential database errors, including proper closing of the result rows.
func (*PostgresExtras) IsMigrationApplied ¶
func (p *PostgresExtras) IsMigrationApplied(version uint) (bool, error)
IsMigrationApplied checks if a specific migration version has already been applied by querying the migrations table. It returns true if the migration is found, false if not found or if the table doesn't exist. It wraps other unexpected errors in a custom database.Error.
func (*PostgresExtras) RemoveMigration ¶
func (p *PostgresExtras) RemoveMigration(version uint) error
RemoveMigration deletes a specific migration version from the database's migrations table. It constructs and executes a SQL DELETE statement based on the provided version within a database transaction. The function includes comprehensive error handling for transaction management, ensuring that any failures during the deletion process are properly rolled back and reported.
func (*PostgresExtras) UpdateMigrationDirtyFlag ¶
func (p *PostgresExtras) UpdateMigrationDirtyFlag(version uint, dirty bool) error
UpdateMigrationDirtyFlag updates the dirty status and applied_at timestamp for a specific migration version in the database's migrations table. It sets the dirty flag to true or false based on the provided boolean value and records the current timestamp. The operation is performed within a database transaction, with robust error handling for transaction start, execution, and commit/rollback.