Documentation
¶
Index ¶
- func NewRepository(dbType string, db interfaces.DB) (interfaces.DatabaseRepo, error)
- type ConnectionFactory
- type Database
- type DatabaseConnectorFactory
- type PostgresConnectionFactory
- type PostgresRepositoryFactory
- type RepositoryFactory
- type RepositoryProvider
- func (rp *RepositoryProvider) CreateBulkRepository(dbType string, db interfaces.DB) (interfaces.BulkRepo, error)
- func (rp *RepositoryProvider) CreateDatabaseRepository(dbType string, db interfaces.DB) (interfaces.DatabaseRepo, error)
- func (rp *RepositoryProvider) RegisterFactory(dbType string, factory RepositoryFactory)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewRepository ¶
func NewRepository(dbType string, db interfaces.DB) (interfaces.DatabaseRepo, error)
Types ¶
type ConnectionFactory ¶
type ConnectionFactory interface {
CreateConnection(cfg *config.DatabaseConfig) (interfaces.DB, error)
}
ConnectionFactory defines the interface for creating database connections
func NewPostgresConnectionFactory ¶
func NewPostgresConnectionFactory(dsnBuilder postgres.DSNBuilder, connector postgres.Connector) ConnectionFactory
NewPostgresConnectionFactory creates a new PostgreSQL connection factory It uses dependency injection to make the factory testable
type Database ¶
type Database struct {
Factory *DatabaseConnectorFactory
}
func (*Database) Connect ¶
func (db *Database) Connect(dbType string, cfg *config.DatabaseConfig) (interfaces.DB, error)
Connect creates a database connection using the configured factory. Kept for backwards compatibility; prefer DatabaseConnectorFactory directly.
type DatabaseConnectorFactory ¶
type DatabaseConnectorFactory struct {
ConnectorMap map[string]ConnectionFactory
}
DatabaseConnectorFactory manages multiple database connector implementations using a registry pattern for extensibility
func NewDatabaseConnectorFactory ¶
func NewDatabaseConnectorFactory() *DatabaseConnectorFactory
NewDatabaseConnectorFactory creates a new database connector factory
func NewDefaultDatabaseConnectorFactory ¶
func NewDefaultDatabaseConnectorFactory() *DatabaseConnectorFactory
NewDefaultDatabaseConnectorFactory creates a factory pre-configured with standard connectors
func (*DatabaseConnectorFactory) CreateConnection ¶
func (dcf *DatabaseConnectorFactory) CreateConnection(dbType string, cfg *config.DatabaseConfig) (interfaces.DB, error)
CreateConnection creates a database connection using the registered connector for the specified type
func (*DatabaseConnectorFactory) RegisterConnector ¶
func (dcf *DatabaseConnectorFactory) RegisterConnector(dbType string, connector ConnectionFactory)
RegisterConnector registers a connection factory for a specific database type This allows extending the factory with new database types without modifying factory code
type PostgresConnectionFactory ¶
type PostgresConnectionFactory struct {
// contains filtered or unexported fields
}
PostgresConnectionFactory implements ConnectionFactory for PostgreSQL
func (*PostgresConnectionFactory) CreateConnection ¶
func (pcf *PostgresConnectionFactory) CreateConnection(cfg *config.DatabaseConfig) (interfaces.DB, error)
CreateConnection creates a PostgreSQL connection by building DSN and connecting
type PostgresRepositoryFactory ¶
type PostgresRepositoryFactory struct{}
PostgresRepositoryFactory creates PostgreSQL repository instances
func (*PostgresRepositoryFactory) CreateRepository ¶
func (prf *PostgresRepositoryFactory) CreateRepository(db interfaces.DB) (interfaces.DatabaseRepo, error)
CreateRepository implements RepositoryFactory interface for PostgreSQL
type RepositoryFactory ¶
type RepositoryFactory interface {
CreateRepository(db interfaces.DB) (interfaces.DatabaseRepo, error)
}
RepositoryFactory defines the interface for creating repository implementations This allows different database types to provide their own repository implementations
func NewPostgresRepositoryFactory ¶
func NewPostgresRepositoryFactory() RepositoryFactory
NewPostgresRepositoryFactory creates a new PostgreSQL repository factory
type RepositoryProvider ¶
type RepositoryProvider struct {
Factories map[string]RepositoryFactory
}
RepositoryProvider manages multiple repository factory implementations using a registry pattern for extensibility
func NewDefaultRepositoryProvider ¶
func NewDefaultRepositoryProvider() *RepositoryProvider
NewDefaultRepositoryProvider creates a provider pre-configured with standard repositories This should be called from your application initialization
func NewRepositoryProvider ¶
func NewRepositoryProvider() *RepositoryProvider
NewRepositoryProvider creates a new repository provider
func (*RepositoryProvider) CreateBulkRepository ¶
func (rp *RepositoryProvider) CreateBulkRepository(dbType string, db interfaces.DB) (interfaces.BulkRepo, error)
CreateBulkRepository creates a bulk repository using the registered factory This is a convenience method for bulk-specific operations
func (*RepositoryProvider) CreateDatabaseRepository ¶
func (rp *RepositoryProvider) CreateDatabaseRepository(dbType string, db interfaces.DB) (interfaces.DatabaseRepo, error)
CreateDatabaseRepository creates a repository using the registered factory for the specified type
func (*RepositoryProvider) RegisterFactory ¶
func (rp *RepositoryProvider) RegisterFactory(dbType string, factory RepositoryFactory)
RegisterFactory registers a repository factory for a specific database type This allows extending the provider with new database types without modifying provider code