|
|
(3 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| local p = {} | | local p = {} |
| local CACHE_EXPIRATION = 86400 -- Cache for 24 hours (in seconds)
| |
|
| |
|
| -- Function to cache the result for the current page view
| |
| local function setCache(category, pages)
| |
| local cache = mw.ext.LuaCache
| |
| if cache then
| |
| local key = "NumberOfWorks_" .. category
| |
| cache:set(key, pages, CACHE_EXPIRATION)
| |
| end
| |
| end
| |
|
| |
| -- Function to get the cached result for the current page view
| |
| local function getCache(category)
| |
| local cache = mw.ext.LuaCache
| |
| if cache then
| |
| local key = "NumberOfWorks_" .. category
| |
| return cache:get(key)
| |
| end
| |
| return nil
| |
| end
| |
|
| |
| -- Main function to get the number of works
| |
| function p.getWorkCount(frame) | | function p.getWorkCount(frame) |
| local category = frame.args.category or '' | | local category = frame.args.category or '' |
| if category == '' then return "0 works" end
| |
|
| |
| -- Check the cache first
| |
| local cachedPages = getCache(category)
| |
| if cachedPages then
| |
| if tonumber(cachedPages) == 1 then
| |
| return "1 work"
| |
| else
| |
| return cachedPages .. " works"
| |
| end
| |
| end
| |
|
| |
| -- No cached result, perform expensive call
| |
| local pages = mw.site.stats.pagesInCategory(category) | | local pages = mw.site.stats.pagesInCategory(category) |
| | | |
| -- Cache the result | |
| setCache(category, pages)
| |
| | |
| -- Return the result
| |
| if tonumber(pages) == 1 then | | if tonumber(pages) == 1 then |
| return "1 work" | | return "1 work" |
local p = {}
function p.getWorkCount(frame)
local category = frame.args.category or ''
local pages = mw.site.stats.pagesInCategory(category)
if tonumber(pages) == 1 then
return "1 work"
else
return pages .. " works"
end
end
function p.main(frame)
return p.getWorkCount(frame)
end
return p