@coko/server
Version:
Reusable server for use by Coko's projects
110 lines • 4.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.down = exports.up = void 0;
const up = async (knex) => {
try {
const tableExists = await knex.schema.hasTable('users');
if (!tableExists) {
await knex.schema.createTable('users', table => {
table.uuid('id').primary();
table
.timestamp('created', { useTz: true })
.notNullable()
.defaultTo(knex.fn.now());
table.timestamp('updated', { useTz: true });
table.string('username');
table.text('password_hash');
table.text('password_reset_token');
table.timestamp('password_reset_timestamp', { useTz: true });
table.boolean('agreed_tc').notNullable().defaultTo(false);
table.boolean('is_active').notNullable().defaultTo(false);
table.text('invitation_token');
table.timestamp('invitation_token_timestamp', { useTz: true });
table.text('given_names');
table.text('surname');
table.text('title_pre');
table.text('title_post');
table.text('type').notNullable();
table.unique('username');
});
return;
}
const hasId = await knex.schema.hasColumn('users', 'id');
const hasCreated = await knex.schema.hasColumn('users', 'created');
const hasUpdated = await knex.schema.hasColumn('users', 'updated');
const hasUsername = await knex.schema.hasColumn('users', 'username');
const hasPasswordHash = await knex.schema.hasColumn('users', 'password_hash');
const hasPasswordResetToken = await knex.schema.hasColumn('users', 'password_reset_token');
const hasPasswordResetTimestamp = await knex.schema.hasColumn('users', 'password_reset_timestamp');
const hasAgreedTC = await knex.schema.hasColumn('users', 'agreed_tc');
const hasIsActive = await knex.schema.hasColumn('users', 'is_active');
const hasInvitationToken = await knex.schema.hasColumn('users', 'invitation_token');
const hasInvitationTokenTimestamp = await knex.schema.hasColumn('users', 'invitation_token_timestamp');
const hasGivenNames = await knex.schema.hasColumn('users', 'given_names');
const hasSurname = await knex.schema.hasColumn('users', 'surname');
const hasTitlePre = await knex.schema.hasColumn('users', 'title_pre');
const hasTitlePost = await knex.schema.hasColumn('users', 'title_post');
const hasType = await knex.schema.hasColumn('users', 'type');
await knex.schema.alterTable('users', table => {
if (!hasId) {
table.dropPrimary('users_pkey');
table.uuid('id').primary();
}
if (!hasCreated) {
table.timestamp('created').defaultTo(knex.fn.now());
}
if (!hasUpdated) {
table.timestamp('updated').defaultTo(knex.fn.now());
}
if (!hasUsername) {
table.string('username');
}
if (!hasPasswordHash) {
table.text('password_hash');
}
if (!hasPasswordResetToken) {
table.text('password_reset_token');
}
if (!hasPasswordResetTimestamp) {
table.timestamp('password_reset_timestamp', { useTz: true });
}
if (!hasAgreedTC) {
table.boolean('agreed_tc').notNullable().defaultTo(false);
}
if (!hasIsActive) {
table.boolean('is_active').notNullable().defaultTo(false);
}
if (!hasInvitationToken) {
table.text('invitation_token');
}
if (!hasInvitationTokenTimestamp) {
table.timestamp('invitation_token_timestamp', { useTz: true });
}
if (!hasGivenNames) {
table.text('given_names');
}
if (!hasSurname) {
table.text('surname');
}
if (!hasTitlePre) {
table.text('title_pre');
}
if (!hasTitlePost) {
table.text('title_post');
}
if (!hasType) {
table.text('type').notNullable();
}
});
await knex.schema.raw('CREATE UNIQUE INDEX IF NOT EXISTS "users_username_unique" ON "users" (username);');
}
catch (e) {
throw new Error(`Users: Initial: Migration failed! ${e}`);
}
};
exports.up = up;
const down = async (knex) => {
await knex.schema.dropTable('users');
};
exports.down = down;
//# sourceMappingURL=1567588786-user.js.map