module(..., package.seeall)

local m_table = require "helpers.table"
local m_cassandra = require "helpers.cassandra"
local m_cachedSystemConfiguration = {} 
local json = require "json"

--[[
	Estos datos se puede cachear en las diferentes LUA VM ya que los mismos NUNCA sufren cambios.
	Y en algun caso extremo en los cuales sufran cambios, deberia reiniciar el WebHandler.
]]--
function GetSystemConfig (self, elementId, keyspace, columns)
	assert(elementId)
	if m_cachedSystemConfiguration[elementId] then
		local info = m_table:DeepCopy(m_cachedSystemConfiguration[elementId])
		--LogDebug("1 - LOADING FROM CACHE - %s: %s", elementId, json.encode(info or {}))
		return info
	end
	local info = m_cassandra.GetAllColumns({
		keyspace     = keyspace or "Provisioning",
		columnFamily = "SystemConfiguration",
		key          = elementId,
		columns      = columns
	})
	m_cachedSystemConfiguration[elementId] = info
	--LogDebug("2 - LOADING FROM DB - %s: %s", elementId, json.encode(info or {}))
	return info
end

function LoadSystemConfig (self, keyspace)
	local systemConfiguration = m_cassandra.GetAllColumns({
		keyspace     = keyspace or "Provisioning",
		columnFamily = "SystemConfiguration",
		startKey     = "",
		endKey       = ""
	}) or {}
	return systemConfiguration
end