49 lines
2.3 KiB
Python
49 lines
2.3 KiB
Python
|
|
from sqlalchemy import Column, BigInteger, Integer, String, ForeignKey, DateTime, JSON, Boolean
|
|
from sqlalchemy.orm import relationship
|
|
from app.core.models.base import AlchemyBase
|
|
from app.core.models.content.indexation_mixins import UserContentIndexationMixin
|
|
|
|
|
|
class UserContent(AlchemyBase, UserContentIndexationMixin):
|
|
__tablename__ = 'users_content'
|
|
|
|
id = Column(Integer, autoincrement=True, primary_key=True)
|
|
type = Column(String(128), nullable=False) # 'license/issuer', 'license/listen', 'nft/unknown'
|
|
onchain_address = Column(String(1024), nullable=True) # bind by this
|
|
owner_address = Column(String(1024), nullable=True)
|
|
code_hash = Column(String(128), nullable=True)
|
|
data_hash = Column(String(128), nullable=True)
|
|
updated = Column(DateTime, nullable=False, default=0)
|
|
|
|
content_id = Column(Integer, ForeignKey('node_storage.id'), nullable=True)
|
|
created = Column(DateTime, nullable=False, default=0)
|
|
|
|
meta = Column(JSON, nullable=False, default={})
|
|
user_id = Column(Integer, ForeignKey('users.id'), nullable=False)
|
|
wallet_connection_id = Column(Integer, ForeignKey('wallet_connections.id'), nullable=True)
|
|
status = Column(String(64), nullable=False, default='active') # 'transaction_requested'
|
|
|
|
user = relationship('User', uselist=False, foreign_keys=[user_id])
|
|
wallet_connection = relationship('WalletConnection', uselist=False, foreign_keys=[wallet_connection_id])
|
|
content = relationship('StoredContent', uselist=False, foreign_keys=[content_id])
|
|
|
|
class UserAction(AlchemyBase):
|
|
__tablename__ = 'users_actions'
|
|
|
|
id = Column(Integer, autoincrement=True, primary_key=True)
|
|
type = Column(String(128), nullable=False) # 'purchase'
|
|
user_id = Column(Integer, ForeignKey('users.id'), nullable=False)
|
|
content_id = Column(Integer, ForeignKey('node_storage.id'), nullable=True)
|
|
telegram_message_id = Column(BigInteger, nullable=True)
|
|
|
|
to_address = Column(String(1024), nullable=True)
|
|
from_address = Column(String(1024), nullable=True)
|
|
status = Column(String(128), nullable=True)
|
|
meta = Column(JSON, nullable=False, default={})
|
|
created = Column(DateTime, nullable=False, default=0)
|
|
|
|
user = relationship('User', uselist=False, foreign_keys=[user_id])
|
|
content = relationship('StoredContent', uselist=False, foreign_keys=[content_id])
|
|
|