diff --git a/app/database/models.py b/app/database/models.py index a57f5c83..47dd1fa5 100644 --- a/app/database/models.py +++ b/app/database/models.py @@ -241,6 +241,9 @@ class YooKassaPayment(Base): class SavedPaymentMethod(Base): __tablename__ = 'saved_payment_methods' + __table_args__ = ( + Index('ix_saved_payment_methods_user_active', 'user_id', 'is_active'), + ) id = Column(Integer, primary_key=True, index=True) user_id = Column(Integer, ForeignKey('users.id'), nullable=False, index=True) diff --git a/app/localization/locales/fa.json b/app/localization/locales/fa.json index 531c1783..98ecb71e 100644 --- a/app/localization/locales/fa.json +++ b/app/localization/locales/fa.json @@ -1441,7 +1441,7 @@ "SUBSCRIPTION_EXPIRED_SECOND_WAVE": "🔥 تخفیف {percent}% برای تمدید\n\nپیشنهاد را فعال کنید تا تخفیف اضافی بگیرید. با گروه تخفیف جمع شده و تا {expires_at} اعتبار دارد.", "SUBSCRIPTION_EXPIRED_THIRD_WAVE": "🎁 تخفیف اختصاصی {percent}%\n\n{trigger_days} روز بدون اشتراک گذشته. برگردید و تخفیف اضافی فعال کنید — با گروه تخفیف جمع شده و تا {expires_at} اعتبار دارد.", "SUBSCRIPTION_EXPIRING": "⏰ اشتراک بهزودی منقضی میشود!", - "SUBSCRIPTION_EXPIRING_PAID": "⏰ اشتراک {days} روز دیگر منقضی میشود.", + "SUBSCRIPTION_EXPIRING_PAID": "\n⚠️ اشتراک تا {days_text} دیگر منقضی میشود!\n\nاشتراک پولی شما در تاریخ {end_date} منقضی میشود.\n\n💳 پرداخت خودکار: {autopay_status}\n\n{action_text}\n", "SUBSCRIPTION_EXTEND": "🔄 تمدید اشتراک", "SUBSCRIPTION_HAPP_CRYPTOLINK_BLOCK": "
{crypto_link}",
"SUBSCRIPTION_HAPP_LINK_PROMPT": "🔒 لینک اشتراک ایجاد شد. دکمه «اتصال» بزنید تا در Happ باز شود.",
diff --git a/migrations/alembic/versions/0037_add_saved_payment_methods.py b/migrations/alembic/versions/0037_add_saved_payment_methods.py
index 3234768a..dd56f9fa 100644
--- a/migrations/alembic/versions/0037_add_saved_payment_methods.py
+++ b/migrations/alembic/versions/0037_add_saved_payment_methods.py
@@ -1,7 +1,7 @@
"""add saved_payment_methods table for recurrent payments
-Revision ID: 0032
-Revises: 0031
+Revision ID: 0037
+Revises: 0036
Create Date: 2026-03-05
Adds saved_payment_methods table for storing YooKassa saved payment methods
@@ -40,6 +40,11 @@ def upgrade() -> None:
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.func.now()),
sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.func.now()),
)
+ op.create_index(
+ 'ix_saved_payment_methods_user_active',
+ 'saved_payment_methods',
+ ['user_id', 'is_active'],
+ )
def downgrade() -> None: