Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Database ¶
type Database interface { Queriable Begin() (*sql.Tx, error) BeginTx(ctx context.Context, opts *sql.TxOptions) (*sql.Tx, error) }
Database abstract the database connection
type Queriable ¶
type Queriable interface { Exec(query string, args ...any) (sql.Result, error) ExecContext(ctx context.Context, query string, args ...any) (sql.Result, error) Prepare(query string) (*sql.Stmt, error) PrepareContext(ctx context.Context, query string) (*sql.Stmt, error) Query(query string, args ...any) (*sql.Rows, error) QueryContext(ctx context.Context, query string, args ...any) (*sql.Rows, error) QueryRow(query string, args ...any) *sql.Row QueryRowContext(ctx context.Context, query string, args ...any) *sql.Row }
Queriable abstract the either database or transaction
type Repository ¶
type Repository interface { // GetLatestMigration retrieves the highest successfully executed migration version // from the schema history table. If the schema history table does not exist, it returns 0. // Returns an error if there is an issue querying the database. GetLatestMigration() (uint16, error) // AssertSchemaHistoryTable ensures that the schema history table exists. // If it does not exist, the method creates it. // Returns an error if there is an issue creating the table. AssertSchemaHistoryTable() error // CheckSchemaHistoryTable verifies whether the schema history table exists in the database. // Returns true if the table exists, false otherwise. // Returns an error if there is an issue querying the database. CheckSchemaHistoryTable() (bool, error) // ValidateMigrations compares the versions of the provided migrations with their respective // checksums stored in the schema history table. If a mismatch is found or if a migration // version is missing from the table, an error is returned. // Returns a slice of errors if there are validation issues. ValidateMigrations(migrations []*migrations.Migration) []error // ExecuteMigration applies the specified UP migration to the database. // If the migration is already recorded in the schema history table, its status is updated. // If the migration fails, it is marked as unsuccessful in the schema history table. // Returns a slice of errors if there are issues executing the migration. ExecuteMigration(migration *migrations.Migration) []error // ExecuteHook runs the specified hook script. This method is used for executing hooks such // as before/after migration scripts. // Returns an error if there is an issue executing the hook. ExecuteHook(hook *migrations.Hook) error // RollbackMigration executes the specified DOWN migration to revert changes made by a previous // migration. After successful execution, the corresponding version is removed from the schema // history table. // Returns an error if there is an issue executing the rollback. RollbackMigration(migration *migrations.Migration) error // Repair updates the md5 checksums, descriptions, or versions of migrations that mismatch // the stored values in the schema history table. Updates the repaired_at timestamp to now. // Returns a list of errors for any failed repairs. Repair(migrations []*migrations.Migration) []error // GetFailingMigrations retrieves migrations that have failed (success = false). // Returns a slice of migrations and an error if there is an issue querying the database. GetFailingMigrations() ([]*migrations.Migration, error) // DoInTransaction initializes a database transaction. All queries executed within the callback // function are performed within this transaction. If the callback function returns an error, // the transaction is rolled back. // Returns an error if there is an issue starting the transaction or if the callback returns an error. DoInTransaction(fn func() error) error // DoInLock acquires a lock on the database to prevent concurrent execution of // migrations. This ensures that migrations are applied sequentially and avoids duplication. // Returns an error if there is an issue acquiring or releasing the lock, or if the callback returns an error. DoInLock(fn func() error) error }
Click to show internal directories.
Click to hide internal directories.