Migrations

Sistema de migrations para banco de dados.

Uso

from velox.migrations import MigrationManager

migrations = MigrationManager(db='db/app.db')

Criar Tabela

migrations.create_table(
    'users',
    {
        'id': 'INTEGER PRIMARY KEY AUTOINCREMENT',
        'username': 'TEXT NOT NULL UNIQUE',
        'email': 'TEXT NOT NULL UNIQUE',
        'password_hash': 'TEXT',
        'created_at': 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP',
    }
)

Drop Table

migrations.drop_table('users')

Add Column

migrations.add_column('users', 'avatar_url', 'TEXT')

Drop Column

migrations.drop_column('users', 'avatar_url')

Rename Column

migrations.rename_column('users', 'old_name', 'new_name')

Create Index

migrations.create_index('users', 'username')
migrations.create_index('users', 'email', unique=True)

Drop Index

migrations.drop_index('idx_users_username')

Execute SQL Customizado

migrations.execute('''
    CREATE TABLE IF NOT EXISTS posts (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        title TEXT NOT NULL,
        content TEXT
    )
''')

Listar Tabelas

tables = migrations.list_tables()
print(tables)  # ['users', 'posts', 'comments']

Verificar Tabela

if migrations.table_exists('users'):
    print('Tabela users existe')

Exportar Schema

schema = migrations.export_schema()
print(schema)

Migrations com Model

from velox.database import Model

class User(Model):
    table = 'users'
    schema = {
        'username': str,
        'email': str,
        'created_at': datetime,
    }

# Criar tabela automaticamente
User.create_table()