Add cache configuration to cli

Change-Id: I22b7eb9bd9a2fb9e7106ff20487e285638c5320f
diff --git a/service/cache_test.go b/service/cache_test.go
index 037f0b8..9288660 100644
--- a/service/cache_test.go
+++ b/service/cache_test.go
@@ -5,36 +5,37 @@
 	"testing"
 	"time"
 
+	"github.com/korap/korap-mcp/config"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
 
 func TestDefaultCacheConfig(t *testing.T) {
-	config := DefaultCacheConfig()
+	cacheConfig := config.DefaultCacheConfig()
 
-	assert.True(t, config.Enabled)
-	assert.Equal(t, 5*time.Minute, config.DefaultTTL)
-	assert.Equal(t, 2*time.Minute, config.SearchTTL)
-	assert.Equal(t, 15*time.Minute, config.MetadataTTL)
-	assert.Equal(t, 1000, config.MaxSize)
+	assert.True(t, cacheConfig.Enabled)
+	assert.Equal(t, "5m", cacheConfig.DefaultTTL)
+	assert.Equal(t, "2m", cacheConfig.SearchTTL)
+	assert.Equal(t, "15m", cacheConfig.MetadataTTL)
+	assert.Equal(t, 1000, cacheConfig.MaxSize)
 }
 
 func TestNewCache(t *testing.T) {
 	tests := []struct {
 		name           string
-		config         CacheConfig
+		config         *config.CacheConfig
 		expectError    bool
 		expectNilCache bool
 	}{
 		{
 			name:           "enabled cache",
-			config:         DefaultCacheConfig(),
+			config:         config.DefaultCacheConfig(),
 			expectError:    false,
 			expectNilCache: false,
 		},
 		{
 			name: "disabled cache",
-			config: CacheConfig{
+			config: &config.CacheConfig{
 				Enabled: false,
 			},
 			expectError:    false,
@@ -42,11 +43,11 @@
 		},
 		{
 			name: "custom configuration",
-			config: CacheConfig{
+			config: &config.CacheConfig{
 				Enabled:     true,
-				DefaultTTL:  1 * time.Minute,
-				SearchTTL:   30 * time.Second,
-				MetadataTTL: 5 * time.Minute,
+				DefaultTTL:  "1m",
+				SearchTTL:   "30s",
+				MetadataTTL: "5m",
 				MaxSize:     500,
 			},
 			expectError:    false,
@@ -78,7 +79,7 @@
 }
 
 func TestCacheGetSet(t *testing.T) {
-	cache, err := NewCache(DefaultCacheConfig())
+	cache, err := NewCache(config.DefaultCacheConfig())
 	require.NoError(t, err)
 
 	ctx := context.Background()
@@ -99,7 +100,7 @@
 }
 
 func TestCacheExpiry(t *testing.T) {
-	cache, err := NewCache(DefaultCacheConfig())
+	cache, err := NewCache(config.DefaultCacheConfig())
 	require.NoError(t, err)
 
 	ctx := context.Background()
@@ -125,7 +126,7 @@
 }
 
 func TestCacheDelete(t *testing.T) {
-	cache, err := NewCache(DefaultCacheConfig())
+	cache, err := NewCache(config.DefaultCacheConfig())
 	require.NoError(t, err)
 
 	ctx := context.Background()
@@ -147,7 +148,7 @@
 }
 
 func TestCacheClear(t *testing.T) {
-	cache, err := NewCache(DefaultCacheConfig())
+	cache, err := NewCache(config.DefaultCacheConfig())
 	require.NoError(t, err)
 
 	ctx := context.Background()
@@ -179,7 +180,7 @@
 }
 
 func TestCacheStats(t *testing.T) {
-	cache, err := NewCache(DefaultCacheConfig())
+	cache, err := NewCache(config.DefaultCacheConfig())
 	require.NoError(t, err)
 
 	ctx := context.Background()
@@ -203,8 +204,8 @@
 }
 
 func TestCacheStatsDisabled(t *testing.T) {
-	config := CacheConfig{Enabled: false}
-	cache, err := NewCache(config)
+	cacheConfig := &config.CacheConfig{Enabled: false}
+	cache, err := NewCache(cacheConfig)
 	require.NoError(t, err)
 
 	stats := cache.Stats()
@@ -213,8 +214,8 @@
 }
 
 func TestCacheDisabled(t *testing.T) {
-	config := CacheConfig{Enabled: false}
-	cache, err := NewCache(config)
+	cacheConfig := &config.CacheConfig{Enabled: false}
+	cache, err := NewCache(cacheConfig)
 	require.NoError(t, err)
 
 	ctx := context.Background()
@@ -238,7 +239,7 @@
 }
 
 func TestGenerateCacheKey(t *testing.T) {
-	cache, err := NewCache(DefaultCacheConfig())
+	cache, err := NewCache(config.DefaultCacheConfig())
 	require.NoError(t, err)
 
 	tests := []struct {
@@ -304,7 +305,7 @@
 }
 
 func TestCacheKeyDeterministic(t *testing.T) {
-	cache, err := NewCache(DefaultCacheConfig())
+	cache, err := NewCache(config.DefaultCacheConfig())
 	require.NoError(t, err)
 
 	// Test that map parameter order doesn't affect cache key generation
@@ -341,8 +342,8 @@
 }
 
 func TestGetTTLForEndpoint(t *testing.T) {
-	config := DefaultCacheConfig()
-	cache, err := NewCache(config)
+	cacheConfig := config.DefaultCacheConfig()
+	cache, err := NewCache(cacheConfig)
 	require.NoError(t, err)
 
 	tests := []struct {
@@ -353,42 +354,42 @@
 		{
 			name:     "search endpoint",
 			endpoint: "/api/v1/search",
-			expected: config.SearchTTL,
+			expected: cacheConfig.GetSearchTTL(),
 		},
 		{
 			name:     "query endpoint",
 			endpoint: "/query",
-			expected: config.SearchTTL,
+			expected: cacheConfig.GetSearchTTL(),
 		},
 		{
 			name:     "corpus endpoint",
 			endpoint: "/corpus",
-			expected: config.MetadataTTL,
+			expected: cacheConfig.GetMetadataTTL(),
 		},
 		{
 			name:     "metadata endpoint",
 			endpoint: "/metadata",
-			expected: config.MetadataTTL,
+			expected: cacheConfig.GetMetadataTTL(),
 		},
 		{
 			name:     "statistics endpoint",
 			endpoint: "/statistics",
-			expected: config.MetadataTTL,
+			expected: cacheConfig.GetMetadataTTL(),
 		},
 		{
 			name:     "info endpoint",
 			endpoint: "/info",
-			expected: config.MetadataTTL,
+			expected: cacheConfig.GetMetadataTTL(),
 		},
 		{
 			name:     "other endpoint",
 			endpoint: "/other",
-			expected: config.DefaultTTL,
+			expected: cacheConfig.GetDefaultTTL(),
 		},
 		{
 			name:     "case insensitive",
 			endpoint: "/API/V1/SEARCH",
-			expected: config.SearchTTL,
+			expected: cacheConfig.GetSearchTTL(),
 		},
 	}
 
@@ -423,7 +424,7 @@
 }
 
 func TestCacheClose(t *testing.T) {
-	cache, err := NewCache(DefaultCacheConfig())
+	cache, err := NewCache(config.DefaultCacheConfig())
 	require.NoError(t, err)
 
 	// Add some data
@@ -435,7 +436,7 @@
 	assert.NoError(t, err)
 
 	// Disabled cache close should also not error
-	disabledCache, err := NewCache(CacheConfig{Enabled: false})
+	disabledCache, err := NewCache(&config.CacheConfig{Enabled: false})
 	require.NoError(t, err)
 
 	err = disabledCache.Close()