diff --git a/apps/blockchain-node/src/aitbc_chain/base_models.py b/apps/blockchain-node/src/aitbc_chain/base_models.py index 0860adbd..0f837c05 100755 --- a/apps/blockchain-node/src/aitbc_chain/base_models.py +++ b/apps/blockchain-node/src/aitbc_chain/base_models.py @@ -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]" } ) diff --git a/apps/blockchain-node/src/aitbc_chain/rpc/contracts_stub.py b/apps/blockchain-node/src/aitbc_chain/rpc/contracts_stub.py new file mode 100644 index 00000000..a3623150 --- /dev/null +++ b/apps/blockchain-node/src/aitbc_chain/rpc/contracts_stub.py @@ -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 diff --git a/apps/blockchain-node/src/aitbc_chain/rpc/router.py b/apps/blockchain-node/src/aitbc_chain/rpc/router.py index cae44601..5fe3903d 100644 --- a/apps/blockchain-node/src/aitbc_chain/rpc/router.py +++ b/apps/blockchain-node/src/aitbc_chain/rpc/router.py @@ -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,