Documentation
¶
Overview ¶
Package adapters provides implementations for external system interfaces.
Package adapters provides concrete implementations of adapter interfaces All adapter implementations are now in separate files following SRP
Package adapters provides adapter pattern interfaces for external dependencies
Index ¶
- Constants
- Variables
- type CLIAdapter
- type DatabaseAdapter
- type FileSystemAdapter
- type MigrationAdapter
- type OperationType
- type RealCLIAdapter
- func (a *RealCLIAdapter) CheckCommand(_ context.Context, cmd string) error
- func (a *RealCLIAdapter) GetVersion(ctx context.Context, cmd string) (string, error)
- func (a *RealCLIAdapter) Install(_ context.Context, cmd string) error
- func (a *RealCLIAdapter) Println(_ context.Context, message string) error
- func (a *RealCLIAdapter) RunCommand(ctx context.Context, cmd string, args ...string) (string, error)
- type RealDatabaseAdapter
- func (a *RealDatabaseAdapter) CreateDatabase(ctx context.Context, cfg *config.DatabaseConfig) error
- func (a *RealDatabaseAdapter) DropDatabase(ctx context.Context, cfg *config.DatabaseConfig) error
- func (a *RealDatabaseAdapter) GenerateMigrations(ctx context.Context, cfg *config.DatabaseConfig) ([]string, error)
- func (a *RealDatabaseAdapter) GetSchema(ctx context.Context, cfg *config.DatabaseConfig) (*schema.Schema, error)
- func (a *RealDatabaseAdapter) TestConnection(ctx context.Context, cfg *config.DatabaseConfig) error
- type RealFileSystemAdapter
- func (a *RealFileSystemAdapter) Copy(ctx context.Context, src, dst string) error
- func (a *RealFileSystemAdapter) CreateDirectory(ctx context.Context, path string, perm fs.FileMode) error
- func (a *RealFileSystemAdapter) Exists(ctx context.Context, path string) (bool, error)
- func (a *RealFileSystemAdapter) ListFiles(ctx context.Context, dir string) ([]string, error)
- func (a *RealFileSystemAdapter) MkdirAll(ctx context.Context, path string, perm fs.FileMode) error
- func (a *RealFileSystemAdapter) ReadFile(ctx context.Context, path string) ([]byte, error)
- func (a *RealFileSystemAdapter) Remove(ctx context.Context, path string) error
- func (a *RealFileSystemAdapter) TempDir(ctx context.Context, prefix string) (string, error)
- func (a *RealFileSystemAdapter) WriteFile(ctx context.Context, path string, data []byte, perm fs.FileMode) error
- type RealMigrationAdapter
- func (r *RealMigrationAdapter) CreateMigration(ctx context.Context, name, directory string) (string, error)
- func (r *RealMigrationAdapter) Migrate(ctx context.Context, source, databaseURL string) error
- func (r *RealMigrationAdapter) MigrateSQLCConfig(ctx context.Context, sourceConfig *config.SqlcConfig, ...) (*config.SqlcConfig, error)
- func (r *RealMigrationAdapter) Rollback(ctx context.Context, source, databaseURL string, steps int) error
- func (r *RealMigrationAdapter) Status(ctx context.Context, source, databaseURL string) (*migration.MigrationStatus, error)
- func (r *RealMigrationAdapter) Validate(ctx context.Context, source string) error
- type RealSQLCAdapter
- func (a *RealSQLCAdapter) CheckInstallation(ctx context.Context) error
- func (a *RealSQLCAdapter) Generate(ctx context.Context, cfg *config.SqlcConfig) error
- func (a *RealSQLCAdapter) Validate(ctx context.Context, cfg *config.SqlcConfig) error
- func (a *RealSQLCAdapter) Version(ctx context.Context) (string, error)
- type RealTemplateAdapter
- func (a *RealTemplateAdapter) GenerateConfig(ctx context.Context, data generated.TemplateData) (*config.SqlcConfig, error)
- func (a *RealTemplateAdapter) GenerateFiles(ctx context.Context, data generated.TemplateData, outputDir string) ([]string, error)
- func (a *RealTemplateAdapter) GetTemplate(projectType generated.ProjectType) (templates.Template, error)
- func (a *RealTemplateAdapter) ListTemplates(ctx context.Context) ([]templates.Template, error)
- func (a *RealTemplateAdapter) ValidateTemplateData(ctx context.Context, data generated.TemplateData) error
- type SQLCAdapter
- type TemplateAdapter
Constants ¶
const ( // DefaultDirPermissions is the standard permission for created directories (rwxr-xr-x). DefaultDirPermissions fs.FileMode = 0o755 // DefaultFilePermissions is the standard permission for created files (rw-r--r--). DefaultFilePermissions fs.FileMode = 0o644 // TestFilePermissions is the permission used for test files. TestFilePermissions fs.FileMode = 0o644 )
Variables ¶
var ( NewSQLCAdapterFunc = NewRealSQLCAdapter NewDatabaseAdapterFunc = NewRealDatabaseAdapter NewCLIAdapterFunc = NewRealCLIAdapter NewTemplateAdapterFunc = NewRealTemplateAdapter NewFileSystemAdapterFunc = NewRealFileSystemAdapter NewMigrationAdapterFunc = NewRealMigrationAdapter )
Re-export all adapter constructors for convenience.
Functions ¶
This section is empty.
Types ¶
type CLIAdapter ¶
type CLIAdapter interface {
// RunCommand executes a CLI command
RunCommand(ctx context.Context, cmd string, args ...string) (string, error)
// CheckCommand checks if a command is available
CheckCommand(ctx context.Context, cmd string) error
// GetVersion returns version of a CLI tool
GetVersion(ctx context.Context, cmd string) (string, error)
// Install installs a CLI tool
Install(ctx context.Context, cmd string) error
// Println prints a message to output
Println(ctx context.Context, message string) error
}
CLIAdapter defines interface for CLI operations This isolates CLI-specific logic and enables testing.
type DatabaseAdapter ¶
type DatabaseAdapter interface {
// TestConnection tests database connectivity
TestConnection(ctx context.Context, cfg *config.DatabaseConfig) error
// CreateDatabase creates a new database
CreateDatabase(ctx context.Context, cfg *config.DatabaseConfig) error
// DropDatabase drops a database
DropDatabase(ctx context.Context, cfg *config.DatabaseConfig) error
// GetSchema returns database schema information
GetSchema(ctx context.Context, cfg *config.DatabaseConfig) (*schema.Schema, error)
// GenerateMigrations generates database migrations
GenerateMigrations(ctx context.Context, cfg *config.DatabaseConfig) ([]string, error)
}
DatabaseAdapter defines interface for database operations This isolates database-specific logic and enables testing.
type FileSystemAdapter ¶
type FileSystemAdapter interface {
// ReadFile reads a file
ReadFile(ctx context.Context, path string) ([]byte, error)
// WriteFile writes a file
WriteFile(ctx context.Context, path string, data []byte, perm fs.FileMode) error
// CreateDirectory creates a directory.
// Deprecated: Use MkdirAll instead. This method will be removed in a future breaking change.
CreateDirectory(ctx context.Context, path string, perm fs.FileMode) error
// MkdirAll creates a directory and all parent directories
MkdirAll(ctx context.Context, path string, perm fs.FileMode) error
// Exists checks if a path exists
Exists(ctx context.Context, path string) (bool, error)
// ListFiles lists files in a directory
ListFiles(ctx context.Context, dir string) ([]string, error)
// Remove removes a file or directory
Remove(ctx context.Context, path string) error
// Copy copies a file or directory
Copy(ctx context.Context, src, dst string) error
// TempDir creates a temporary directory
TempDir(ctx context.Context, prefix string) (string, error)
}
FileSystemAdapter defines interface for file system operations This isolates file system logic and enables testing.
type MigrationAdapter ¶
type MigrationAdapter interface {
// Migrate runs database migrations from a source
Migrate(ctx context.Context, source, databaseURL string) error
// Rollback rolls back database migrations
Rollback(ctx context.Context, source, databaseURL string, steps int) error
// Status checks migration status
Status(ctx context.Context, source, databaseURL string) (*migration.MigrationStatus, error)
// Validate validates migration files
Validate(ctx context.Context, source string) error
// CreateMigration creates a new migration file
CreateMigration(ctx context.Context, name, directory string) (string, error)
}
MigrationAdapter defines the interface for database migration operations This follows the Adapter pattern to external dependencies.
type OperationType ¶
type OperationType string
OperationType represents the type of database operation for logging purposes.
const ( OperationTestConnection OperationType = "Testing database connection to:" OperationCreateDatabase OperationType = "Creating database with URI:" OperationDropDatabase OperationType = "Dropping database with URI:" OperationGenerateMigrations OperationType = "Generating migrations for:" )
type RealCLIAdapter ¶
type RealCLIAdapter struct{}
RealCLIAdapter provides actual CLI operations.
func NewRealCLIAdapter ¶
func NewRealCLIAdapter() *RealCLIAdapter
NewRealCLIAdapter creates a new real CLI adapter.
func (*RealCLIAdapter) CheckCommand ¶
func (a *RealCLIAdapter) CheckCommand(_ context.Context, cmd string) error
CheckCommand checks if a command is available.
func (*RealCLIAdapter) GetVersion ¶
GetVersion returns version of a CLI tool.
func (*RealCLIAdapter) Install ¶
func (a *RealCLIAdapter) Install(_ context.Context, cmd string) error
Install installs a CLI tool.
func (*RealCLIAdapter) Println ¶
func (a *RealCLIAdapter) Println(_ context.Context, message string) error
Println prints a message to output.
func (*RealCLIAdapter) RunCommand ¶
func (a *RealCLIAdapter) RunCommand( ctx context.Context, cmd string, args ...string, ) (string, error)
RunCommand executes a CLI command.
type RealDatabaseAdapter ¶
type RealDatabaseAdapter struct{}
RealDatabaseAdapter provides actual database operations.
func NewRealDatabaseAdapter ¶
func NewRealDatabaseAdapter() *RealDatabaseAdapter
NewRealDatabaseAdapter creates a new real database adapter.
func (*RealDatabaseAdapter) CreateDatabase ¶
func (a *RealDatabaseAdapter) CreateDatabase( ctx context.Context, cfg *config.DatabaseConfig, ) error
CreateDatabase creates a new database.
func (*RealDatabaseAdapter) DropDatabase ¶
func (a *RealDatabaseAdapter) DropDatabase(ctx context.Context, cfg *config.DatabaseConfig) error
DropDatabase drops a database.
func (*RealDatabaseAdapter) GenerateMigrations ¶
func (a *RealDatabaseAdapter) GenerateMigrations( ctx context.Context, cfg *config.DatabaseConfig, ) ([]string, error)
GenerateMigrations generates database migrations.
func (*RealDatabaseAdapter) GetSchema ¶
func (a *RealDatabaseAdapter) GetSchema( ctx context.Context, cfg *config.DatabaseConfig, ) (*schema.Schema, error)
GetSchema returns database schema information.
func (*RealDatabaseAdapter) TestConnection ¶
func (a *RealDatabaseAdapter) TestConnection( ctx context.Context, cfg *config.DatabaseConfig, ) error
TestConnection tests database connectivity.
type RealFileSystemAdapter ¶
type RealFileSystemAdapter struct{}
RealFileSystemAdapter provides actual file system operations.
func NewRealFileSystemAdapter ¶
func NewRealFileSystemAdapter() *RealFileSystemAdapter
NewRealFileSystemAdapter creates a new real file system adapter.
func (*RealFileSystemAdapter) Copy ¶
func (a *RealFileSystemAdapter) Copy(ctx context.Context, src, dst string) error
Copy copies a file or directory.
func (*RealFileSystemAdapter) CreateDirectory ¶
func (a *RealFileSystemAdapter) CreateDirectory( ctx context.Context, path string, perm fs.FileMode, ) error
CreateDirectory creates a directory. Deprecated: Use MkdirAll instead. This method will be removed in a future breaking change.
func (*RealFileSystemAdapter) Remove ¶
func (a *RealFileSystemAdapter) Remove(ctx context.Context, path string) error
Remove removes a file or directory.
type RealMigrationAdapter ¶
type RealMigrationAdapter struct{}
RealMigrationAdapter implements MigrationAdapter interface using golang-migrate Database drivers are imported on-demand to reduce build time.
func NewRealMigrationAdapter ¶
func NewRealMigrationAdapter() *RealMigrationAdapter
NewRealMigrationAdapter creates a new real migration adapter.
func (*RealMigrationAdapter) CreateMigration ¶
func (r *RealMigrationAdapter) CreateMigration( ctx context.Context, name, directory string, ) (string, error)
CreateMigration creates a new migration file.
func (*RealMigrationAdapter) Migrate ¶
func (r *RealMigrationAdapter) Migrate(ctx context.Context, source, databaseURL string) error
Migrate runs database migrations from a source.
func (*RealMigrationAdapter) MigrateSQLCConfig ¶
func (r *RealMigrationAdapter) MigrateSQLCConfig( ctx context.Context, sourceConfig *config.SqlcConfig, targetDatabase generated.DatabaseType, targetVersion string, ) (*config.SqlcConfig, error)
MigrateSQLCConfig migrates SQLC configuration from one version/database to another.
func (*RealMigrationAdapter) Rollback ¶
func (r *RealMigrationAdapter) Rollback( ctx context.Context, source, databaseURL string, steps int, ) error
Rollback rolls back database migrations.
func (*RealMigrationAdapter) Status ¶
func (r *RealMigrationAdapter) Status( ctx context.Context, source, databaseURL string, ) (*migration.MigrationStatus, error)
Status checks migration status.
type RealSQLCAdapter ¶
type RealSQLCAdapter struct{}
RealSQLCAdapter provides actual sqlc operations.
func NewRealSQLCAdapter ¶
func NewRealSQLCAdapter() *RealSQLCAdapter
NewRealSQLCAdapter creates a new real SQLC adapter.
func (*RealSQLCAdapter) CheckInstallation ¶
func (a *RealSQLCAdapter) CheckInstallation(ctx context.Context) error
CheckInstallation checks if sqlc is installed.
func (*RealSQLCAdapter) Generate ¶
func (a *RealSQLCAdapter) Generate(ctx context.Context, cfg *config.SqlcConfig) error
Generate generates Go code from SQL files.
func (*RealSQLCAdapter) Validate ¶
func (a *RealSQLCAdapter) Validate(ctx context.Context, cfg *config.SqlcConfig) error
Validate validates sqlc configuration.
type RealTemplateAdapter ¶
type RealTemplateAdapter struct{}
RealTemplateAdapter provides actual template operations.
func NewRealTemplateAdapter ¶
func NewRealTemplateAdapter() *RealTemplateAdapter
NewRealTemplateAdapter creates a new real template adapter.
func (*RealTemplateAdapter) GenerateConfig ¶
func (a *RealTemplateAdapter) GenerateConfig( ctx context.Context, data generated.TemplateData, ) (*config.SqlcConfig, error)
GenerateConfig generates configuration from template data.
func (*RealTemplateAdapter) GenerateFiles ¶
func (a *RealTemplateAdapter) GenerateFiles( ctx context.Context, data generated.TemplateData, outputDir string, ) ([]string, error)
GenerateFiles generates files from template.
func (*RealTemplateAdapter) GetTemplate ¶
func (a *RealTemplateAdapter) GetTemplate( projectType generated.ProjectType, ) (templates.Template, error)
GetTemplate retrieves a template by type.
func (*RealTemplateAdapter) ListTemplates ¶
ListTemplates returns all available templates.
func (*RealTemplateAdapter) ValidateTemplateData ¶
func (a *RealTemplateAdapter) ValidateTemplateData( ctx context.Context, data generated.TemplateData, ) error
ValidateTemplateData validates template data.
type SQLCAdapter ¶
type SQLCAdapter interface {
// Generate generates Go code from SQL files
Generate(ctx context.Context, cfg *config.SqlcConfig) error
// Validate validates sqlc configuration
Validate(ctx context.Context, cfg *config.SqlcConfig) error
// Version returns sqlc version
Version(ctx context.Context) (string, error)
// CheckInstallation checks if sqlc is installed
CheckInstallation(ctx context.Context) error
}
SQLCAdapter defines interface for sqlc operations This isolates direct sqlc usage and enables testing.
type TemplateAdapter ¶
type TemplateAdapter interface {
// GetTemplate retrieves a template by type
GetTemplate(projectType generated.ProjectType) (templates.Template, error)
// GenerateConfig generates configuration from template data
GenerateConfig(ctx context.Context, data generated.TemplateData) (*config.SqlcConfig, error)
// GenerateFiles generates files from template
GenerateFiles(
ctx context.Context,
data generated.TemplateData,
outputDir string,
) ([]string, error)
// ValidateTemplateData validates template data
ValidateTemplateData(ctx context.Context, data generated.TemplateData) error
// ListTemplates returns all available templates
ListTemplates(ctx context.Context) ([]templates.Template, error)
}
TemplateAdapter defines interface for template operations This isolates template logic and enables testing.