Both held arbitrary-length data (a raw signed transaction hex, an audit payload) in a bare String, which SQLAlchemy compiles to VARCHAR with no length. SQLite and PostgreSQL accept that; other backends like MySQL require a length on VARCHAR and would reject it. Add a migration (verified upgrade/downgrade/upgrade round-trip, and confirmed with `alembic check` that it leaves no further diff against the models). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
17 lines
614 B
Python
17 lines
614 B
Python
"""B-47: raw_tx_hex (a full raw signed transaction hex) and payload_json (an
|
|
arbitrary audit payload) must stay `Text`, not a bare `String`/`VARCHAR` with
|
|
no length -- SQLite and PostgreSQL accept that, but other backends (e.g.
|
|
MySQL) require a length on VARCHAR and would reject it."""
|
|
|
|
from sqlalchemy import Text
|
|
|
|
from app.db.models import AuditLog, PendingTransaction
|
|
|
|
|
|
def test_pending_transaction_raw_tx_hex_is_text():
|
|
assert isinstance(PendingTransaction.__table__.c.raw_tx_hex.type, Text)
|
|
|
|
|
|
def test_audit_log_payload_json_is_text():
|
|
assert isinstance(AuditLog.__table__.c.payload_json.type, Text)
|