DEV Community

Leandro Cesquini Pereira
Leandro Cesquini Pereira

Posted on Originally published at leandrocp.com.br on

Lotus DB Migrations Tips

Lotus, just like Rails, also supports database migration through Sequel Migrations. It´s pretty simple but some things are not so clear.

Create a migration

lotus g migration create_my_table

Enable UUID (PostgreSQL only)

Lotus::Model.migration do
  up do
    execute 'CREATE EXTENSION "uuid-ossp"'
  end

  down do
    execute 'DROP EXTENSION "uuid-ossp"'
  end
end

Use UUID as Primary Key

Lotus::Model.migration do
  up do
    create_table :my_table do
      column :id, :uuid, null: false, default: Sequel.function(:uuid_generate_v4), primary_key: true
    end
  end

  down do
    drop_table :my_table
  end
end

Use UUID as Foreign Key

Lotus::Model.migration do
  up do
    create_table :my_table do
      column :id, :uuid, null: false, default: Sequel.function(:uuid_generate_v4), primary_key: true
      foreign_key :author_id, :authors, type: 'uuid', null: false
    end
  end
end

Index a column

Lotus::Model.migration do
  up do
    create_table :my_table do
      column :code, :integer, null: false
      index :code
    end
  end
end

Table documentation

Lotus::Model.migration do
  up do
    create_table :my_table do
      column :code, :integer, null: false
    end

    execute %Q(COMMENT ON TABLE my_table IS 'You should do it')
    execute %Q(COMMENT ON COLUMN my_table.code IS 'Easy and useful')
  end
end

Migrate up

lotus db migrate

Migrate down

There´s no db migrate down command, although you can specify a version to migrate. Just specify 0 to migrate to initial version (before any migration).

lotus db migrate 0

Top comments (0)