2019-02-10 04:37:37 +03:00
// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package setting
import (
"strings"
"time"
"code.gitea.io/gitea/modules/log"
)
// Cache represents cache settings
type Cache struct {
2020-02-01 22:11:32 +03:00
Enabled bool
2019-02-10 04:37:37 +03:00
Adapter string
Interval int
Conn string
2020-02-01 22:11:32 +03:00
TTL time . Duration ` ini:"ITEM_TTL" `
2019-02-10 04:37:37 +03:00
}
var (
// CacheService the global cache
2020-02-01 22:11:32 +03:00
CacheService = struct {
2020-08-26 02:04:18 +03:00
Cache ` ini:"cache" `
2020-02-01 22:11:32 +03:00
LastCommit struct {
Enabled bool
TTL time . Duration ` ini:"ITEM_TTL" `
CommitsCount int64
} ` ini:"cache.last_commit" `
} {
Cache : Cache {
Enabled : true ,
Adapter : "memory" ,
Interval : 60 ,
TTL : 16 * time . Hour ,
} ,
LastCommit : struct {
Enabled bool
TTL time . Duration ` ini:"ITEM_TTL" `
CommitsCount int64
} {
Enabled : true ,
TTL : 8760 * time . Hour ,
CommitsCount : 1000 ,
} ,
}
2019-02-10 04:37:37 +03:00
)
func newCacheService ( ) {
sec := Cfg . Section ( "cache" )
2020-02-01 22:11:32 +03:00
if err := sec . MapTo ( & CacheService ) ; err != nil {
log . Fatal ( "Failed to map Cache settings: %v" , err )
2019-02-10 04:37:37 +03:00
}
2020-02-01 22:11:32 +03:00
CacheService . Adapter = sec . Key ( "ADAPTER" ) . In ( "memory" , [ ] string { "memory" , "redis" , "memcache" } )
2019-02-10 04:37:37 +03:00
switch CacheService . Adapter {
case "memory" :
case "redis" , "memcache" :
CacheService . Conn = strings . Trim ( sec . Key ( "HOST" ) . String ( ) , "\" " )
2020-02-01 22:11:32 +03:00
case "" : // disable cache
CacheService . Enabled = false
2019-02-10 04:37:37 +03:00
default :
2019-04-02 10:48:31 +03:00
log . Fatal ( "Unknown cache adapter: %s" , CacheService . Adapter )
2019-02-10 04:37:37 +03:00
}
2020-02-01 22:11:32 +03:00
if CacheService . Enabled {
log . Info ( "Cache Service Enabled" )
}
sec = Cfg . Section ( "cache.last_commit" )
if ! CacheService . Enabled {
CacheService . LastCommit . Enabled = false
}
CacheService . LastCommit . CommitsCount = sec . Key ( "COMMITS_COUNT" ) . MustInt64 ( 1000 )
if CacheService . LastCommit . Enabled {
log . Info ( "Last Commit Cache Service Enabled" )
}
2019-02-10 04:37:37 +03:00
}