factory.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // In dbmanager/factory.go
  2. package dbmanager
  3. import (
  4. "fmt"
  5. "git.linuxforward.com/byop/byop-engine/models"
  6. )
  7. // DbManagerFactory creates type-safe database managers
  8. type DbManagerFactory struct {
  9. dbType string
  10. // Add configuration params as needed
  11. }
  12. // NewDbManagerFactory creates a new factory
  13. func NewDbManagerFactory(dbType string) *DbManagerFactory {
  14. return &DbManagerFactory{
  15. dbType: dbType,
  16. }
  17. }
  18. // CreateEntityManager creates a DbManager for the generic Entity interface
  19. func (f *DbManagerFactory) CreateEntityManager() (DbManager[Entity], error) {
  20. switch f.dbType {
  21. case "memory":
  22. return NewMemoryDbManager[Entity](), nil
  23. case "sql":
  24. return nil, fmt.Errorf("SQL database type is not implemented yet")
  25. default:
  26. return nil, fmt.Errorf("unsupported database type: %s", f.dbType)
  27. }
  28. }
  29. // CreateClientManager creates a DbManager specifically for Client entities
  30. func (f *DbManagerFactory) CreateClientManager() (DbManager[*models.Client], error) {
  31. switch f.dbType {
  32. case "memory":
  33. return NewMemoryDbManager[*models.Client](), nil
  34. case "sql":
  35. return nil, fmt.Errorf("SQL database type is not implemented yet")
  36. default:
  37. return nil, fmt.Errorf("unsupported database type: %s", f.dbType)
  38. }
  39. }