Zelda Wiki

Want to contribute to this wiki?
Sign up for an account, and get started!

Come join the Zelda Wiki community Discord server!

READ MORE

Zelda Wiki
Advertisement

local utilsCargo = require("Module:UtilsCargo")
local utilsString = require("Module:UtilsString")
local utilsTable = require("Module:UtilsTable")

local gameFields = "canonOrder, code, article, shortName, link, display, logo, releaseDate, canonicity, type, graphics, family, remakeOf, supersededBy"
local bookFields = "canonOrder, code, article, shortName, link, display, logo, releaseDate, canonicity, type, phraseLink, publisher, authors, basedOn"
local tvFields = "canonOrder, code, article, shortName, link, display, logo, releaseDate, canonicity, type"
local nonFictionFields = "code, article, shortName, link, display, logo, releaseDate, canonicity, publisher, titles"
local groupFields=  "code, article, shortName, link, display, logo, releaseDate, canonicity, games"

local games = utilsCargo.query("Games", gameFields, { sortBy = "canonOrder", limit = 200 })
local books = utilsCargo.query("Books", bookFields, { sortBy = "canonOrder" })
local tvShows = utilsCargo.query("TelevisionShows", tvFields, { sortBy = "canonOrder" })
local nonfiction = utilsCargo.query("Nonfiction", nonFictionFields, { sortBy = "releaseDate" })
local groups = utilsCargo.query("GameGroups", groupFields, { sortBy = "releaseDate" })
 -- Cargo isn't sorting properly for some reason
groups =  utilsTable.sortBy(groups, "releaseDate")
nonfiction = utilsTable.sortBy(nonfiction, "releaseDate")

local codes = {}
local gameCodes = {}
local titlesByCode = {}
local remakes = {}

for _, game in ipairs(games) do
	codes[tonumber(game.canonOrder)] = game.code
	gameCodes[tonumber(game.canonOrder)] = game.code
	titlesByCode[string.lower(game.code)] = game
	if game.remakeOf then
		for i, remadeGame in ipairs(utilsString.split(game.remakeOf)) do
			remadeGame = string.lower(remadeGame)
			remakes[remadeGame] = utilsTable.concat(remakes[remadeGame], game.code)
		end
	end
	
	-- Temporary workaround for Cargo behavior changes after MW 1.39 upgrade
	if game.family == nil then
		game.family = ''
	end
end
gameCodes = utilsTable.compact(gameCodes)

for _, book in ipairs(books) do
	if utilsString.notEmpty(book.code) then -- workaround for Cargo bug inserting duplicate rows (but without code) 
		codes[tonumber(book.canonOrder)] = book.code
		titlesByCode[string.lower(book.code)] = book
	end
end

for _, tvShow in ipairs(tvShows) do
	codes[tonumber(tvShow.canonOrder)] = tvShow.code
	titlesByCode[string.lower(tvShow.code)] = tvShow
end

for _, book in ipairs(nonfiction) do
	titlesByCode[string.lower(book.code)] = book
end

for _, group in ipairs(groups) do
	titlesByCode[string.lower(group.code)] = group
end

codes.reference = "[[Data:Franchise]]"
gameCodes.reference = "[[Data:Franchise]]"

return {
	enum = codes,
	enumGames = gameCodes,
	games = games,
	titlesByCode = titlesByCode,
	remakes = remakes,
	nonfiction = nonfiction,
	groups = groups,
}
Advertisement