Refactor architecture: eliminate auto-discovery and consolidate packages

- Remove auto-discovery entirely (~450 lines)
  * Delete internal/content/discoverer.go
  * Simplify enhancer to single-phase processing
  * Remove duplicate container expansion logic

- Consolidate repository implementations
  * Move internal/content/client.go → internal/db/http_client.go
  * Group all repository implementations in db/ package

- Add file utilities to engine following Go stdlib patterns
  * Add engine.ProcessFile() and ProcessDirectory() methods
  * Engine now handles both content processing AND file operations

- Move site management to dedicated package
  * Move internal/content/site_manager.go → internal/sites/manager.go
  * Clear separation of site lifecycle from content processing

- Preserve container expansion (syntactic sugar)
  * .insertr on containers still auto-applies to viable children
  * Container detection logic consolidated in engine/utils.go

Result: Clean architecture with single source of truth for .insertr processing
This commit is contained in:
2025-10-19 22:37:26 +02:00
parent 87b78a4a69
commit dbdd4361b7
8 changed files with 152 additions and 667 deletions

View File

@@ -9,6 +9,7 @@ import (
"github.com/spf13/cobra"
"github.com/insertr/insertr/internal/config"
"github.com/insertr/insertr/internal/content"
"github.com/insertr/insertr/internal/db"
)
@@ -95,7 +96,7 @@ func runEnhance(cmd *cobra.Command, args []string) {
var client db.ContentRepository
if cfg.API.URL != "" {
fmt.Printf("🌐 Using content API: %s\n", cfg.API.URL)
client = content.NewHTTPClient(cfg.API.URL, cfg.API.Key)
client = db.NewHTTPClient(cfg.API.URL, cfg.API.Key)
} else if cfg.Database.Path != "" {
fmt.Printf("🗄️ Using database: %s\n", cfg.Database.Path)
database, err := db.NewDatabase(cfg.Database.Path)
@@ -110,7 +111,7 @@ func runEnhance(cmd *cobra.Command, args []string) {
// Load site-specific configuration
enhancementConfig := content.EnhancementConfig{
Discovery: content.DiscoveryConfig{
Discovery: config.DiscoveryConfig{
Enabled: false, // Default: disabled for explicit class="insertr" markings only
Aggressive: false,
Containers: true,

View File

@@ -17,9 +17,9 @@ import (
"github.com/insertr/insertr/internal/api"
"github.com/insertr/insertr/internal/auth"
"github.com/insertr/insertr/internal/config"
"github.com/insertr/insertr/internal/content"
"github.com/insertr/insertr/internal/db"
"github.com/insertr/insertr/internal/engine"
"github.com/insertr/insertr/internal/sites"
)
var serveCmd = &cobra.Command{
@@ -76,14 +76,14 @@ func runServe(cmd *cobra.Command, args []string) {
}
// Create legacy auth config for compatibility
authConfig := &auth.AuthConfig{
authConfig := &config.AuthConfig{
DevMode: cfg.Auth.DevMode,
Provider: cfg.Auth.Provider,
JWTSecret: cfg.Auth.JWTSecret,
}
if cfg.Auth.OIDC != nil {
authConfig.OIDC = &auth.OIDCConfig{
authConfig.OIDC = &config.OIDCConfig{
Endpoint: cfg.Auth.OIDC.Endpoint,
ClientID: cfg.Auth.OIDC.ClientID,
ClientSecret: cfg.Auth.OIDC.ClientSecret,
@@ -107,7 +107,7 @@ func runServe(cmd *cobra.Command, args []string) {
// Initialize site manager with auth provider
authProvider := &engine.AuthProvider{Type: cfg.Auth.Provider}
siteManager := content.NewSiteManagerWithAuth(contentClient, cfg.Auth.DevMode, authProvider)
siteManager := sites.NewSiteManagerWithAuth(contentClient, cfg.Auth.DevMode, authProvider)
// Convert config sites to legacy format and register
var legacySites []*config.SiteConfig
@@ -120,7 +120,7 @@ func runServe(cmd *cobra.Command, args []string) {
AutoEnhance: site.AutoEnhance,
}
if site.Discovery != nil {
legacySite.Discovery = &content.DiscoveryConfig{
legacySite.Discovery = &config.DiscoveryConfig{
Enabled: site.Discovery.Enabled,
Aggressive: site.Discovery.Aggressive,
Containers: site.Discovery.Containers,