adapters

package
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 17, 2026 License: MIT Imports: 19 Imported by: 0

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

View Source
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

View Source
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

func (a *RealCLIAdapter) GetVersion(ctx context.Context, cmd string) (string, error)

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) Exists

func (a *RealFileSystemAdapter) Exists(ctx context.Context, path string) (bool, error)

Exists checks if a path exists.

func (*RealFileSystemAdapter) ListFiles

func (a *RealFileSystemAdapter) ListFiles(ctx context.Context, dir string) ([]string, error)

ListFiles lists files in a directory.

func (*RealFileSystemAdapter) MkdirAll

func (a *RealFileSystemAdapter) MkdirAll(ctx context.Context, path string, perm fs.FileMode) error

MkdirAll creates a directory and all parent directories.

func (*RealFileSystemAdapter) ReadFile

func (a *RealFileSystemAdapter) ReadFile(ctx context.Context, path string) ([]byte, error)

ReadFile reads a file.

func (*RealFileSystemAdapter) Remove

func (a *RealFileSystemAdapter) Remove(ctx context.Context, path string) error

Remove removes a file or directory.

func (*RealFileSystemAdapter) TempDir

func (a *RealFileSystemAdapter) TempDir(ctx context.Context, prefix string) (string, error)

TempDir creates a temporary directory.

func (*RealFileSystemAdapter) WriteFile

func (a *RealFileSystemAdapter) WriteFile(
	ctx context.Context,
	path string,
	data []byte,
	perm fs.FileMode,
) error

WriteFile writes a file.

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.

func (*RealMigrationAdapter) Validate

func (r *RealMigrationAdapter) Validate(ctx context.Context, source string) error

Validate validates migration files.

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.

func (*RealSQLCAdapter) Version

func (a *RealSQLCAdapter) Version(ctx context.Context) (string, error)

Version returns sqlc version.

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

func (a *RealTemplateAdapter) ListTemplates(ctx context.Context) ([]templates.Template, error)

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL