diff --git a/app/db/crud.py b/app/db/crud.py index 1f7272e..dc10aa1 100644 --- a/app/db/crud.py +++ b/app/db/crud.py @@ -725,12 +725,15 @@ def revoke_user_sub(db: Session, dbuser: User): def update_user_sub(db: Session, dbuser: User, user_agent: str): - dbuser.sub_updated_at = datetime.utcnow() - dbuser.sub_last_user_agent = user_agent - - db.commit() - db.refresh(dbuser) - return dbuser + with db.get_bind().begin() as conn: + conn.execute( + update(User) + .where(User.id == dbuser.id) + .values( + sub_updated_at=datetime.utcnow(), + sub_last_user_agent=user_agent, + ) + ) def reset_all_users_data_usage(db: Session, admin: Optional[Admin] = None): diff --git a/app/models/user.py b/app/models/user.py index c03b728..34938c1 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -40,9 +40,16 @@ class User(BaseModel): ] expire_strategy: UserExpireStrategy expire_date: datetime | None = Field(None) - usage_duration: Annotated[ - int, Field(le=9999 * 365 * 24 * 60 * 60, description="usage_duration must be less than 9999 years") - ] | None = None, + usage_duration: ( + Annotated[ + int, + Field( + le=9999 * 365 * 24 * 60 * 60, + description="usage_duration must be less than 9999 years", + ), + ] + | None + ) = (None,) activation_deadline: datetime | None = Field(None) key: str = Field(default_factory=lambda: secrets.token_hex(16)) data_limit: int | None = Field(