Skip to content

Backend/srv/auth srv - #33

Closed
Sigmagor wants to merge 17 commits into
devfrom
backend/srv/auth-srv
Closed

Sigmagor wants to merge 17 commits into
devfrom
backend/srv/auth-srv

Conversation

@Sigmagor

@Sigmagor Sigmagor commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

Comment on lines +71 to +74
await self._users.save(user)

tokens = await self._issue_token_pair(user)
await self._publish_user_created(user)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Оч хочется в подобных местах использовать паттерн Outbox, потому что при краше/эксепшне между L71 и L74 будет несогласованное состояние (не получим уведом о пользаке, хотя инфа записана).

TL;DR Аутбокс состоит из двух этапов: 1) в атомарной транзакции в БД записываются изменения о пользаке и информация о событии в аутбокс-табличку 2) в фоне специальный воркер проверяет аубокс-табличку, отправляет событие в брокер, затем удаляет событие из БД.

Если херанёт в 1), то всё норм, ни записали, ни отправили
Если херанёт в 2), то мы не потеряем инфу о событии, но exactly-once отправку обеспечить уже не можем, нужно будет делать дедупликейт событий на стороне приёмки.


# App
APP_NAME: str = "auth-service"
APP_ENV: str = "development"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
APP_ENV: str = "development"
# from typing import Literal
APP_ENV: Literal["development", "staging", "production"] = "development"

Comment on lines +46 to +52
@field_validator("APP_ENV")
@classmethod
def validate_app_env(cls, v: str) -> str:
allowed = {"development", "staging", "production"}
if v not in allowed:
raise ValueError(f"APP_ENV must be one of {allowed}")
return v

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
@field_validator("APP_ENV")
@classmethod
def validate_app_env(cls, v: str) -> str:
allowed = {"development", "staging", "production"}
if v not in allowed:
raise ValueError(f"APP_ENV must be one of {allowed}")
return v

@golkity golkity closed this Jun 16, 2026
@golkity
golkity requested review from ACherryJam and golkity and removed request for ACherryJam June 16, 2026 08:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants