import {DatabaseService, FieldType, Inject, Injectable, Migration, raw} from '@extollo/lib' /** * CreateFeedPostsTableMigration * ---------------------------------- * Create the table to hold posts to the "updates" feed. */ @Injectable() export default class CreateFeedPostsTableMigration extends Migration { @Inject() protected readonly db!: DatabaseService /** * Apply the migration. */ async up(): Promise { const schema = this.db.get().schema() const table = await schema.table('feed_posts') table.primaryKey('feed_post_id', FieldType.varchar) .required() // date, tag, text, visible table.column('posted_at') .type(FieldType.timestamp) .default(raw('NOW()')) .required() table.column('tag') .type(FieldType.varchar) .required() table.column('visible') .type(FieldType.bool) .default(false) .required() table.column('body') .type(FieldType.text) .default('') .required() await schema.commit(table) } /** * Undo the migration. */ async down(): Promise { const schema = this.db.get().schema() const table = await schema.table('feed_posts') table.dropIfExists() await schema.commit(table) } }