Skip to content

Commit 01bc857

Browse files
committed
fix: flush before related records and restore token update semantics
1 parent 6c61383 commit 01bc857

2 files changed

Lines changed: 12 additions & 8 deletions

File tree

src/modules/user/infrastructure/repositories/refresh_token_repository.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,17 @@ async def get_by_token_hash(self, token_hash: str) -> RefreshToken | None:
3333
)
3434

3535
async def save(self, refresh_token: RefreshToken) -> RefreshToken:
36-
model = RefreshTokenModel(
37-
user_id=refresh_token.user_id,
38-
tenant_id=self._tenant_id,
39-
refresh_token_hash=refresh_token.token_hash,
40-
expires_at=refresh_token.expires_at,
41-
is_revoked=refresh_token.is_revoked,
42-
)
43-
self.db.add(model)
36+
model_kwargs = {
37+
"user_id": refresh_token.user_id,
38+
"tenant_id": self._tenant_id,
39+
"refresh_token_hash": refresh_token.token_hash,
40+
"expires_at": refresh_token.expires_at,
41+
"is_revoked": refresh_token.is_revoked,
42+
}
43+
if refresh_token.id is not None:
44+
model_kwargs["id"] = refresh_token.id
45+
model = RefreshTokenModel(**model_kwargs)
46+
model = await self.db.merge(model)
4447
await self.db.flush()
4548
await self.db.refresh(model)
4649
return RefreshToken(

src/modules/user/infrastructure/repositories/user_repository.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ async def save(self, user: User) -> User:
9090
model_kwargs["id"] = user.id
9191
user_model = UserModel(**model_kwargs)
9292
self._db.add(user_model)
93+
await self._db.flush()
9394

9495
# Create default related records
9596
await self._create_default_related_records(user_model.id)

0 commit comments

Comments
 (0)