Module:VillageTest: Difference between revisions

From RetroMC
Jump to navigation Jump to search
(memory management test)
No edit summary
Line 43: Line 43:


local VillagesNameTable = {}
local VillagesNameTable = {}
local VillagesUuidTable = {}
local VillagesOwnerTable = {}




Line 98: Line 100:


               -- VillagesTable.name = VP_Data.name
               -- VillagesTable.name = VP_Data.name
                 --table.insert(VillagesTable.uuid,VP_Data.uuid)
                 table.insert(VillagesUuidTable,VP_Data.uuid)
                 --table.insert(VillagesTable.owner,VP_Data.owner)
                 table.insert(VillagesOwnerTable,VP_Data.owner)
        
        


Line 182: Line 184:
             villagelistprocessor(villagelist, "Villages",retval)
             villagelistprocessor(villagelist, "Villages",retval)


             mw.logObject(VillagesNameTable)
             --mw.logObject(VillagesNameTable)




           for i, VillagesData in ipairs(VillagesNameTable) do
           for namenumber, VillagesNameData in ipairs(VillagesNameTable) do
         
                for uuidnumber, VillagesUuidData in ipairs(VillagesUuidTable) do
                if VillagesData ~= nil then
                    for ownernumber, VillagesOwnerData in ipairs(VillagesOwnerTable) do
 
                        if VillagesNameData and VillagesUuidData and VillagesOwnerData ~= nil then
 
                   
 
                           
                   
                                --mw.log("NUMBER"..namenumber.." UUID Number" .. uuidnumber.." ownernumber"..ownernumber)
                                --mw.logObject(VillagesNameData)
                                --mw.logObject(VillagesUuidData)
                                --mw.logObject(VillagesOwnerData)
                                retval:addRow('Name:',VillagesNameData,'','icr-transparency1 icr-data')
                                retval:addRow('UUID:',VillagesUuidData,'','icr-transparency1 icr-data')
                                retval:addRow('Owner UUID:',VillagesOwnerData,'','icr-transparency1 icr-data')
                                --retval.addRow('Name:',VillagesData.uuid,'','icr-transparency1 icr-data')
                                --retval.addRow('Name:',VillagesData.owner,'','icr-transparency1 icr-data')
 
                      
                      
                    if VillagesData == VillagesData.name then
                       
                        retval.addRow('Name:',VillagesData.name,'','icr-transparency1 icr-data')
                        --retval.addRow('Name:',VillagesData.uuid,'','icr-transparency1 icr-data')
                        --retval.addRow('Name:',VillagesData.owner,'','icr-transparency1 icr-data')


                        end
                     end
                     end
                 end
                 end
         
               
          end
            end
                  
                  
      
      

Revision as of 11:55, 31 January 2025

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

local VillageTest  =  {}
local capiunto = require 'capiunto'
--local externalData = require('externaldata')


