Алгоритм фильтрации / дедупликации событий - PullRequest
0 голосов
/ 06 ноября 2018

Допустим, у меня есть прослушиватель событий для обновления состояния пользователя.

Состояние до:

{
    email: "old@email.com",
    name: "John"
}

события, поступающие в порядке:

eventA = {
    fields: ["email"],
    timestamp: 1541531309
    before: {
        email: "old@email.com"
    },
    after: {
        email: "new@email.com"
    }
}

eventB = {
    fields: ["email", "name"],
    timestamp: 1541531310
    before: {
        email: "old@email.com",
        name: "John"
    },
    after: {
        email: "new@email.com",
        name: "Bill"
    }
}

eventC = { // same as A
    fields: ["email"],
    timestamp: 1541531309
    before: {
        email: "old@email.com"
    },
    after: {
        email: "new@email.com"
    }
}

Желаемое состояние после:

{
    email: "new@email.com",
    name: "Bill"
}

Как правильно фильтровать события без :

  1. сохранение всего события, всех событий
  2. зацикливание на каждом поле / значении событий

Немного магии / хэширования / контрольной суммы?

P.S. можно добавить дополнительную информацию к самому событию.

Спасибо.

...