| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- const env = require("../env");
- const isMySQL = env.DB_CLIENT === "mysql" || env.DB_CLIENT === "mysql2";
- /**
- * @param { import("knex").Knex } knex
- * @returns { Promise<void> }
- */
- async function up(knex) {
- // make apikey unique
- await knex.schema.alterTable("users", function(table) {
- table.unique("apikey");
- });
-
- // IF NOT EXISTS is not available on MySQL So if you're
- // using MySQL you should make sure you don't have these indexes already
- const ifNotExists = isMySQL ? "" : "IF NOT EXISTS";
- await knex.raw(`
- CREATE INDEX ${ifNotExists} links_domain_id_index ON links (domain_id);
- CREATE INDEX ${ifNotExists} links_user_id_index ON links (user_id);
- CREATE INDEX ${ifNotExists} links_address_index ON links (address);
- CREATE INDEX ${ifNotExists} links_expire_in_index ON links (expire_in);
- CREATE INDEX ${ifNotExists} domains_address_index ON domains (address);
- CREATE INDEX ${ifNotExists} domains_user_id_index ON domains (user_id);
- CREATE INDEX ${ifNotExists} hosts_address_index ON hosts (address);
- CREATE INDEX ${ifNotExists} visits_link_id_index ON visits (link_id);
- `);
- };
- /**
- * @param { import("knex").Knex } knex
- * @returns { Promise<void> }
- */
- async function down(knex) {
- await knex.schema.alterTable("users", function(table) {
- table.dropUnique(["apikey"]);
- });
- await knex.raw(`
- DROP INDEX links_domain_id_index;
- DROP INDEX links_user_id_index;
- DROP INDEX links_address_index;
- DROP INDEX links_expire_in_index;
- DROP INDEX domains_address_index;
- DROP INDEX domains_user_id_index;
- DROP INDEX hosts_address_index;
- DROP INDEX visits_link_id_index;
- `);
- };
- module.exports = {
- up,
- down,
- }
|