Release 2.9.0

This commit is contained in:
2026-08-28 02:53:59 +01:00
parent 9097d45d6a
commit 3de0e89e94
67 changed files with 1767 additions and 98 deletions
+29
View File
@@ -203,9 +203,11 @@ async function ensureSchema(pool, options) {
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
feed_url VARCHAR(1024) NOT NULL,
enabled TINYINT(1) NOT NULL DEFAULT 1,
update_interval_value INT NOT NULL DEFAULT 60,
update_interval_unit VARCHAR(10) NOT NULL DEFAULT 'minutes',
item_limit INT NOT NULL DEFAULT 1,
last_pulled_at DATETIME NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
created_by INT NULL,
modified_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
@@ -247,6 +249,7 @@ async function ensureSchema(pool, options) {
token_header_name VARCHAR(255) NULL DEFAULT 'Authorization',
token_header_prefix VARCHAR(64) NULL DEFAULT 'Bearer',
items_path VARCHAR(255) NULL,
enabled TINYINT(1) NOT NULL DEFAULT 1,
update_interval_value INT NOT NULL DEFAULT 60,
update_interval_unit VARCHAR(10) NOT NULL DEFAULT 'minutes',
last_pulled_at TIMESTAMP NULL,
@@ -261,6 +264,32 @@ async function ensureSchema(pool, options) {
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
`);
await pool.query(`
CREATE TABLE IF NOT EXISTS i_weather_locations (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL UNIQUE,
location_label VARCHAR(255) NOT NULL,
latitude DECIMAL(9,6) NOT NULL,
longitude DECIMAL(9,6) NOT NULL,
timezone VARCHAR(128) NOT NULL,
provider VARCHAR(32) NOT NULL DEFAULT 'open-meteo',
temperature_unit VARCHAR(16) NOT NULL DEFAULT 'celsius',
wind_unit VARCHAR(16) NOT NULL DEFAULT 'kmh',
precipitation_unit VARCHAR(16) NOT NULL DEFAULT 'mm',
enabled TINYINT(1) NOT NULL DEFAULT 1,
update_interval_value INT NOT NULL DEFAULT 30,
update_interval_unit VARCHAR(16) NOT NULL DEFAULT 'minutes',
last_pulled_at DATETIME NULL,
last_pull_error VARCHAR(1024) NULL,
last_response_json MEDIUMTEXT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
created_by INT NULL,
modified_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
modified_by INT NULL,
INDEX idx_weather_locations_modified_at (modified_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
`);
await pool.query(`
CREATE TABLE IF NOT EXISTS i_timetable_groups (
id INT AUTO_INCREMENT PRIMARY KEY,
+40
View File
@@ -505,6 +505,46 @@ const VERSIONED_MIGRATIONS = [
await ensureColumn(pool, 'i_api_sources', 'token_header_name', "VARCHAR(255) NULL DEFAULT 'Authorization'", 'token_response_path');
await ensureColumn(pool, 'i_api_sources', 'token_header_prefix', "VARCHAR(64) NULL DEFAULT 'Bearer'", 'token_header_name');
}
},
{
version: '2.8.8',
label: 'v2.8.8 weather locations and RSS collection timestamps schema',
run: async function (pool) {
await pool.query(`
CREATE TABLE IF NOT EXISTS i_weather_locations (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL UNIQUE,
location_label VARCHAR(255) NOT NULL,
latitude DECIMAL(9,6) NOT NULL,
longitude DECIMAL(9,6) NOT NULL,
timezone VARCHAR(128) NOT NULL,
provider VARCHAR(32) NOT NULL DEFAULT 'open-meteo',
temperature_unit VARCHAR(16) NOT NULL DEFAULT 'celsius',
wind_unit VARCHAR(16) NOT NULL DEFAULT 'kmh',
precipitation_unit VARCHAR(16) NOT NULL DEFAULT 'mm',
update_interval_value INT NOT NULL DEFAULT 30,
update_interval_unit VARCHAR(16) NOT NULL DEFAULT 'minutes',
last_pulled_at DATETIME NULL,
last_pull_error VARCHAR(1024) NULL,
last_response_json MEDIUMTEXT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
created_by INT NULL,
modified_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
modified_by INT NULL,
INDEX idx_weather_locations_modified_at (modified_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
`);
await ensureColumn(pool, 'i_rss_feeds', 'last_pulled_at', 'DATETIME NULL', 'item_limit');
}
},
{
version: '2.8.9',
label: 'v2.8.9 data source enablement schema',
run: async function (pool) {
await ensureColumn(pool, 'i_api_sources', 'enabled', 'TINYINT(1) NOT NULL DEFAULT 1', 'items_path');
await ensureColumn(pool, 'i_rss_feeds', 'enabled', 'TINYINT(1) NOT NULL DEFAULT 1', 'feed_url');
await ensureColumn(pool, 'i_weather_locations', 'enabled', 'TINYINT(1) NOT NULL DEFAULT 1', 'precipitation_unit');
}
}
];