summaryrefslogtreecommitdiffstats
path: root/db/knex_migrations/2023-08-16-0000-create-uptime.js
blob: ab899311c90d17667025ebe216a04a2b1d80f441 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
exports.up = function (knex) {
    return knex.schema
        .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")
                .onDelete("CASCADE")
                .onUpdate("CASCADE");
            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" ]);
        })
        .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")
                .onDelete("CASCADE")
                .onUpdate("CASCADE");
            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" ]);
        });
};

exports.down = function (knex) {
    return knex.schema
        .dropTable("stat_minutely")
        .dropTable("stat_daily");
};