# Performing migrations #

## Introduction ##

This document is intended to developers.

Migrations on `Tracim` lays on [`alembic`](http://alembic.zzzcomputing.com/en/latest/index.html) which is the migration tool dedicated to `SQLAlchemy`.

In order to use the `tracimcli` commands, go to the root of the project and
and active the Tracim virtualenv:

    user@host:~/tracim_backend$ source env/bin/activate
    (env) user@host:~/tracim_backend$

## Migration howto - Overview ##
   
### Upgrading schema to last revision ###

    alembic -c development.ini upgrade head

### Downgrading schema ###

    alembic -c development.ini downgrade -1

## Migration howto - Advanced (for developers) ##

### Retrieving schema current version ###

    alembic -c development.ini current

## Set Alembic stamp to last version (first time use) ##

    alembic -c development.ini stamp head

### Creating new schema migration ###

This creates a new auto-generated python migration file 
in `tracim_backend/migration/versions/` ending by `migration_label.py`:

    alembic -c development.ini revision --autogenerate -m "migration label"
