Complete API handlers refactoring to eliminate type switching and use repository pattern consistently

This commit is contained in:
2025-10-08 20:36:20 +02:00
parent 01b921bfa3
commit bbf728d110
16 changed files with 268 additions and 2654 deletions

View File

@@ -11,14 +11,12 @@ import (
"github.com/insertr/insertr/internal/config"
"github.com/insertr/insertr/internal/db"
"github.com/insertr/insertr/internal/engine"
"maps"
)
// Type alias for backward compatibility
type SiteConfig = config.SiteConfig
// SiteManager handles registration and enhancement of static sites
type SiteManager struct {
sites map[string]*SiteConfig
sites map[string]*config.SiteConfig
enhancer *Enhancer
mutex sync.RWMutex
devMode bool
@@ -29,7 +27,7 @@ type SiteManager struct {
// NewSiteManager creates a new site manager
func NewSiteManager(contentClient db.ContentRepository, devMode bool) *SiteManager {
return &SiteManager{
sites: make(map[string]*SiteConfig),
sites: make(map[string]*config.SiteConfig),
enhancer: NewDefaultEnhancer(contentClient, ""), // siteID will be set per operation
devMode: devMode,
contentClient: contentClient,
@@ -43,7 +41,7 @@ func NewSiteManagerWithAuth(contentClient db.ContentRepository, devMode bool, au
authProvider = &engine.AuthProvider{Type: "mock"}
}
return &SiteManager{
sites: make(map[string]*SiteConfig),
sites: make(map[string]*config.SiteConfig),
contentClient: contentClient,
authProvider: authProvider,
devMode: devMode,
@@ -51,7 +49,7 @@ func NewSiteManagerWithAuth(contentClient db.ContentRepository, devMode bool, au
}
// RegisterSite adds a site to the manager
func (sm *SiteManager) RegisterSite(config *SiteConfig) error {
func (sm *SiteManager) RegisterSite(config *config.SiteConfig) error {
sm.mutex.Lock()
defer sm.mutex.Unlock()
@@ -90,7 +88,7 @@ func (sm *SiteManager) RegisterSite(config *SiteConfig) error {
}
// RegisterSites bulk registers multiple sites from configuration
func (sm *SiteManager) RegisterSites(configs []*SiteConfig) error {
func (sm *SiteManager) RegisterSites(configs []*config.SiteConfig) error {
for _, config := range configs {
if err := sm.RegisterSite(config); err != nil {
return fmt.Errorf("failed to register site %s: %w", config.SiteID, err)
@@ -100,7 +98,7 @@ func (sm *SiteManager) RegisterSites(configs []*SiteConfig) error {
}
// GetSite returns a registered site configuration
func (sm *SiteManager) GetSite(siteID string) (*SiteConfig, bool) {
func (sm *SiteManager) GetSite(siteID string) (*config.SiteConfig, bool) {
sm.mutex.RLock()
defer sm.mutex.RUnlock()
@@ -109,15 +107,13 @@ func (sm *SiteManager) GetSite(siteID string) (*SiteConfig, bool) {
}
// GetAllSites returns all registered sites
func (sm *SiteManager) GetAllSites() map[string]*SiteConfig {
func (sm *SiteManager) GetAllSites() map[string]*config.SiteConfig {
sm.mutex.RLock()
defer sm.mutex.RUnlock()
// Return a copy to prevent external modification
result := make(map[string]*SiteConfig)
for id, site := range sm.sites {
result[id] = site
}
result := make(map[string]*config.SiteConfig)
maps.Copy(result, sm.sites)
return result
}
@@ -189,7 +185,7 @@ func (sm *SiteManager) EnhanceSite(siteID string) error {
// EnhanceAllSites enhances all registered sites that have auto-enhancement enabled
func (sm *SiteManager) EnhanceAllSites() error {
sm.mutex.RLock()
sites := make([]*SiteConfig, 0, len(sm.sites))
sites := make([]*config.SiteConfig, 0, len(sm.sites))
for _, site := range sm.sites {
if site.AutoEnhance {
sites = append(sites, site)
@@ -212,7 +208,7 @@ func (sm *SiteManager) EnhanceAllSites() error {
}
// GetStats returns statistics about registered sites
func (sm *SiteManager) GetStats() map[string]interface{} {
func (sm *SiteManager) GetStats() map[string]any {
sm.mutex.RLock()
defer sm.mutex.RUnlock()