Привет, подскажите как лучше всего реализовать схему для сабжа. Суть - запрос для отправки уведомлений. Язык - питон+proto3. Уведомлений много разных, на один запрос может идти несколько разных вариантов разным адресатам. Уведомление внутри это некая общая база плюс пачка специфичных параметров. Пока нашёл следующие варианты:
-
разбить на разные запросы. Вариант так себе, часто надо отправить сразу Х уведомлений на одно действие разным адресатам. Делать ради этого Х round-trip так себе идея
-
сделать базу плюс жирный oneof. Выглядит убого и нечитабельно, любой code completion будет тормозить, плюс их надо два - на отправку и на геттер. Да и классы видимо разные надо будет.
-
сделать базу плюс юзать any. Поддержка его есть только в ванильной либе которую писали впервые увидевшие питон сишные нарки. Плюс это убивает на корню любой code completion и проверку типов и добавляет головняк с использованием.
-
передавать кишки уведомления строкой-жсоном. Нет, спасибо.
-
сделать базу и юзать extension типы. Да, но не в proto3, к сожалению.
Есть ещё какие-то варианты? Пока самым нормальным выглядит oneof, но тогда будет что-то типа (внутри repeated).
message SendNotification {
string from = 1;
google.protobuf.Timestamp when = 2;
oneof data {
SayA sayA = 10;
SayB sayB = 11;
...
SayXYZ sayXyz = 100500;
}
message SayA {
string toEmail = 1;
string name = 2;
...
}
}
Простыню с парой сотен вариантов читать будет неудобно мягко говоря.