Migration 145: mc_versions table with java_version, paper/forge/neoforge/fabric support flags, seeded with 11 known versions for immediate use. New: src/services/mcVersionSync.js - javaVersionForMC() handles both 1.x.y legacy and 26.x.y calendar schemes - Daily 3AM pg-boss cron fetches Paper API + Modrinth /tag/game_version, upserts mc_versions with correct loader flags and Java version mapping - getVersions(filter) for DB-backed lookups with loader filtering - semver.rcompare for proper version sorting across both schemes Routes: GET /admin/modpack-installer/mc-versions — JSON endpoint for dynamic version dropdowns, filterable by loader (paper/forge/neoforge/fabric), with hardcoded fallback if DB is unavailable. Views updated: - _vanilla_form.ejs: MC version dropdown loaded dynamically (Paper-only filter), Java auto-select reads java_version from DB row - index.ejs: search filter version dropdown loaded dynamically from mc_versions - _pack_details.ejs: client-side Java logic handles major >= 26 index.js: registers mc-version-sync cron via pg-boss after queue init. package.json: added semver ^7.6.3. ACTIVE_CONTEXT updated.
29 lines
1.2 KiB
SQL
29 lines
1.2 KiB
SQL
-- Migration 145: mc_versions table (REQ-2026-04-16-mc-versioning)
|
|
-- Caches available MC versions with loader support flags.
|
|
-- Refreshed daily at 3AM via pg-boss cron job.
|
|
|
|
CREATE TABLE IF NOT EXISTS mc_versions (
|
|
version VARCHAR(20) PRIMARY KEY,
|
|
java_version INT NOT NULL DEFAULT 21,
|
|
paper_supported BOOLEAN DEFAULT FALSE,
|
|
forge_supported BOOLEAN DEFAULT FALSE,
|
|
neoforge_supported BOOLEAN DEFAULT FALSE,
|
|
fabric_supported BOOLEAN DEFAULT FALSE,
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- Seed with known versions so installer works before first cron run
|
|
INSERT INTO mc_versions (version, java_version, paper_supported, forge_supported, neoforge_supported, fabric_supported) VALUES
|
|
('26.1.2', 21, true, false, true, true),
|
|
('26.1.1', 21, true, false, true, true),
|
|
('26.1', 21, true, false, true, true),
|
|
('1.21.4', 21, true, false, true, true),
|
|
('1.21.1', 21, true, true, true, true),
|
|
('1.20.4', 17, true, true, false, true),
|
|
('1.20.1', 17, true, true, false, true),
|
|
('1.19.4', 17, true, true, false, true),
|
|
('1.19.2', 17, true, true, false, true),
|
|
('1.18.2', 17, true, true, false, true),
|
|
('1.16.5', 8, true, true, false, true)
|
|
ON CONFLICT (version) DO NOTHING;
|