star invoices

This commit is contained in:
user 2025-02-26 19:43:58 +03:00
parent d5bb480042
commit d0845a153c
3 changed files with 44 additions and 13 deletions

View File

@ -3,6 +3,7 @@ from aiogram import Bot, types
from app.core.logger import make_log
from app.core.models.node_storage import StoredContent
from app.core.models.keys import KnownKey
from app.core.models import StarsInvoice
from app.core.models.content.user_content import UserContent
from app.core._config import CLIENT_TELEGRAM_API_KEY
import json
@ -56,19 +57,35 @@ async def s_api_v1_content_view(request, content_address: str):
content_id=content['encrypted_content'].id).first())
)
if not have_access:
stars_cost = 1
invoice_id = f"access_{uuid.uuid4().hex}"
request.ctx.db_session.add(
StarsInvoice(
external_id=invoice_id,
type='access',
amount=stars_cost,
content_hash=content['encrypted_content'].hash,
)
)
request.ctx.db_session.commit()
try:
invoice_id = uuid.uuid4().hex
opts['invoice_url'] = (
await Bot(token=CLIENT_TELEGRAM_API_KEY).create_invoice_link(
opts['invoice'] = {
'url': (
await Bot(token=CLIENT_TELEGRAM_API_KEY).create_invodeice_link(
description='You will receive NFT with lifetime access to content',
payload=f"access_{invoice_id}",
title='Lifetime access to content',
currency='XTR',
prices=[
types.LabeledPrice(label='Lifetime access', amount=1)
]
)
types.LabeledPrice(label='Lifetime access', amount=stars_cost),
],
provider_token="",
)
),
'amount': stars_cost,
}
except BaseException as e:
make_log("Content", f"Can't create invoice link: {e}", level='warning')

View File

@ -2,7 +2,7 @@ from app.core.models.base import AlchemyBase
from app.core.models.keys import KnownKey
from app.core.models.memory import Memory
from app.core.models.node_storage import StoredContent
from app.core.models.transaction import UserBalance, InternalTransaction
from app.core.models.transaction import UserBalance, InternalTransaction, StarsInvoice
from app.core.models.user import User
from app.core.models.wallet_connection import WalletConnection
from app.core.models.messages import KnownTelegramMessage

View File

@ -1,5 +1,6 @@
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, Boolean, Float
from sqlalchemy.orm import relationship
from datetime import datetime
from .base import AlchemyBase
@ -36,3 +37,16 @@ class InternalTransaction(AlchemyBase):
user = relationship('User', uselist=False, back_populates='internal_transactions', foreign_keys=[user_id])
asset = relationship('Asset', uselist=False, foreign_keys=[asset_id])
spent_transaction = relationship('InternalTransaction', uselist=False, foreign_keys=[spent_transaction_id])
class StarsInvoice(AlchemyBase):
__tablename__ = 'stars_invoices'
id = Column(Integer, autoincrement=True, primary_key=True)
external_id = Column(String(1024), nullable=False)
type = Column(String(256), nullable=False)
amount = Column(Integer, nullable=False)
content_hash = Column(String(256), nullable=True)
created = Column(DateTime, nullable=False, default=datetime.utcnow)