kutt/server/models/visit.model.js

100 lines
2.3 KiB
JavaScript
Raw Permalink Normal View History

2024-08-11 18:41:03 +03:30
async function createVisitTable(knex) {
2019-10-03 20:42:37 +03:30
const hasTable = await knex.schema.hasTable("visits");
if (!hasTable) {
await knex.schema.createTable("visits", table => {
table.increments("id").primary();
table.jsonb("countries");
2019-10-03 20:42:37 +03:30
table
.dateTime("created_at")
.notNullable()
.defaultTo(knex.fn.now());
table.dateTime("updated_at").defaultTo(knex.fn.now());
2019-10-03 20:42:37 +03:30
table
2024-10-07 14:37:36 +03:30
.integer("link_id")
.unsigned();
table
.foreign("link_id")
2019-10-03 20:42:37 +03:30
.references("id")
.inTable("links")
.onDelete("CASCADE")
.withKeyName("visits_link_id_foreign");
2024-12-23 18:58:42 +03:30
table
.integer("user_id")
.unsigned();
table
.foreign("user_id")
.references("id")
.inTable("users")
.onDelete("CASCADE")
.withKeyName("visits_user_id_foreign");
table.jsonb("referrers");
2019-10-03 20:42:37 +03:30
table
.integer("total")
.notNullable()
.defaultTo(0);
table
.integer("br_chrome")
.notNullable()
.defaultTo(0);
table
.integer("br_edge")
.notNullable()
.defaultTo(0);
table
.integer("br_firefox")
.notNullable()
.defaultTo(0);
table
.integer("br_ie")
.notNullable()
.defaultTo(0);
table
.integer("br_opera")
.notNullable()
.defaultTo(0);
table
.integer("br_other")
.notNullable()
.defaultTo(0);
table
.integer("br_safari")
.notNullable()
.defaultTo(0);
table
.integer("os_android")
.notNullable()
.defaultTo(0);
table
.integer("os_ios")
.notNullable()
.defaultTo(0);
table
.integer("os_linux")
.notNullable()
.defaultTo(0);
table
.integer("os_macos")
.notNullable()
.defaultTo(0);
table
.integer("os_other")
.notNullable()
.defaultTo(0);
table
.integer("os_windows")
.notNullable()
.defaultTo(0);
});
}
const hasUpdatedAt = await knex.schema.hasColumn("visits", "updated_at");
if (!hasUpdatedAt) {
await knex.schema.alterTable("visits", table => {
table.dateTime("updated_at").defaultTo(knex.fn.now());
});
}
2019-08-03 17:18:04 +04:30
}
2024-08-11 18:41:03 +03:30
module.exports = {
createVisitTable
}