UNPKG

@coko/server

Version:

Reusable server for use by Coko's projects

83 lines 3.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.down = exports.up = void 0; const up = async (knex) => { try { const tableExists = await knex.schema.hasTable('team_members'); if (!tableExists) { await knex.schema.createTable('team_members', table => { table.uuid('id').primary(); table.timestamp('created').defaultTo(knex.fn.now()); table.timestamp('updated').defaultTo(knex.fn.now()); table.string('status'); table .uuid('team_id') .notNullable() .references('id') .inTable('teams') .onDelete('CASCADE') .onUpdate('CASCADE'); table .uuid('user_id') .notNullable() .references('id') .inTable('users') .onDelete('CASCADE') .onUpdate('CASCADE'); table.unique(['team_id', 'user_id']); }); return; } const hasId = await knex.schema.hasColumn('team_members', 'id'); const hasCreated = await knex.schema.hasColumn('team_members', 'created'); const hasUpdated = await knex.schema.hasColumn('team_members', 'updated'); const hasStatus = await knex.schema.hasColumn('team_members', 'status'); const hasTeamId = await knex.schema.hasColumn('team_members', 'team_id'); const hasUserId = await knex.schema.hasColumn('team_members', 'user_id'); await knex.schema.alterTable('team_members', table => { if (!hasId) { table.dropPrimary('team_members_pkey'); table.uuid('id').primary(); } if (!hasCreated) { table.timestamp('created').defaultTo(knex.fn.now()); } if (!hasUpdated) { table.timestamp('updated').defaultTo(knex.fn.now()); } if (!hasStatus) { table.string('status'); } if (!hasTeamId) { table.dropForeign('team_id'); table .uuid('team_id') .notNullable() .references('id') .inTable('teams') .onDelete('CASCADE') .onUpdate('CASCADE'); } if (!hasUserId) { table.dropForeign('user_id'); table .uuid('user_id') .notNullable() .references('id') .inTable('users') .onDelete('CASCADE') .onUpdate('CASCADE'); } }); await knex.schema.raw('CREATE UNIQUE INDEX IF NOT EXISTS "team_members_team_id_user_id_unique" ON "team_members" (team_id, user_id);'); } catch (e) { throw new Error(`Team Members: Initial: Migration failed! ${e}`); } }; exports.up = up; const down = async (knex) => { await knex.schema.dropTable('team_members'); }; exports.down = down; //# sourceMappingURL=1625395015-team_member.js.map