Files
insertr/internal/content/library.go
Joakim e28000fd33 refactor: implement unified binary architecture
🏗️ **Major Architecture Refactoring: Separate CLI + Server → Unified Binary**

**Key Changes:**
 **Unified Binary**: Single 'insertr' binary with subcommands (enhance, serve)
 **Preserved Database Architecture**: Maintained sophisticated sqlc multi-DB setup
 **Smart Configuration**: Viper + YAML config with CLI flag precedence
 **Updated Build System**: Unified justfile, Air, and npm scripts

**Command Structure:**
- `insertr enhance [input-dir]` - Build-time content injection
- `insertr serve` - HTTP API server (dev + production modes)
- `insertr --config insertr.yaml` - YAML configuration support

**Architecture Benefits:**
- **Shared Database Layer**: Single source of truth for content models
- **Flexible Workflows**: Local DB for dev, remote API for production
- **Simple Deployment**: One binary for all use cases
- **Better UX**: Consistent configuration across build and runtime

**Preserved Features:**
- Multi-database support (SQLite + PostgreSQL)
- sqlc code generation and type safety
- Version control system with rollback
- Professional API endpoints
- Content enhancement pipeline

**Development Workflow:**
- `just dev` - Full-stack development (API server + demo site)
- `just serve` - API server only
- `just enhance` - Build-time content injection
- `air` - Hot reload unified binary

**Migration:** Consolidated insertr-cli/ and insertr-server/ → unified root structure
2025-09-09 00:39:35 +02:00

51 lines
1.2 KiB
Go

package content
import (
_ "embed"
"fmt"
)
// Embedded library assets
//
//go:embed assets/insertr.min.js
var libraryMinJS string
//go:embed assets/insertr.js
var libraryJS string
// GetLibraryScript returns the appropriate library version
func GetLibraryScript(minified bool) string {
if minified {
return libraryMinJS
}
return libraryJS
}
// GetLibraryVersion returns the current embedded library version
func GetLibraryVersion() string {
return "1.0.0"
}
// GetLibraryURL returns the appropriate library URL for script injection
func GetLibraryURL(minified bool, isDevelopment bool) string {
if isDevelopment {
// Local development URLs - relative to served content
if minified {
return "/insertr/insertr.min.js"
}
return "/insertr/insertr.js"
}
// Production URLs - use CDN
return GetLibraryCDNURL(minified)
}
// GetLibraryCDNURL returns the CDN URL for production use
func GetLibraryCDNURL(minified bool) string {
version := GetLibraryVersion()
if minified {
return fmt.Sprintf("https://cdn.jsdelivr.net/npm/@insertr/lib@%s/dist/insertr.min.js", version)
}
return fmt.Sprintf("https://cdn.jsdelivr.net/npm/@insertr/lib@%s/dist/insertr.js", version)
}