Mobius Final Fantasy Wiki
Advertisement

Documentation for this module may be created at Module:Cargo/doc

local Cargo = {}

local checkType = require( "libraryUtil" ).checkType
local cargoQuery = mw.ext.cargo.query

-- Clear empty string values from a given table and all subtables.
--
-- @param tbl
local function clearEmptyValues( tbl )
  local newTbl = {}
  for k,v in pairs( tbl ) do
    if type( v ) == "table" then
      newTbl[k] = clearEmptyValues( v )
    elseif v ~= "" then
      newTbl[k] = v
    end
  end

  return newTbl
end

-- Run a Cargo query.
--
-- @param tables
-- @param fields
-- @param args
function Cargo.query( tables, fields, args )
  checkType( "query", 1, tables, "string" )
  checkType( "query", 2, fields, "string" )
  checkType( "query", 3, args, "table", true )

  local results = cargoQuery( tables, fields, args )
  results = clearEmptyValues( results )

  return results
end

-- Store values to a Cargo table.
--
-- @param dbtable
-- @param values
function Cargo.store(dbtable, values)
	checkType( "store", 1, dbtable, "string" )
	checkType( "store", 2, values, "table" )
	
	local data = {}
	for k,v in pairs( values ) do
		k = tostring( k )
		if type(v) == "boolean" then
			data[k] = v and 1 or 0
		else
			data[k] = tostring( v )
		end
	end
	local frame = mw.getCurrentFrame()
	return frame:callParserFunction{name = "#cargo_store:_table=" .. dbtable, args = data}
end

return Cargo
Advertisement