Skip to main content

Intro

info

Please note that abstract entities of the user, service type are not used in a single language. Historical exception for services like App.

Ивенты

Все изменения состояния фейворитов для игрока изменяются через ивент. Redis используется для хранения агрегатов.

topic: favorite.games.changes
export default {
name: 'FavoriteChange',
scheme: avro.Type.forSchema({
type: 'record',
namespace: 'favorite.games',
name: 'Action',
fields: [
{
name: 'player', // UUID (Новый юид пользователя, UUIDv4)
type: 'string',
},
{
name: 'game_id',
type: 'string',
},
{
name: 'action',
type: {type: 'enum', name: 'action', symbols: ['ADD', 'DELETE']},
},
{
name: 'timestamp',
type: 'long',
},
{
name: 'event_version',
type: 'int',
},
],
}),
};

FavoriteChange Event Schema

Аутентификация

Атентификация используется стандартная, через JWT. Для менеджерского доступа используется JWT из admin_auth в котором есть необходимые скоупы.

jwt payload
{
...
"scope": ["favorite_games.all"],
...
}
permissions:
favorite_games:
all: 'service.favorite_games.*'

Sequence diagram

How it workss