CREATE TABLE networker_worlds ( id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, slug VARCHAR(150) NOT NULL UNIQUE, title VARCHAR(200) NOT NULL, description VARCHAR(1200), difficulty VARCHAR(30) NOT NULL DEFAULT 'junior', exam_scope VARCHAR(20) NOT NULL DEFAULT 'AP1', sort_order INT NOT NULL DEFAULT 0, active BOOLEAN NOT NULL DEFAULT TRUE, CONSTRAINT chk_networker_exam_scope CHECK (exam_scope IN ('AP1','AP2_FIAE','AP2_FISI','CROSS')) ); CREATE TABLE networker_levels ( id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, world_id BIGINT NOT NULL REFERENCES networker_worlds(id) ON DELETE CASCADE, title VARCHAR(200) NOT NULL, level_type VARCHAR(30) NOT NULL, points INT NOT NULL DEFAULT 100, sort_order INT NOT NULL DEFAULT 0, payload VARCHAR(8000) NOT NULL ); CREATE INDEX idx_networker_levels_world ON networker_levels(world_id);