mirror of
https://github.com/louislam/uptime-kuma.git
synced 2026-05-17 08:26:56 +03:00
chore: enable formatting over the entire codebase in CI (#6655)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
@@ -39,7 +39,7 @@ async function createTables() {
|
||||
table.integer("user_id").unsigned().notNullable();
|
||||
table.string("protocol", 10).notNullable();
|
||||
table.string("host", 255).notNullable();
|
||||
table.smallint("port").notNullable(); // TODO: Maybe a issue with MariaDB, need migration to int
|
||||
table.smallint("port").notNullable(); // TODO: Maybe a issue with MariaDB, need migration to int
|
||||
table.boolean("auth").notNullable();
|
||||
table.string("username", 255).nullable();
|
||||
table.string("password", 255).nullable();
|
||||
@@ -67,10 +67,7 @@ async function createTables() {
|
||||
table.increments("id");
|
||||
table.string("name", 150);
|
||||
table.boolean("active").notNullable().defaultTo(true);
|
||||
table.integer("user_id").unsigned()
|
||||
.references("id").inTable("user")
|
||||
.onDelete("SET NULL")
|
||||
.onUpdate("CASCADE");
|
||||
table.integer("user_id").unsigned().references("id").inTable("user").onDelete("SET NULL").onUpdate("CASCADE");
|
||||
table.integer("interval").notNullable().defaultTo(20);
|
||||
table.text("url");
|
||||
table.string("type", 20);
|
||||
@@ -83,7 +80,7 @@ async function createTables() {
|
||||
table.boolean("ignore_tls").notNullable().defaultTo(false);
|
||||
table.boolean("upside_down").notNullable().defaultTo(false);
|
||||
table.integer("maxredirects").notNullable().defaultTo(10);
|
||||
table.text("accepted_statuscodes_json").notNullable().defaultTo("[\"200-299\"]");
|
||||
table.text("accepted_statuscodes_json").notNullable().defaultTo('["200-299"]');
|
||||
table.string("dns_resolve_type", 5);
|
||||
table.string("dns_resolve_server", 255);
|
||||
table.string("dns_last_result", 255);
|
||||
@@ -94,11 +91,9 @@ async function createTables() {
|
||||
table.text("headers").defaultTo(null);
|
||||
table.text("basic_auth_user").defaultTo(null);
|
||||
table.text("basic_auth_pass").defaultTo(null);
|
||||
table.integer("docker_host").unsigned()
|
||||
.references("id").inTable("docker_host");
|
||||
table.integer("docker_host").unsigned().references("id").inTable("docker_host");
|
||||
table.string("docker_container", 255);
|
||||
table.integer("proxy_id").unsigned()
|
||||
.references("id").inTable("proxy");
|
||||
table.integer("proxy_id").unsigned().references("id").inTable("proxy");
|
||||
table.boolean("expiry_notification").defaultTo(true);
|
||||
table.text("mqtt_topic");
|
||||
table.string("mqtt_success_message", 255);
|
||||
@@ -130,8 +125,12 @@ async function createTables() {
|
||||
await knex.schema.createTable("heartbeat", (table) => {
|
||||
table.increments("id");
|
||||
table.boolean("important").notNullable().defaultTo(false);
|
||||
table.integer("monitor_id").unsigned().notNullable()
|
||||
.references("id").inTable("monitor")
|
||||
table
|
||||
.integer("monitor_id")
|
||||
.unsigned()
|
||||
.notNullable()
|
||||
.references("id")
|
||||
.inTable("monitor")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
table.smallint("status").notNullable();
|
||||
@@ -143,9 +142,9 @@ async function createTables() {
|
||||
table.integer("down_count").notNullable().defaultTo(0);
|
||||
|
||||
table.index("important");
|
||||
table.index([ "monitor_id", "time" ], "monitor_time_index");
|
||||
table.index(["monitor_id", "time"], "monitor_time_index");
|
||||
table.index("monitor_id");
|
||||
table.index([ "monitor_id", "important", "time" ], "monitor_important_time_index");
|
||||
table.index(["monitor_id", "important", "time"], "monitor_important_time_index");
|
||||
});
|
||||
|
||||
// incident
|
||||
@@ -166,10 +165,7 @@ async function createTables() {
|
||||
table.increments("id");
|
||||
table.string("title", 150).notNullable();
|
||||
table.text("description").notNullable();
|
||||
table.integer("user_id").unsigned()
|
||||
.references("id").inTable("user")
|
||||
.onDelete("SET NULL")
|
||||
.onUpdate("CASCADE");
|
||||
table.integer("user_id").unsigned().references("id").inTable("user").onDelete("SET NULL").onUpdate("CASCADE");
|
||||
table.boolean("active").notNullable().defaultTo(true);
|
||||
table.string("strategy", 50).notNullable().defaultTo("single");
|
||||
table.datetime("start_date");
|
||||
@@ -181,7 +177,7 @@ async function createTables() {
|
||||
table.integer("interval_day");
|
||||
|
||||
table.index("active");
|
||||
table.index([ "strategy", "active" ], "manual_active");
|
||||
table.index(["strategy", "active"], "manual_active");
|
||||
table.index("user_id", "maintenance_user_id");
|
||||
});
|
||||
|
||||
@@ -209,13 +205,21 @@ async function createTables() {
|
||||
await knex.schema.createTable("maintenance_status_page", (table) => {
|
||||
table.increments("id");
|
||||
|
||||
table.integer("status_page_id").unsigned().notNullable()
|
||||
.references("id").inTable("status_page")
|
||||
table
|
||||
.integer("status_page_id")
|
||||
.unsigned()
|
||||
.notNullable()
|
||||
.references("id")
|
||||
.inTable("status_page")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
|
||||
table.integer("maintenance_id").unsigned().notNullable()
|
||||
.references("id").inTable("maintenance")
|
||||
table
|
||||
.integer("maintenance_id")
|
||||
.unsigned()
|
||||
.notNullable()
|
||||
.references("id")
|
||||
.inTable("maintenance")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
});
|
||||
@@ -223,8 +227,12 @@ async function createTables() {
|
||||
// maintenance_timeslot
|
||||
await knex.schema.createTable("maintenance_timeslot", (table) => {
|
||||
table.increments("id");
|
||||
table.integer("maintenance_id").unsigned().notNullable()
|
||||
.references("id").inTable("maintenance")
|
||||
table
|
||||
.integer("maintenance_id")
|
||||
.unsigned()
|
||||
.notNullable()
|
||||
.references("id")
|
||||
.inTable("maintenance")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
table.datetime("start_date").notNullable();
|
||||
@@ -232,35 +240,51 @@ async function createTables() {
|
||||
table.boolean("generated_next").defaultTo(false);
|
||||
|
||||
table.index("maintenance_id");
|
||||
table.index([ "maintenance_id", "start_date", "end_date" ], "active_timeslot_index");
|
||||
table.index(["maintenance_id", "start_date", "end_date"], "active_timeslot_index");
|
||||
table.index("generated_next", "generated_next_index");
|
||||
});
|
||||
|
||||
// monitor_group
|
||||
await knex.schema.createTable("monitor_group", (table) => {
|
||||
table.increments("id");
|
||||
table.integer("monitor_id").unsigned().notNullable()
|
||||
.references("id").inTable("monitor")
|
||||
table
|
||||
.integer("monitor_id")
|
||||
.unsigned()
|
||||
.notNullable()
|
||||
.references("id")
|
||||
.inTable("monitor")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
table.integer("group_id").unsigned().notNullable()
|
||||
.references("id").inTable("group")
|
||||
table
|
||||
.integer("group_id")
|
||||
.unsigned()
|
||||
.notNullable()
|
||||
.references("id")
|
||||
.inTable("group")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
table.integer("weight").notNullable().defaultTo(1000);
|
||||
table.boolean("send_url").notNullable().defaultTo(false);
|
||||
|
||||
table.index([ "monitor_id", "group_id" ], "fk");
|
||||
table.index(["monitor_id", "group_id"], "fk");
|
||||
});
|
||||
// monitor_maintenance
|
||||
await knex.schema.createTable("monitor_maintenance", (table) => {
|
||||
table.increments("id");
|
||||
table.integer("monitor_id").unsigned().notNullable()
|
||||
.references("id").inTable("monitor")
|
||||
table
|
||||
.integer("monitor_id")
|
||||
.unsigned()
|
||||
.notNullable()
|
||||
.references("id")
|
||||
.inTable("monitor")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
table.integer("maintenance_id").unsigned().notNullable()
|
||||
.references("id").inTable("maintenance")
|
||||
table
|
||||
.integer("maintenance_id")
|
||||
.unsigned()
|
||||
.notNullable()
|
||||
.references("id")
|
||||
.inTable("maintenance")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
|
||||
@@ -280,17 +304,25 @@ async function createTables() {
|
||||
|
||||
// monitor_notification
|
||||
await knex.schema.createTable("monitor_notification", (table) => {
|
||||
table.increments("id").unsigned(); // TODO: no auto increment????
|
||||
table.integer("monitor_id").unsigned().notNullable()
|
||||
.references("id").inTable("monitor")
|
||||
table.increments("id").unsigned(); // TODO: no auto increment????
|
||||
table
|
||||
.integer("monitor_id")
|
||||
.unsigned()
|
||||
.notNullable()
|
||||
.references("id")
|
||||
.inTable("monitor")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
table.integer("notification_id").unsigned().notNullable()
|
||||
.references("id").inTable("notification")
|
||||
table
|
||||
.integer("notification_id")
|
||||
.unsigned()
|
||||
.notNullable()
|
||||
.references("id")
|
||||
.inTable("notification")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
|
||||
table.index([ "monitor_id", "notification_id" ], "monitor_notification_index");
|
||||
table.index(["monitor_id", "notification_id"], "monitor_notification_index");
|
||||
});
|
||||
|
||||
// tag
|
||||
@@ -304,12 +336,20 @@ async function createTables() {
|
||||
// monitor_tag
|
||||
await knex.schema.createTable("monitor_tag", (table) => {
|
||||
table.increments("id");
|
||||
table.integer("monitor_id").unsigned().notNullable()
|
||||
.references("id").inTable("monitor")
|
||||
table
|
||||
.integer("monitor_id")
|
||||
.unsigned()
|
||||
.notNullable()
|
||||
.references("id")
|
||||
.inTable("monitor")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
table.integer("tag_id").unsigned().notNullable()
|
||||
.references("id").inTable("tag")
|
||||
table
|
||||
.integer("tag_id")
|
||||
.unsigned()
|
||||
.notNullable()
|
||||
.references("id")
|
||||
.inTable("tag")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
table.text("value");
|
||||
@@ -318,8 +358,12 @@ async function createTables() {
|
||||
// monitor_tls_info
|
||||
await knex.schema.createTable("monitor_tls_info", (table) => {
|
||||
table.increments("id");
|
||||
table.integer("monitor_id").unsigned().notNullable()
|
||||
.references("id").inTable("monitor")
|
||||
table
|
||||
.integer("monitor_id")
|
||||
.unsigned()
|
||||
.notNullable()
|
||||
.references("id")
|
||||
.inTable("monitor")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
table.text("info_json");
|
||||
@@ -331,8 +375,8 @@ async function createTables() {
|
||||
table.string("type", 50).notNullable();
|
||||
table.integer("monitor_id").unsigned().notNullable();
|
||||
table.integer("days").notNullable();
|
||||
table.unique([ "type", "monitor_id", "days" ]);
|
||||
table.index([ "type", "monitor_id", "days" ], "good_index");
|
||||
table.unique(["type", "monitor_id", "days"]);
|
||||
table.index(["type", "monitor_id", "days"], "good_index");
|
||||
});
|
||||
|
||||
// setting
|
||||
@@ -346,16 +390,19 @@ async function createTables() {
|
||||
// status_page_cname
|
||||
await knex.schema.createTable("status_page_cname", (table) => {
|
||||
table.increments("id");
|
||||
table.integer("status_page_id").unsigned()
|
||||
.references("id").inTable("status_page")
|
||||
table
|
||||
.integer("status_page_id")
|
||||
.unsigned()
|
||||
.references("id")
|
||||
.inTable("status_page")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
table.string("domain").notNullable().unique().collate("utf8_general_ci");
|
||||
});
|
||||
|
||||
/*********************
|
||||
* Converted Patch here
|
||||
*********************/
|
||||
* Converted Patch here
|
||||
*********************/
|
||||
|
||||
// 2023-06-30-1348-http-body-encoding.js
|
||||
// ALTER TABLE monitor ADD http_body_encoding VARCHAR(25);
|
||||
@@ -396,8 +443,12 @@ async function createTables() {
|
||||
table.increments("id").primary();
|
||||
table.string("key", 255).notNullable();
|
||||
table.string("name", 255).notNullable();
|
||||
table.integer("user_id").unsigned().notNullable()
|
||||
.references("id").inTable("user")
|
||||
table
|
||||
.integer("user_id")
|
||||
.unsigned()
|
||||
.notNullable()
|
||||
.references("id")
|
||||
.inTable("user")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
table.dateTime("created_date").defaultTo(knex.fn.now()).notNullable();
|
||||
@@ -430,13 +481,11 @@ async function createTables() {
|
||||
ALTER TABLE maintenance ADD timezone VARCHAR(255);
|
||||
ALTER TABLE maintenance ADD duration INTEGER;
|
||||
*/
|
||||
await knex.schema
|
||||
.dropTableIfExists("maintenance_timeslot")
|
||||
.table("maintenance", function (table) {
|
||||
table.text("cron");
|
||||
table.string("timezone", 255);
|
||||
table.integer("duration");
|
||||
});
|
||||
await knex.schema.dropTableIfExists("maintenance_timeslot").table("maintenance", function (table) {
|
||||
table.text("cron");
|
||||
table.string("timezone", 255);
|
||||
table.integer("duration");
|
||||
});
|
||||
|
||||
// 2023-06-30-1413-add-parent-monitor.js.
|
||||
/*
|
||||
@@ -444,10 +493,7 @@ async function createTables() {
|
||||
ADD parent INTEGER REFERENCES [monitor] ([id]) ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
*/
|
||||
await knex.schema.table("monitor", function (table) {
|
||||
table.integer("parent").unsigned()
|
||||
.references("id").inTable("monitor")
|
||||
.onDelete("SET NULL")
|
||||
.onUpdate("CASCADE");
|
||||
table.integer("parent").unsigned().references("id").inTable("monitor").onDelete("SET NULL").onUpdate("CASCADE");
|
||||
});
|
||||
|
||||
/*
|
||||
|
||||
@@ -3,39 +3,41 @@ exports.up = function (knex) {
|
||||
.createTable("stat_minutely", function (table) {
|
||||
table.increments("id");
|
||||
table.comment("This table contains the minutely aggregate statistics for each monitor");
|
||||
table.integer("monitor_id").unsigned().notNullable()
|
||||
.references("id").inTable("monitor")
|
||||
table
|
||||
.integer("monitor_id")
|
||||
.unsigned()
|
||||
.notNullable()
|
||||
.references("id")
|
||||
.inTable("monitor")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
table.integer("timestamp")
|
||||
.notNullable()
|
||||
.comment("Unix timestamp rounded down to the nearest minute");
|
||||
table.integer("timestamp").notNullable().comment("Unix timestamp rounded down to the nearest minute");
|
||||
table.float("ping").notNullable().comment("Average ping in milliseconds");
|
||||
table.smallint("up").notNullable();
|
||||
table.smallint("down").notNullable();
|
||||
|
||||
table.unique([ "monitor_id", "timestamp" ]);
|
||||
table.unique(["monitor_id", "timestamp"]);
|
||||
})
|
||||
.createTable("stat_daily", function (table) {
|
||||
table.increments("id");
|
||||
table.comment("This table contains the daily aggregate statistics for each monitor");
|
||||
table.integer("monitor_id").unsigned().notNullable()
|
||||
.references("id").inTable("monitor")
|
||||
table
|
||||
.integer("monitor_id")
|
||||
.unsigned()
|
||||
.notNullable()
|
||||
.references("id")
|
||||
.inTable("monitor")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
table.integer("timestamp")
|
||||
.notNullable()
|
||||
.comment("Unix timestamp rounded down to the nearest day");
|
||||
table.integer("timestamp").notNullable().comment("Unix timestamp rounded down to the nearest day");
|
||||
table.float("ping").notNullable().comment("Average ping in milliseconds");
|
||||
table.smallint("up").notNullable();
|
||||
table.smallint("down").notNullable();
|
||||
|
||||
table.unique([ "monitor_id", "timestamp" ]);
|
||||
table.unique(["monitor_id", "timestamp"]);
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
return knex.schema
|
||||
.dropTable("stat_minutely")
|
||||
.dropTable("stat_daily");
|
||||
return knex.schema.dropTable("stat_minutely").dropTable("stat_daily");
|
||||
};
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
exports.up = function (knex) {
|
||||
// Add new column heartbeat.end_time
|
||||
return knex.schema
|
||||
.alterTable("heartbeat", function (table) {
|
||||
table.datetime("end_time").nullable().defaultTo(null);
|
||||
});
|
||||
|
||||
return knex.schema.alterTable("heartbeat", function (table) {
|
||||
table.datetime("end_time").nullable().defaultTo(null);
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
// Rename heartbeat.start_time to heartbeat.time
|
||||
return knex.schema
|
||||
.alterTable("heartbeat", function (table) {
|
||||
table.dropColumn("end_time");
|
||||
});
|
||||
return knex.schema.alterTable("heartbeat", function (table) {
|
||||
table.dropColumn("end_time");
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
exports.up = function (knex) {
|
||||
// Add new column heartbeat.retries
|
||||
return knex.schema
|
||||
.alterTable("heartbeat", function (table) {
|
||||
table.integer("retries").notNullable().defaultTo(0);
|
||||
});
|
||||
|
||||
return knex.schema.alterTable("heartbeat", function (table) {
|
||||
table.integer("retries").notNullable().defaultTo(0);
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("heartbeat", function (table) {
|
||||
table.dropColumn("retries");
|
||||
});
|
||||
return knex.schema.alterTable("heartbeat", function (table) {
|
||||
table.dropColumn("retries");
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
exports.up = function (knex) {
|
||||
// Add new column monitor.mqtt_check_type
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.string("mqtt_check_type", 255).notNullable().defaultTo("keyword");
|
||||
});
|
||||
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.string("mqtt_check_type", 255).notNullable().defaultTo("keyword");
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
// Drop column monitor.mqtt_check_type
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.dropColumn("mqtt_check_type");
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.dropColumn("mqtt_check_type");
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
exports.up = function (knex) {
|
||||
// update monitor.push_token to 32 length
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.string("push_token", 32).alter();
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.string("push_token", 32).alter();
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.string("push_token", 20).alter();
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.string("push_token", 20).alter();
|
||||
});
|
||||
};
|
||||
|
||||
@@ -5,9 +5,14 @@ exports.up = function (knex) {
|
||||
table.string("name", 255).notNullable();
|
||||
table.string("url", 255).notNullable();
|
||||
table.integer("user_id").unsigned();
|
||||
}).alterTable("monitor", function (table) {
|
||||
})
|
||||
.alterTable("monitor", function (table) {
|
||||
// Add new column monitor.remote_browser
|
||||
table.integer("remote_browser").nullable().defaultTo(null).unsigned()
|
||||
table
|
||||
.integer("remote_browser")
|
||||
.nullable()
|
||||
.defaultTo(null)
|
||||
.unsigned()
|
||||
.index()
|
||||
.references("id")
|
||||
.inTable("remote_browser");
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
exports.up = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("status_page", function (table) {
|
||||
table.integer("auto_refresh_interval").defaultTo(300).unsigned();
|
||||
});
|
||||
return knex.schema.alterTable("status_page", function (table) {
|
||||
table.integer("auto_refresh_interval").defaultTo(300).unsigned();
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
|
||||
@@ -1,14 +1,29 @@
|
||||
exports.up = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("stat_daily", function (table) {
|
||||
table.float("ping_min").notNullable().defaultTo(0).comment("Minimum ping during this period in milliseconds");
|
||||
table.float("ping_max").notNullable().defaultTo(0).comment("Maximum ping during this period in milliseconds");
|
||||
table
|
||||
.float("ping_min")
|
||||
.notNullable()
|
||||
.defaultTo(0)
|
||||
.comment("Minimum ping during this period in milliseconds");
|
||||
table
|
||||
.float("ping_max")
|
||||
.notNullable()
|
||||
.defaultTo(0)
|
||||
.comment("Maximum ping during this period in milliseconds");
|
||||
})
|
||||
.alterTable("stat_minutely", function (table) {
|
||||
table.float("ping_min").notNullable().defaultTo(0).comment("Minimum ping during this period in milliseconds");
|
||||
table.float("ping_max").notNullable().defaultTo(0).comment("Maximum ping during this period in milliseconds");
|
||||
table
|
||||
.float("ping_min")
|
||||
.notNullable()
|
||||
.defaultTo(0)
|
||||
.comment("Minimum ping during this period in milliseconds");
|
||||
table
|
||||
.float("ping_max")
|
||||
.notNullable()
|
||||
.defaultTo(0)
|
||||
.comment("Maximum ping during this period in milliseconds");
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
exports.up = function (knex) {
|
||||
return knex.schema
|
||||
.createTable("stat_hourly", function (table) {
|
||||
table.increments("id");
|
||||
table.comment("This table contains the hourly aggregate statistics for each monitor");
|
||||
table.integer("monitor_id").unsigned().notNullable()
|
||||
.references("id").inTable("monitor")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
table.integer("timestamp")
|
||||
.notNullable()
|
||||
.comment("Unix timestamp rounded down to the nearest hour");
|
||||
table.float("ping").notNullable().comment("Average ping in milliseconds");
|
||||
table.float("ping_min").notNullable().defaultTo(0).comment("Minimum ping during this period in milliseconds");
|
||||
table.float("ping_max").notNullable().defaultTo(0).comment("Maximum ping during this period in milliseconds");
|
||||
table.smallint("up").notNullable();
|
||||
table.smallint("down").notNullable();
|
||||
return knex.schema.createTable("stat_hourly", function (table) {
|
||||
table.increments("id");
|
||||
table.comment("This table contains the hourly aggregate statistics for each monitor");
|
||||
table
|
||||
.integer("monitor_id")
|
||||
.unsigned()
|
||||
.notNullable()
|
||||
.references("id")
|
||||
.inTable("monitor")
|
||||
.onDelete("CASCADE")
|
||||
.onUpdate("CASCADE");
|
||||
table.integer("timestamp").notNullable().comment("Unix timestamp rounded down to the nearest hour");
|
||||
table.float("ping").notNullable().comment("Average ping in milliseconds");
|
||||
table.float("ping_min").notNullable().defaultTo(0).comment("Minimum ping during this period in milliseconds");
|
||||
table.float("ping_max").notNullable().defaultTo(0).comment("Maximum ping during this period in milliseconds");
|
||||
table.smallint("up").notNullable();
|
||||
table.smallint("down").notNullable();
|
||||
|
||||
table.unique([ "monitor_id", "timestamp" ]);
|
||||
});
|
||||
table.unique(["monitor_id", "timestamp"]);
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
return knex.schema
|
||||
.dropTable("stat_hourly");
|
||||
return knex.schema.dropTable("stat_hourly");
|
||||
};
|
||||
|
||||
@@ -9,7 +9,6 @@ exports.up = function (knex) {
|
||||
.alterTable("stat_hourly", function (table) {
|
||||
table.text("extras").defaultTo(null).comment("Extra statistics during this time period");
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
exports.up = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.string("snmp_oid").defaultTo(null);
|
||||
table.enum("snmp_version", [ "1", "2c", "3" ]).defaultTo("2c");
|
||||
table.string("json_path_operator").defaultTo(null);
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.string("snmp_oid").defaultTo(null);
|
||||
table.enum("snmp_version", ["1", "2c", "3"]).defaultTo("2c");
|
||||
table.string("json_path_operator").defaultTo(null);
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
exports.up = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.boolean("cache_bust").notNullable().defaultTo(false);
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.boolean("cache_bust").notNullable().defaultTo(false);
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.dropColumn("cache_bust");
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.dropColumn("cache_bust");
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
exports.up = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.text("conditions").notNullable().defaultTo("[]");
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.text("conditions").notNullable().defaultTo("[]");
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
|
||||
@@ -4,7 +4,6 @@ exports.up = function (knex) {
|
||||
table.string("rabbitmq_username");
|
||||
table.string("rabbitmq_password");
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
@@ -13,5 +12,4 @@ exports.down = function (knex) {
|
||||
table.dropColumn("rabbitmq_username");
|
||||
table.dropColumn("rabbitmq_password");
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
// Update info_json column to LONGTEXT mainly for MariaDB
|
||||
exports.up = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor_tls_info", function (table) {
|
||||
table.text("info_json", "longtext").alter();
|
||||
});
|
||||
return knex.schema.alterTable("monitor_tls_info", function (table) {
|
||||
table.text("info_json", "longtext").alter();
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
exports.up = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.string("smtp_security").defaultTo(null);
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.string("smtp_security").defaultTo(null);
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
// Add websocket ignore headers and websocket subprotocol
|
||||
exports.up = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.boolean("ws_ignore_sec_websocket_accept_header").notNullable().defaultTo(false);
|
||||
table.string("ws_subprotocol", 255).notNullable().defaultTo("");
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.boolean("ws_ignore_sec_websocket_accept_header").notNullable().defaultTo(false);
|
||||
table.string("ws_subprotocol", 255).notNullable().defaultTo("");
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
|
||||
@@ -4,12 +4,12 @@ exports.up = function (knex) {
|
||||
.alterTable("status_page", function (table) {
|
||||
table.renameColumn("google_analytics_tag_id", "analytics_id");
|
||||
table.string("analytics_script_url");
|
||||
table.enu("analytics_type", [ "google", "umami", "plausible", "matomo" ]).defaultTo(null);
|
||||
|
||||
}).then(() => {
|
||||
table.enu("analytics_type", ["google", "umami", "plausible", "matomo"]).defaultTo(null);
|
||||
})
|
||||
.then(() => {
|
||||
// After a succesful migration, add google as default for previous pages
|
||||
knex("status_page").whereNotNull("analytics_id").update({
|
||||
"analytics_type": "google",
|
||||
analytics_type: "google",
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
@@ -5,20 +5,17 @@ ALTER TABLE monitor ADD ping_per_request_timeout INTEGER default 2 not null;
|
||||
*/
|
||||
exports.up = function (knex) {
|
||||
// Add new columns to table monitor
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.integer("ping_count").defaultTo(1).notNullable();
|
||||
table.boolean("ping_numeric").defaultTo(true).notNullable();
|
||||
table.integer("ping_per_request_timeout").defaultTo(2).notNullable();
|
||||
});
|
||||
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.integer("ping_count").defaultTo(1).notNullable();
|
||||
table.boolean("ping_numeric").defaultTo(true).notNullable();
|
||||
table.integer("ping_per_request_timeout").defaultTo(2).notNullable();
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.dropColumn("ping_count");
|
||||
table.dropColumn("ping_numeric");
|
||||
table.dropColumn("ping_per_request_timeout");
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.dropColumn("ping_count");
|
||||
table.dropColumn("ping_numeric");
|
||||
table.dropColumn("ping_per_request_timeout");
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
// Fix #5721: Change proxy port column type to integer to support larger port numbers
|
||||
exports.up = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("proxy", function (table) {
|
||||
table.integer("port").alter();
|
||||
});
|
||||
return knex.schema.alterTable("proxy", function (table) {
|
||||
table.integer("port").alter();
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
// Add column custom_url to monitor_group table
|
||||
exports.up = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor_group", function (table) {
|
||||
table.text("custom_url", "text");
|
||||
});
|
||||
return knex.schema.alterTable("monitor_group", function (table) {
|
||||
table.text("custom_url", "text");
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
exports.up = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.boolean("ip_family").defaultTo(null);
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.boolean("ip_family").defaultTo(null);
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.dropColumn("ip_family");
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.dropColumn("ip_family");
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
exports.up = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.string("manual_status").defaultTo(null);
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.string("manual_status").defaultTo(null);
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
|
||||
@@ -1,28 +1,27 @@
|
||||
// Add column last_start_date to maintenance table
|
||||
exports.up = async function (knex) {
|
||||
await knex.schema
|
||||
.alterTable("maintenance", function (table) {
|
||||
table.datetime("last_start_date");
|
||||
});
|
||||
await knex.schema.alterTable("maintenance", function (table) {
|
||||
table.datetime("last_start_date");
|
||||
});
|
||||
|
||||
// Perform migration for recurring-interval strategy
|
||||
const recurringMaintenances = await knex("maintenance").where({
|
||||
strategy: "recurring-interval",
|
||||
cron: "* * * * *"
|
||||
}).select("id", "start_time");
|
||||
const recurringMaintenances = await knex("maintenance")
|
||||
.where({
|
||||
strategy: "recurring-interval",
|
||||
cron: "* * * * *",
|
||||
})
|
||||
.select("id", "start_time");
|
||||
|
||||
// eslint-disable-next-line camelcase
|
||||
const maintenanceUpdates = recurringMaintenances.map(async ({ start_time, id }) => {
|
||||
// eslint-disable-next-line camelcase
|
||||
const [ hourStr, minuteStr ] = start_time.split(":");
|
||||
const [hourStr, minuteStr] = start_time.split(":");
|
||||
const hour = parseInt(hourStr, 10);
|
||||
const minute = parseInt(minuteStr, 10);
|
||||
|
||||
const cron = `${minute} ${hour} * * *`;
|
||||
|
||||
await knex("maintenance")
|
||||
.where({ id })
|
||||
.update({ cron });
|
||||
await knex("maintenance").where({ id }).update({ cron });
|
||||
});
|
||||
await Promise.all(maintenanceUpdates);
|
||||
};
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
// Fix: Change manual_status column type to smallint
|
||||
exports.up = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.smallint("manual_status").alter();
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.smallint("manual_status").alter();
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
exports.up = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.string("oauth_audience").nullable().defaultTo(null);
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.string("oauth_audience").nullable().defaultTo(null);
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
exports.up = function (knex) {
|
||||
// Add new column monitor.mqtt_websocket_path
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.string("mqtt_websocket_path", 255).nullable();
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.string("mqtt_websocket_path", 255).nullable();
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
// Drop column monitor.mqtt_websocket_path
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.dropColumn("mqtt_websocket_path");
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.dropColumn("mqtt_websocket_path");
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
exports.up = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
// Fix ip_family, change to varchar instead of boolean
|
||||
// possible values are "ipv4" and "ipv6"
|
||||
table.string("ip_family", 4).defaultTo(null).alter();
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
// Fix ip_family, change to varchar instead of boolean
|
||||
// possible values are "ipv4" and "ipv6"
|
||||
table.string("ip_family", 4).defaultTo(null).alter();
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
// Rollback to boolean
|
||||
table.boolean("ip_family").defaultTo(null).alter();
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
// Rollback to boolean
|
||||
table.boolean("ip_family").defaultTo(null).alter();
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
exports.up = function (knex) {
|
||||
// Add new column status_page.show_only_last_heartbeat
|
||||
return knex.schema
|
||||
.alterTable("status_page", function (table) {
|
||||
table.boolean("show_only_last_heartbeat").notNullable().defaultTo(false);
|
||||
});
|
||||
return knex.schema.alterTable("status_page", function (table) {
|
||||
table.boolean("show_only_last_heartbeat").notNullable().defaultTo(false);
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
// Drop column status_page.show_only_last_heartbeat
|
||||
return knex.schema
|
||||
.alterTable("status_page", function (table) {
|
||||
table.dropColumn("show_only_last_heartbeat");
|
||||
});
|
||||
return knex.schema.alterTable("status_page", function (table) {
|
||||
table.dropColumn("show_only_last_heartbeat");
|
||||
});
|
||||
};
|
||||
|
||||
@@ -9,11 +9,11 @@ exports.up = async function (knex) {
|
||||
|
||||
// Create partial indexes with predicate
|
||||
await knex.schema.alterTable("heartbeat", function (table) {
|
||||
table.index([ "monitor_id", "time" ], "monitor_important_time_index", {
|
||||
predicate: knex.whereRaw("important = 1")
|
||||
table.index(["monitor_id", "time"], "monitor_important_time_index", {
|
||||
predicate: knex.whereRaw("important = 1"),
|
||||
});
|
||||
table.index([ "important" ], "heartbeat_important_index", {
|
||||
predicate: knex.whereRaw("important = 1")
|
||||
table.index(["important"], "heartbeat_important_index", {
|
||||
predicate: knex.whereRaw("important = 1"),
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -29,8 +29,8 @@ exports.down = async function (knex) {
|
||||
await knex.raw("DROP INDEX IF EXISTS heartbeat_important_index");
|
||||
|
||||
await knex.schema.alterTable("heartbeat", function (table) {
|
||||
table.index([ "monitor_id", "important", "time" ], "monitor_important_time_index");
|
||||
table.index([ "important" ]);
|
||||
table.index(["monitor_id", "important", "time"], "monitor_important_time_index");
|
||||
table.index(["important"]);
|
||||
});
|
||||
}
|
||||
// For MariaDB/MySQL: No changes
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
// Change dns_last_result column from VARCHAR(255) to TEXT to handle longer DNS TXT records
|
||||
exports.up = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.text("dns_last_result").alter();
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.text("dns_last_result").alter();
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function (knex) {
|
||||
return knex.schema
|
||||
.alterTable("monitor", function (table) {
|
||||
table.string("dns_last_result", 255).alter();
|
||||
});
|
||||
return knex.schema.alterTable("monitor", function (table) {
|
||||
table.string("dns_last_result", 255).alter();
|
||||
});
|
||||
};
|
||||
|
||||
@@ -3,139 +3,139 @@
|
||||
|
||||
// Lookup table mapping v4 game IDs to v5 game IDs
|
||||
const gameDig4to5IdMap = {
|
||||
"americasarmypg": "aapg",
|
||||
americasarmypg: "aapg",
|
||||
"7d2d": "sdtd",
|
||||
"as": "actionsource",
|
||||
"ageofchivalry": "aoc",
|
||||
"arkse": "ase",
|
||||
"arcasimracing": "asr08",
|
||||
"arma": "aaa",
|
||||
"arma2oa": "a2oa",
|
||||
"armacwa": "acwa",
|
||||
"armar": "armaresistance",
|
||||
"armare": "armareforger",
|
||||
"armagetron": "armagetronadvanced",
|
||||
"bat1944": "battalion1944",
|
||||
"bf1942": "battlefield1942",
|
||||
"bfv": "battlefieldvietnam",
|
||||
"bf2": "battlefield2",
|
||||
"bf2142": "battlefield2142",
|
||||
"bfbc2": "bbc2",
|
||||
"bf3": "battlefield3",
|
||||
"bf4": "battlefield4",
|
||||
"bfh": "battlefieldhardline",
|
||||
"bd": "basedefense",
|
||||
"bs": "bladesymphony",
|
||||
"buildandshoot": "bas",
|
||||
"cod4": "cod4mw",
|
||||
"callofjuarez": "coj",
|
||||
"chivalry": "cmw",
|
||||
"commandos3": "c3db",
|
||||
"cacrenegade": "cacr",
|
||||
"contactjack": "contractjack",
|
||||
"cs15": "counterstrike15",
|
||||
"cs16": "counterstrike16",
|
||||
"cs2": "counterstrike2",
|
||||
"crossracing": "crce",
|
||||
"darkesthour": "dhe4445",
|
||||
"daysofwar": "dow",
|
||||
"deadlydozenpt": "ddpt",
|
||||
"dh2005": "deerhunter2005",
|
||||
"dinodday": "ddd",
|
||||
"dirttrackracing2": "dtr2",
|
||||
"dmc": "deathmatchclassic",
|
||||
"dnl": "dal",
|
||||
"drakan": "dootf",
|
||||
"dys": "dystopia",
|
||||
"em": "empiresmod",
|
||||
"empyrion": "egs",
|
||||
"f12002": "formulaone2002",
|
||||
"flashpointresistance": "ofr",
|
||||
"fivem": "gta5f",
|
||||
"forrest": "theforrest",
|
||||
"graw": "tcgraw",
|
||||
"graw2": "tcgraw2",
|
||||
"giantscitizenkabuto": "gck",
|
||||
"ges": "goldeneyesource",
|
||||
"gore": "gus",
|
||||
"hldm": "hld",
|
||||
"hldms": "hlds",
|
||||
"hlopfor": "hlof",
|
||||
"hl2dm": "hl2d",
|
||||
"hidden": "thehidden",
|
||||
"had2": "hiddendangerous2",
|
||||
"igi2": "i2cs",
|
||||
"il2": "il2sturmovik",
|
||||
"insurgencymic": "imic",
|
||||
"isle": "theisle",
|
||||
"jamesbondnightfire": "jb007n",
|
||||
"jc2mp": "jc2m",
|
||||
"jc3mp": "jc3m",
|
||||
"kingpin": "kloc",
|
||||
"kisspc": "kpctnc",
|
||||
"kspdmp": "kspd",
|
||||
"kzmod": "kreedzclimbing",
|
||||
"left4dead": "l4d",
|
||||
"left4dead2": "l4d2",
|
||||
"m2mp": "m2m",
|
||||
"mohsh": "mohaas",
|
||||
"mohbt": "mohaab",
|
||||
"mohab": "moha",
|
||||
"moh2010": "moh",
|
||||
"mohwf": "mohw",
|
||||
"minecraftbe": "mbe",
|
||||
"mtavc": "gtavcmta",
|
||||
"mtasa": "gtasamta",
|
||||
"ns": "naturalselection",
|
||||
"ns2": "naturalselection2",
|
||||
"nwn": "neverwinternights",
|
||||
"nwn2": "neverwinternights2",
|
||||
"nolf": "tonolf",
|
||||
"nolf2": "nolf2asihw",
|
||||
"pvkii": "pvak2",
|
||||
"ps": "postscriptum",
|
||||
"primalcarnage": "pce",
|
||||
"pc": "projectcars",
|
||||
"pc2": "projectcars2",
|
||||
"prbf2": "prb2",
|
||||
"przomboid": "projectzomboid",
|
||||
"quake1": "quake",
|
||||
"quake3": "q3a",
|
||||
"ragdollkungfu": "rdkf",
|
||||
"r6": "rainbowsix",
|
||||
"r6roguespear": "rs2rs",
|
||||
"r6ravenshield": "rs3rs",
|
||||
"redorchestraost": "roo4145",
|
||||
"redm": "rdr2r",
|
||||
"riseofnations": "ron",
|
||||
"rs2": "rs2v",
|
||||
"samp": "gtasam",
|
||||
"saomp": "gtasao",
|
||||
"savage2": "s2ats",
|
||||
"ss": "serioussam",
|
||||
"ss2": "serioussam2",
|
||||
"ship": "theship",
|
||||
"sinep": "sinepisodes",
|
||||
"sonsoftheforest": "sotf",
|
||||
"swbf": "swb",
|
||||
"swbf2": "swb2",
|
||||
"swjk": "swjkja",
|
||||
"swjk2": "swjk2jo",
|
||||
"takeonhelicopters": "toh",
|
||||
"tf2": "teamfortress2",
|
||||
"terraria": "terrariatshock",
|
||||
"tribes1": "t1s",
|
||||
"ut": "unrealtournament",
|
||||
"ut2003": "unrealtournament2003",
|
||||
"ut2004": "unrealtournament2004",
|
||||
"ut3": "unrealtournament3",
|
||||
"v8supercar": "v8sc",
|
||||
"vcmp": "vcm",
|
||||
"vs": "vampireslayer",
|
||||
"wheeloftime": "wot",
|
||||
"wolfenstein2009": "wolfenstein",
|
||||
"wolfensteinet": "wet",
|
||||
"wurm": "wurmunlimited",
|
||||
as: "actionsource",
|
||||
ageofchivalry: "aoc",
|
||||
arkse: "ase",
|
||||
arcasimracing: "asr08",
|
||||
arma: "aaa",
|
||||
arma2oa: "a2oa",
|
||||
armacwa: "acwa",
|
||||
armar: "armaresistance",
|
||||
armare: "armareforger",
|
||||
armagetron: "armagetronadvanced",
|
||||
bat1944: "battalion1944",
|
||||
bf1942: "battlefield1942",
|
||||
bfv: "battlefieldvietnam",
|
||||
bf2: "battlefield2",
|
||||
bf2142: "battlefield2142",
|
||||
bfbc2: "bbc2",
|
||||
bf3: "battlefield3",
|
||||
bf4: "battlefield4",
|
||||
bfh: "battlefieldhardline",
|
||||
bd: "basedefense",
|
||||
bs: "bladesymphony",
|
||||
buildandshoot: "bas",
|
||||
cod4: "cod4mw",
|
||||
callofjuarez: "coj",
|
||||
chivalry: "cmw",
|
||||
commandos3: "c3db",
|
||||
cacrenegade: "cacr",
|
||||
contactjack: "contractjack",
|
||||
cs15: "counterstrike15",
|
||||
cs16: "counterstrike16",
|
||||
cs2: "counterstrike2",
|
||||
crossracing: "crce",
|
||||
darkesthour: "dhe4445",
|
||||
daysofwar: "dow",
|
||||
deadlydozenpt: "ddpt",
|
||||
dh2005: "deerhunter2005",
|
||||
dinodday: "ddd",
|
||||
dirttrackracing2: "dtr2",
|
||||
dmc: "deathmatchclassic",
|
||||
dnl: "dal",
|
||||
drakan: "dootf",
|
||||
dys: "dystopia",
|
||||
em: "empiresmod",
|
||||
empyrion: "egs",
|
||||
f12002: "formulaone2002",
|
||||
flashpointresistance: "ofr",
|
||||
fivem: "gta5f",
|
||||
forrest: "theforrest",
|
||||
graw: "tcgraw",
|
||||
graw2: "tcgraw2",
|
||||
giantscitizenkabuto: "gck",
|
||||
ges: "goldeneyesource",
|
||||
gore: "gus",
|
||||
hldm: "hld",
|
||||
hldms: "hlds",
|
||||
hlopfor: "hlof",
|
||||
hl2dm: "hl2d",
|
||||
hidden: "thehidden",
|
||||
had2: "hiddendangerous2",
|
||||
igi2: "i2cs",
|
||||
il2: "il2sturmovik",
|
||||
insurgencymic: "imic",
|
||||
isle: "theisle",
|
||||
jamesbondnightfire: "jb007n",
|
||||
jc2mp: "jc2m",
|
||||
jc3mp: "jc3m",
|
||||
kingpin: "kloc",
|
||||
kisspc: "kpctnc",
|
||||
kspdmp: "kspd",
|
||||
kzmod: "kreedzclimbing",
|
||||
left4dead: "l4d",
|
||||
left4dead2: "l4d2",
|
||||
m2mp: "m2m",
|
||||
mohsh: "mohaas",
|
||||
mohbt: "mohaab",
|
||||
mohab: "moha",
|
||||
moh2010: "moh",
|
||||
mohwf: "mohw",
|
||||
minecraftbe: "mbe",
|
||||
mtavc: "gtavcmta",
|
||||
mtasa: "gtasamta",
|
||||
ns: "naturalselection",
|
||||
ns2: "naturalselection2",
|
||||
nwn: "neverwinternights",
|
||||
nwn2: "neverwinternights2",
|
||||
nolf: "tonolf",
|
||||
nolf2: "nolf2asihw",
|
||||
pvkii: "pvak2",
|
||||
ps: "postscriptum",
|
||||
primalcarnage: "pce",
|
||||
pc: "projectcars",
|
||||
pc2: "projectcars2",
|
||||
prbf2: "prb2",
|
||||
przomboid: "projectzomboid",
|
||||
quake1: "quake",
|
||||
quake3: "q3a",
|
||||
ragdollkungfu: "rdkf",
|
||||
r6: "rainbowsix",
|
||||
r6roguespear: "rs2rs",
|
||||
r6ravenshield: "rs3rs",
|
||||
redorchestraost: "roo4145",
|
||||
redm: "rdr2r",
|
||||
riseofnations: "ron",
|
||||
rs2: "rs2v",
|
||||
samp: "gtasam",
|
||||
saomp: "gtasao",
|
||||
savage2: "s2ats",
|
||||
ss: "serioussam",
|
||||
ss2: "serioussam2",
|
||||
ship: "theship",
|
||||
sinep: "sinepisodes",
|
||||
sonsoftheforest: "sotf",
|
||||
swbf: "swb",
|
||||
swbf2: "swb2",
|
||||
swjk: "swjkja",
|
||||
swjk2: "swjk2jo",
|
||||
takeonhelicopters: "toh",
|
||||
tf2: "teamfortress2",
|
||||
terraria: "terrariatshock",
|
||||
tribes1: "t1s",
|
||||
ut: "unrealtournament",
|
||||
ut2003: "unrealtournament2003",
|
||||
ut2004: "unrealtournament2004",
|
||||
ut3: "unrealtournament3",
|
||||
v8supercar: "v8sc",
|
||||
vcmp: "vcm",
|
||||
vs: "vampireslayer",
|
||||
wheeloftime: "wot",
|
||||
wolfenstein2009: "wolfenstein",
|
||||
wolfensteinet: "wet",
|
||||
wurm: "wurmunlimited",
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -146,10 +146,7 @@ const gameDig4to5IdMap = {
|
||||
exports.up = async function (knex) {
|
||||
await knex.transaction(async (trx) => {
|
||||
// Get all monitors that use the gamedig type
|
||||
const monitors = await trx("monitor")
|
||||
.select("id", "game")
|
||||
.where("type", "gamedig")
|
||||
.whereNotNull("game");
|
||||
const monitors = await trx("monitor").select("id", "game").where("type", "gamedig").whereNotNull("game");
|
||||
|
||||
// Update each monitor with the new game ID if it needs migration
|
||||
for (const monitor of monitors) {
|
||||
@@ -157,9 +154,7 @@ exports.up = async function (knex) {
|
||||
const newGameId = gameDig4to5IdMap[oldGameId];
|
||||
|
||||
if (newGameId) {
|
||||
await trx("monitor")
|
||||
.where("id", monitor.id)
|
||||
.update({ game: newGameId });
|
||||
await trx("monitor").where("id", monitor.id).update({ game: newGameId });
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -172,16 +167,11 @@ exports.up = async function (knex) {
|
||||
*/
|
||||
exports.down = async function (knex) {
|
||||
// Create reverse mapping from the same LUT
|
||||
const gameDig5to4IdMap = Object.fromEntries(
|
||||
Object.entries(gameDig4to5IdMap).map(([ v4, v5 ]) => [ v5, v4 ])
|
||||
);
|
||||
const gameDig5to4IdMap = Object.fromEntries(Object.entries(gameDig4to5IdMap).map(([v4, v5]) => [v5, v4]));
|
||||
|
||||
await knex.transaction(async (trx) => {
|
||||
// Get all monitors that use the gamedig type
|
||||
const monitors = await trx("monitor")
|
||||
.select("id", "game")
|
||||
.where("type", "gamedig")
|
||||
.whereNotNull("game");
|
||||
const monitors = await trx("monitor").select("id", "game").where("type", "gamedig").whereNotNull("game");
|
||||
|
||||
// Revert each monitor back to the old game ID if it was migrated
|
||||
for (const monitor of monitors) {
|
||||
@@ -189,9 +179,7 @@ exports.down = async function (knex) {
|
||||
const oldGameId = gameDig5to4IdMap[newGameId];
|
||||
|
||||
if (oldGameId) {
|
||||
await trx("monitor")
|
||||
.where("id", monitor.id)
|
||||
.update({ game: oldGameId });
|
||||
await trx("monitor").where("id", monitor.id).update({ game: oldGameId });
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -11,13 +11,9 @@ https://knexjs.org/guide/migrations.html#knexfile-in-other-languages
|
||||
## Template
|
||||
|
||||
```js
|
||||
exports.up = function(knex) {
|
||||
exports.up = function (knex) {};
|
||||
|
||||
};
|
||||
|
||||
exports.down = function(knex) {
|
||||
|
||||
};
|
||||
exports.down = function (knex) {};
|
||||
|
||||
// exports.config = { transaction: false };
|
||||
```
|
||||
@@ -27,29 +23,28 @@ exports.down = function(knex) {
|
||||
Filename: 2023-06-30-1348-create-user-and-product.js
|
||||
|
||||
```js
|
||||
exports.up = function(knex) {
|
||||
exports.up = function (knex) {
|
||||
return knex.schema
|
||||
.createTable('user', function (table) {
|
||||
table.increments('id');
|
||||
table.string('first_name', 255).notNullable();
|
||||
table.string('last_name', 255).notNullable();
|
||||
.createTable("user", function (table) {
|
||||
table.increments("id");
|
||||
table.string("first_name", 255).notNullable();
|
||||
table.string("last_name", 255).notNullable();
|
||||
})
|
||||
.createTable('product', function (table) {
|
||||
table.increments('id');
|
||||
table.decimal('price').notNullable();
|
||||
table.string('name', 1000).notNullable();
|
||||
}).then(() => {
|
||||
knex("products").insert([
|
||||
{ price: 10, name: "Apple" },
|
||||
{ price: 20, name: "Orange" },
|
||||
]);
|
||||
.createTable("product", function (table) {
|
||||
table.increments("id");
|
||||
table.decimal("price").notNullable();
|
||||
table.string("name", 1000).notNullable();
|
||||
})
|
||||
.then(() => {
|
||||
knex("products").insert([
|
||||
{ price: 10, name: "Apple" },
|
||||
{ price: 20, name: "Orange" },
|
||||
]);
|
||||
});
|
||||
};
|
||||
|
||||
exports.down = function(knex) {
|
||||
return knex.schema
|
||||
.dropTable("product")
|
||||
.dropTable("user");
|
||||
exports.down = function (knex) {
|
||||
return knex.schema.dropTable("product").dropTable("user");
|
||||
};
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user