fix: blockchain RPC mapper errors and missing contract stubs
- Fix SQLAlchemy relationship references in base_models.py (models.Transaction -> base_models.Transaction) - Create contracts_stub.py for when contract_service module is unavailable - Wire up contracts_stub as fallback in router.py imports - Blockchain RPC now returns data instead of 503 errors
This commit is contained in:
@@ -47,8 +47,8 @@ class Block(SQLModel, table=True):
|
||||
back_populates="block",
|
||||
sa_relationship_kwargs={
|
||||
"lazy": "selectin",
|
||||
"primaryjoin": "and_(aitbc_chain.models.Transaction.block_height==Block.height, aitbc_chain.models.Transaction.chain_id==Block.chain_id)",
|
||||
"foreign_keys": "[aitbc_chain.models.Transaction.block_height, aitbc_chain.models.Transaction.chain_id]"
|
||||
"primaryjoin": "and_(aitbc_chain.base_models.Transaction.block_height==Block.height, aitbc_chain.base_models.Transaction.chain_id==Block.chain_id)",
|
||||
"foreign_keys": "[aitbc_chain.base_models.Transaction.block_height, aitbc_chain.base_models.Transaction.chain_id]"
|
||||
}
|
||||
)
|
||||
receipts: List["Receipt"] = Relationship(
|
||||
@@ -108,8 +108,8 @@ class Transaction(SQLModel, table=True):
|
||||
block: Optional["Block"] = Relationship(
|
||||
back_populates="transactions",
|
||||
sa_relationship_kwargs={
|
||||
"primaryjoin": "and_(aitbc_chain.models.Transaction.block_height==Block.height, aitbc_chain.models.Transaction.chain_id==Block.chain_id)",
|
||||
"foreign_keys": "[aitbc_chain.models.Transaction.block_height, aitbc_chain.models.Transaction.chain_id]"
|
||||
"primaryjoin": "and_(aitbc_chain.base_models.Transaction.block_height==Block.height, aitbc_chain.base_models.Transaction.chain_id==Block.chain_id)",
|
||||
"foreign_keys": "[aitbc_chain.base_models.Transaction.block_height, aitbc_chain.base_models.Transaction.chain_id]"
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
23
apps/blockchain-node/src/aitbc_chain/rpc/contracts_stub.py
Normal file
23
apps/blockchain-node/src/aitbc_chain/rpc/contracts_stub.py
Normal file
@@ -0,0 +1,23 @@
|
||||
"""Stub contracts module for when contract_service is not available."""
|
||||
from typing import Any, Dict
|
||||
from fastapi import Request
|
||||
|
||||
|
||||
async def _stub(request: Request, *args, **kwargs) -> Dict[str, Any]:
|
||||
return {"error": "Contract service not available", "status": "unavailable"}
|
||||
|
||||
|
||||
deploy_messaging_contract = _stub
|
||||
list_contracts = _stub
|
||||
deploy_contract = _stub
|
||||
call_contract = _stub
|
||||
verify_contract = _stub
|
||||
get_messaging_contract_state = _stub
|
||||
get_forum_topics = _stub
|
||||
create_forum_topic = _stub
|
||||
get_topic_messages = _stub
|
||||
post_message = _stub
|
||||
vote_message = _stub
|
||||
search_messages = _stub
|
||||
get_agent_reputation = _stub
|
||||
moderate_message = _stub
|
||||
@@ -111,6 +111,22 @@ try:
|
||||
)
|
||||
except ImportError:
|
||||
_logger.warning("Contracts module not available")
|
||||
from .contracts_stub import ( # type: ignore[assignment]
|
||||
deploy_messaging_contract,
|
||||
list_contracts,
|
||||
deploy_contract,
|
||||
call_contract,
|
||||
verify_contract,
|
||||
get_messaging_contract_state,
|
||||
get_forum_topics,
|
||||
create_forum_topic,
|
||||
get_topic_messages,
|
||||
post_message,
|
||||
vote_message,
|
||||
search_messages,
|
||||
get_agent_reputation,
|
||||
moderate_message,
|
||||
)
|
||||
from .sync import (
|
||||
export_chain,
|
||||
import_chain,
|
||||
|
||||
Reference in New Issue
Block a user