--[ Thecow275's WikiStats V2 VIllages MODULE PROTOTYPE ]
--[ Nicknamed: UUID and J-Village Update]

local function preprocessArg(s)
if not s then
    return nil 
end
s = s:match('^%s*(.-)%s*$') --trim whitespace
if s == '' then
    return nil
else
    return s
    end

end

local debug = 0;

function VillageTest.debug(frame)
    debug = 1;
VillageTest.main(
    mw.getCurrentFrame():newChild{
        title = "Module:VillageTest",
        args ={"thecow275","villagelist"}
    
     }
    
    )

end

--[[
WE CREATE the TABLES HERE FOR THE MODULE TO STORE STUFF IN
DO NOT REMOVE THE TABLES SINCE THEY SERVE THE PURPOSE OF STORING THE DATA SO THAT
MEDIAWIKI CAN UNLOAD EXTENSIONS FROM MEROY BEFORE WE PROCESS THE DATA

]]

local VillagesNameTable = {}
local VillagesUuidTable = {}
local VillagesOwnerTable = {}


function villagehelper(PV_Input, PV_Name, retval)
        local PV_Input =  PV_Input
        local PV_Name = PV_Name
        local retval = retval
        retval:addHeader(PV_Name)
       -- mw.log(' DATA FOR:  '..PV_Name..':')
                for i, PV_Data in ipairs(PV_Input) do  --[[ For Example: playerVillages.__json.data.member ]]--
                     --mw.log('villagehelper iterations:  '..i)
                     --mw.logObject(PV_Data)
                     
                    if PV_Data ~= nil then
                        if type(PV_Data) == "table" and PV_Data.village then
                            --mw.logObject(PV_Data.village)
                           -- mw.log('SUCCESS: PV_Data is a Table')
                            local PV_Data_Local = PV_Data.village
                        
                            retval:addRow('',PV_Data_Local,'','icr-transparency1 icr-data')
                        
                        elseif type(PV_Data) == "string" or PV_Data == nil then
                          --  mw.logObject(PV_Data)
                            --local PV_Data_Local = 'ERROR: API FAILURE'
                          --  mw.log('ERROR: PV_Data is a String or nil, Supposed to be a Table')
                        end
                    
                    elseif PV_Data == nil then
                     --   mw.log('ERROR PV_Data is nil ABORTING')
                        retval:addRow('','API ERROR RETURNING NIL','','icr-transparencry1 icr-data')
                    
                    end
                end
end


function villagelistprocessor(VP_Input, VP_Name, retval)
        local VP_Input = VP_Input
        local VP_Name = VP_Name
        local retval = retval


        retval:addHeader(VP_Name)
        for i, VP_Data in ipairs(VP_Input) do

            if VP_Data ~= nil then


            if type(VP_Data) == "table" and VP_Data.name and VP_Data.uuid and VP_Data.owner then
                --local VP_Data_Local = VP_Data.name
                --local VP_UUID_Local = VP_Data.uuid
                --local VP_OWNER_LOCAL = VP_Data.owner

                table.insert(VillagesNameTable,VP_Data.name)

               -- VillagesTable.name = VP_Data.name
                table.insert(VillagesUuidTable,VP_Data.uuid)
                table.insert(VillagesOwnerTable,VP_Data.owner)
      

                

               -- retval:addRow('Name:',VP_Data_Local,'','icr-transparency1 icr-data')
               -- retval:addRow('UUID',VP_UUID_Local,'','icr-transparency1 icr-data')
               -- retval:addRow('OWNER UUID',VP_OWNER_LOCAL,'','icr-transparency1 icr-data')
               

            elseif type(VP_Data) == "string" or VP_Data == nil then
                --mw.logObject(VP_Data)
                mw.log('VP_Data is nil this shouldn\'t be the case')

            end
            elseif VP_Data == nil then
                mw.log('ERROR VP_Data is nil ABORTING')
                        retval:addRow('','API ERROR RETURNING NIL','','icr-transparencry1 icr-data')

            end
    
    

    end
end




function VillageTest.main(frame)
    local args = frame.args
    local input = preprocessArg(args[1])
    local infoboxtype = preprocessArg(args[2]) -- currently unused will be used whenever I implement more datatypes
    

   if not input then -- CHECK FOR BLANK INPUT
       return 'INPUT ERROR INPUT IS NULL'
    end
   if infoboxtype == "{{{2}}}" then
    infoboxtype = "playervillages"
    
   end

    local uuid = '8fa8f70d-eb7d-4743-b0ad-837cdfb69f4e' --[thecow275]--
    --local uuid = 'b08b6a7a-aada-4787-bb4b-07fc393ad6e5' --[QueenOfAsh]--
    local villagelist = mw.ext.externalData.getExternalData({
        url =  "https://api.retromc.org/api/v1/village/getVillageList",
        format =  'json',
        data = villages
    })
     --mw.log('Village List API')
     --mw.logObject(villagelist.villages)
     --mw.logObject(villagelist.error)

    local playerVillages = mw.ext.externalData.getExternalData({
        url = "https://statistics.retromc.org/api/user_villages?uuid=" .. uuid,
        format = 'json',
        data = url

    })
    
    local retval = capiunto.create({
        top = 'TESTING',
        bodyClass = 'icr-DiamondCitizenBodyStyle',
        topClass = 'icr-title'
    })

    retval:addRow('HOWDY', 'HOWDEE', '', 'icr-transparency1 icr-data')

    
    if playerVillages.__json.data then

       
        
      
        if infoboxtype == "playervillages" then
                villagehelper(playerVillages.__json.data.member, "Member",retval)
                villagehelper(playerVillages.__json.data.owner, "Owner",retval)
                villagehelper(playerVillages.__json.data.assistant, "Assistant",retval)
        elseif infoboxtype == "villagelist" then

            villagelistprocessor(villagelist, "Villages",retval)

            --mw.logObject(VillagesNameTable)


           for namenumber, VillagesNameData in ipairs(VillagesNameTable) do
                for uuidnumber, VillagesUuidData in ipairs(VillagesUuidTable) do
                    for ownernumber, VillagesOwnerData in ipairs(VillagesOwnerTable) do

                        if VillagesNameData and VillagesUuidData and VillagesOwnerData ~= nil then

                    

                            
                    
                                 --mw.log("NUMBER"..namenumber.." UUID Number" .. uuidnumber.." ownernumber"..ownernumber)
                                 --mw.logObject(VillagesNameData)
                                 --mw.logObject(VillagesUuidData)
                                 --mw.logObject(VillagesOwnerData)
                                 retval:addRow('Name:',VillagesNameData,'','icr-transparency1 icr-data')
                                 retval:addRow('UUID:',VillagesUuidData,'','icr-transparency1 icr-data')
                                 retval:addRow('Owner UUID:',VillagesOwnerData,'','icr-transparency1 icr-data')
                                 --retval.addRow('Name:',VillagesData.uuid,'','icr-transparency1 icr-data')
                                 --retval.addRow('Name:',VillagesData.owner,'','icr-transparency1 icr-data')

                    

                        end
                    end
                end
                
            end
                
     
        end


        
       
            
        
        
        
    end
    --mw.logObject(villagels)
    --mw.logObject(playerVillages.__json.data.member)
    --mw.logObject(member.village)
    --mw.logObject(playerVillages.data)
    --mw.logObject(playerVillages.status)
    --mw.logObject(villagelist.villages)
    return retval
end
return VillageTest