44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
from asyncio import Condition
|
|
|
|
import httpx
|
|
from datetime import datetime, timedelta
|
|
|
|
from sqlalchemy import select
|
|
|
|
from app.models.base import async_session
|
|
from app.models.user_oauth import UserOAuth
|
|
from app.models.user_oauth_app import UserOAuthApp
|
|
from app.tasks.async_runner import run_async
|
|
from app.tasks.celery_app import celery_app
|
|
|
|
|
|
async def _update_oauth_accounts(account_id: str, account_userid: str, current_user_id: str, db: async_session):
|
|
conditions = [UserOAuth.user_id == current_user_id, UserOAuth.deleted_at.is_(None)]
|
|
if account_id:
|
|
conditions.append(UserOAuth.account_id == account_id)
|
|
if account_userid:
|
|
conditions.append(UserOAuth.account_userid == account_userid)
|
|
result = await db.execute(
|
|
select(UserOAuth).where(
|
|
*conditions
|
|
)
|
|
)
|
|
oauth_records = result.scalars().all()
|
|
if not oauth_records:
|
|
return True
|
|
for oauth in oauth_records:
|
|
pass
|
|
|
|
if celery_app:
|
|
@celery_app.task(name="user_oauth.update_oauth_accounts", bind=True, max_retries=3, default_retry_delay=60)
|
|
def update_oauth_accounts(self, account_id: str, account_userid: str, current_user_id: str, db):
|
|
return run_async(_update_oauth_accounts(account_id, account_userid, current_user_id, db))
|
|
else:
|
|
class _DisabledTask:
|
|
def delay(self, *args, **kwargs):
|
|
pass
|
|
|
|
def apply_async(self, *args, **kwargs):
|
|
pass
|
|
|
|
update_oauth_accounts = _DisabledTask() |