SystemMessage = require("../../models/SystemMessage").SystemMessage

module.exports = SystemMessageManager =
	getMessages: (callback = (error, messages) ->) ->
		if @_cachedMessages?
			return callback null, @_cachedMessages
		else
			@getMessagesFromDB (error, messages) =>
				return callback(error) if error?
				@_cachedMessages = messages
				return callback null, messages
				
	getMessagesFromDB: (callback = (error, messages) ->) ->
		SystemMessage.find {}, callback
				
	clearMessages: (callback = (error) ->) ->
		SystemMessage.remove {}, callback
		
	createMessage: (content, callback = (error) ->) ->
		message = new SystemMessage { content: content }
		message.save callback
				
	clearCache: () ->
		delete @_cachedMessages
				
CACHE_TIMEOUT = 20 * 1000 # 20 seconds		
setInterval () ->
	SystemMessageManager.clearCache()
, CACHE_TIMEOUT