Files
tm_back/pkg/ai_summarizer/config.go
T
2026-05-05 17:47:31 +03:30

77 lines
2.4 KiB
Go

package ai_summarizer
import (
"errors"
"fmt"
"time"
)
// Config holds the configuration for the AI Summarizer service.
// It contains settings for both the HTTP API and the MinIO storage integration.
type Config struct {
// HTTP API settings
APIBaseURL string // Base URL of the AI service, e.g. "http://ai-host:8000"
APITimeout time.Duration // Timeout for HTTP requests to the AI API
APIRetryCount int // Number of retry attempts for failed API requests
APIRetryDelay time.Duration // Delay between retry attempts
// MinIO storage settings
MinioEndpoint string // MinIO endpoint, e.g. "ai-host:9000"
MinioAccessKey string // MinIO access key ID
MinioSecretKey string // MinIO secret access key
MinioUseSSL bool // Whether to use SSL for MinIO connection
MinioRegion string // MinIO region
MinioBucket string // MinIO bucket name (default: "opplens-documents")
MinioTimeout time.Duration // Timeout for MinIO operations
}
// DefaultConfig returns a Config with sensible defaults.
func DefaultConfig() *Config {
return &Config{
APITimeout: 120 * time.Second,
APIRetryCount: 2,
APIRetryDelay: 3 * time.Second,
MinioBucket: "opplens-documents",
MinioRegion: "us-east-1",
MinioUseSSL: false,
MinioTimeout: 30 * time.Second,
}
}
// Validate checks that all required configuration fields are present.
// Use this when both HTTP API and MinIO storage are needed.
func (c *Config) Validate() error {
if c.APIBaseURL == "" {
return errors.New("ai_summarizer: APIBaseURL is required")
}
return c.ValidateStorage()
}
// ValidateStorage checks only the MinIO storage-related configuration fields.
// Use this when only the storage client is needed (no HTTP API).
func (c *Config) ValidateStorage() error {
if c.MinioEndpoint == "" {
return errors.New("ai_summarizer: MinioEndpoint is required")
}
if c.MinioAccessKey == "" {
return errors.New("ai_summarizer: MinioAccessKey is required")
}
if c.MinioSecretKey == "" {
return errors.New("ai_summarizer: MinioSecretKey is required")
}
if c.MinioBucket == "" {
return fmt.Errorf("ai_summarizer: MinioBucket is required")
}
return nil
}
// ValidateAPI checks only the HTTP API-related configuration fields.
// Use this when only the HTTP client is needed (no MinIO storage).
func (c *Config) ValidateAPI() error {
if c.APIBaseURL == "" {
return errors.New("ai_summarizer: APIBaseURL is required")
}
return nil
}