init commit
This commit is contained in:
57
store/store.go
Normal file
57
store/store.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package store
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/usememos/memos/internal/profile"
|
||||
"github.com/usememos/memos/store/cache"
|
||||
)
|
||||
|
||||
// Store provides database access to all raw objects.
|
||||
type Store struct {
|
||||
profile *profile.Profile
|
||||
driver Driver
|
||||
|
||||
// Cache settings
|
||||
cacheConfig cache.Config
|
||||
|
||||
// Caches
|
||||
workspaceSettingCache *cache.Cache // cache for workspace settings
|
||||
userCache *cache.Cache // cache for users
|
||||
userSettingCache *cache.Cache // cache for user settings
|
||||
}
|
||||
|
||||
// New creates a new instance of Store.
|
||||
func New(driver Driver, profile *profile.Profile) *Store {
|
||||
// Default cache settings
|
||||
cacheConfig := cache.Config{
|
||||
DefaultTTL: 10 * time.Minute,
|
||||
CleanupInterval: 5 * time.Minute,
|
||||
MaxItems: 1000,
|
||||
OnEviction: nil,
|
||||
}
|
||||
|
||||
store := &Store{
|
||||
driver: driver,
|
||||
profile: profile,
|
||||
cacheConfig: cacheConfig,
|
||||
workspaceSettingCache: cache.New(cacheConfig),
|
||||
userCache: cache.New(cacheConfig),
|
||||
userSettingCache: cache.New(cacheConfig),
|
||||
}
|
||||
|
||||
return store
|
||||
}
|
||||
|
||||
func (s *Store) GetDriver() Driver {
|
||||
return s.driver
|
||||
}
|
||||
|
||||
func (s *Store) Close() error {
|
||||
// Stop all cache cleanup goroutines
|
||||
s.workspaceSettingCache.Close()
|
||||
s.userCache.Close()
|
||||
s.userSettingCache.Close()
|
||||
|
||||
return s.driver.Close()
|
||||
}
|
||||
Reference in New Issue
Block a user