kutt/server/models/link.model.js
2024-10-07 14:37:51 +03:30

60 lines
1.4 KiB
JavaScript

async function createLinkTable(knex) {
const hasTable = await knex.schema.hasTable("links");
if (!hasTable) {
await knex.schema.createTable("links", table => {
table.increments("id").primary();
table.string("address").notNullable();
table.string("description");
table
.boolean("banned")
.notNullable()
.defaultTo(false);
table
.integer("banned_by_id")
.unsigned()
.references("id")
.inTable("users");
table
.integer("domain_id")
.unsigned()
.references("id")
.inTable("domains");
table.string("password");
table.dateTime("expire_in");
table.string("target", 2040).notNullable();
table
.integer("user_id")
.unsigned();
table
.foreign("user_id")
.references("id")
.inTable("users")
.onDelete("CASCADE")
.withKeyName("links_user_id_foreign");
table
.integer("visit_count")
.notNullable()
.defaultTo(0);
table
.uuid("uuid")
.notNullable()
.defaultTo(knex.fn.uuid());
table.timestamps(false, true);
});
}
const hasUUID = await knex.schema.hasColumn("links", "uuid");
if (!hasUUID) {
await knex.schema.alterTable("links", table => {
table
.uuid("uuid")
.notNullable()
.defaultTo(knex.fn.uuid());
});
}
}
module.exports = {
createLinkTable
}