gauntlets

This commit is contained in:
Jill 2023-01-05 16:43:45 +03:00
parent 6285395adb
commit d99741d10d
3 changed files with 42 additions and 2 deletions

View File

@ -0,0 +1,14 @@
-- +migrate up
CREATE TABLE gauntlets (
id SERIAL PRIMARY KEY
);
CREATE TABLE gauntlet_links (
idx INTEGER NOT NULL DEFAULT 0, -- solely for ordering purposes
gauntlet_id INTEGER NOT NULL REFERENCES gauntlets(id),
level_id INTEGER NOT NULL REFERENCES levels(id)
);
-- +migrate down
DROP TABLE gauntlets;
DROP TABLE gauntlet_links;

View File

@ -75,7 +75,9 @@ CrystalGauntlet.endpoints["/getGJLevels21.php"] = ->(context : HTTP::Server::Con
queryParams << "levels.stars is null"
end
if params["gauntlet"]?
# todo
order = "gauntlet_links.idx asc"
joins << "left join gauntlet_links on gauntlet_links.level_id = levels.id"
queryParams << "gauntlet_id = #{params["gauntlet"].to_i}"
end
if params["len"]?
# todo
@ -108,7 +110,7 @@ CrystalGauntlet.endpoints["/getGJLevels21.php"] = ->(context : HTTP::Server::Con
end
# level search type
case params["type"]
case params["type"]?
when "0", "15", nil # default sort (gdw is 15)
order = "likes desc"
when "1" # most downloaded

View File

@ -0,0 +1,24 @@
require "uri"
include CrystalGauntlet
mappacks_per_page = 10
CrystalGauntlet.endpoints["/getGJGauntlets21.php"] = ->(context : HTTP::Server::Context): String {
params = URI::Params.parse(context.request.body.not_nil!.gets_to_end)
LOG.debug { params.inspect }
gauntlets = [] of String
checksum_str = [] of String
DATABASE.query_all("select id from gauntlets", as: {Int32}).each() do |id|
levels = DATABASE.query_all("select level_id from gauntlet_links where gauntlet_id = ? order by idx", id, as: {Int32}).join(",")
gauntlets << Format.fmt_hash({
1 => id,
3 => levels
})
checksum_str << (id.to_s + levels)
end
return gauntlets.join("|") + "#" + Hashes.gen_solo_2(checksum_str.join(""))
}