217e7abab3
The query statements now use camelCase instead of undercase. Added more documentation. Renamed a few config variables. The length counters in the MemoryUserStore and MemoryTopicStore are now atomic. Added the Flush method to the UserCache and TopicCache. Made more visual improvements to Tempra Conflux. The avatar block vanished from the opening posts for topics for some reason, I added it back. Added more tests. And many more changes...
37 lines
1.1 KiB
Go
37 lines
1.1 KiB
Go
package main
|
|
|
|
import "errors"
|
|
|
|
// Go away, linter. We need to differentiate constants from variables somehow ;)
|
|
// nolint
|
|
const CACHE_STATIC int = 0
|
|
const CACHE_DYNAMIC int = 1
|
|
const CACHE_SQL int = 2
|
|
|
|
// ErrCacheDesync is thrown whenever a piece of data, for instance, a user is out of sync with the database. Currently unused.
|
|
var ErrCacheDesync = errors.New("The cache is out of sync with the database.") // TODO: A cross-server synchronisation mechanism
|
|
|
|
// ErrStoreCapacityOverflow is thrown whenever a datastore reaches it's maximum hard capacity. I'm not sure if this error is actually used.
|
|
var ErrStoreCapacityOverflow = errors.New("This datastore has reached it's maximum capacity.")
|
|
|
|
// nolint
|
|
type DataStore interface {
|
|
Load(id int) error
|
|
Get(id int) (interface{}, error)
|
|
BypassGet(id int) (interface{}, error)
|
|
//GetGlobalCount()
|
|
}
|
|
|
|
// nolint
|
|
type DataCache interface {
|
|
CacheGet(id int) (interface{}, error)
|
|
CacheGetUnsafe(id int) (interface{}, error)
|
|
CacheSet(item interface{}) error
|
|
CacheAdd(item interface{}) error
|
|
CacheAddUnsafe(item interface{}) error
|
|
CacheRemove(id int) error
|
|
CacheRemoveUnsafe(id int) error
|
|
GetLength() int
|
|
GetCapacity() int
|
|
}
|