database

package
v1.0.0-alpha Latest Latest
Warning

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

Go to latest
Published: Mar 25, 2026 License: MIT Imports: 4 Imported by: 0

Documentation

Index

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 NewDB

func NewDB() *Database

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

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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