Complete API handlers refactoring to eliminate type switching and use repository pattern consistently
This commit is contained in:
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user