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(); table.unique(["monitor_id", "timestamp"]); }); }; exports.down = function (knex) { return knex.schema.dropTable("stat_hourly"); };