"""Initial migration

Revision ID: b9a10d5d63ce
Revises: None
Create Date: 2016-05-21 23:21:21.605076

"""

# revision identifiers, used by Alembic.
revision = "b9a10d5d63ce"
down_revision = None

from alembic import op
import sqlalchemy as sa


def upgrade():
    ### commands auto generated by Alembic - please adjust! ###
    op.create_table(
        "project",
        sa.Column("id", sa.String(length=64), nullable=False),
        sa.Column("name", sa.UnicodeText(), nullable=True),
        sa.Column("password", sa.String(length=128), nullable=True),
        sa.Column("contact_email", sa.String(length=128), nullable=True),
        sa.PrimaryKeyConstraint("id"),
    )
    op.create_table(
        "archive",
        sa.Column("id", sa.Integer(), nullable=False),
        sa.Column("project_id", sa.String(length=64), nullable=True),
        sa.Column("name", sa.UnicodeText(), nullable=True),
        sa.ForeignKeyConstraint(["project_id"], ["project.id"]),
        sa.PrimaryKeyConstraint("id"),
    )
    op.create_table(
        "person",
        sa.Column("id", sa.Integer(), nullable=False),
        sa.Column("project_id", sa.String(length=64), nullable=True),
        sa.Column("name", sa.UnicodeText(), nullable=True),
        sa.Column("activated", sa.Boolean(), nullable=True),
        sa.ForeignKeyConstraint(["project_id"], ["project.id"]),
        sa.PrimaryKeyConstraint("id"),
    )
    op.create_table(
        "bill",
        sa.Column("id", sa.Integer(), nullable=False),
        sa.Column("payer_id", sa.Integer(), nullable=True),
        sa.Column("amount", sa.Float(), nullable=True),
        sa.Column("date", sa.Date(), nullable=True),
        sa.Column("what", sa.UnicodeText(), nullable=True),
        sa.Column("archive", sa.Integer(), nullable=True),
        sa.ForeignKeyConstraint(["archive"], ["archive.id"]),
        sa.ForeignKeyConstraint(["payer_id"], ["person.id"]),
        sa.PrimaryKeyConstraint("id"),
    )
    op.create_table(
        "billowers",
        sa.Column("bill_id", sa.Integer(), nullable=True),
        sa.Column("person_id", sa.Integer(), nullable=True),
        sa.ForeignKeyConstraint(["bill_id"], ["bill.id"]),
        sa.ForeignKeyConstraint(["person_id"], ["person.id"]),
    )
    ### end Alembic commands ###


def downgrade():
    ### commands auto generated by Alembic - please adjust! ###
    op.drop_table("billowers")
    op.drop_table("bill")
    op.drop_table("person")
    op.drop_table("archive")
    op.drop_table("project")
    ### end Alembic commands ###
