Я понимаю, что репозиторий должен отвечать за CRUD в шаблоне репозитория. Мой вопрос: должен ли репозиторий отвечать за обновление указанного поля модели, хранящегося во внешней службе?Должен ли репозиторий отвечать за обновление указанного поля модели, хранящегося во внешней службе?
Например:
- Данные
UserAccount
хранятся во внешнем веб-службы. - Пользователь может иметь несколько
UserAccount
- приложения, пользователь может выбрать цель
UserAccount
и может обновитьdisplayName
изUserAccount
- Есть некоторые слова, не допускается использовать в DISPLAYNAME и приложение не знает, что такое эти слова.
pesdocode:
public class MainController
{
IUserAccountService userAccountService; // injected
public void Main()
{
userAccountService.GetUsers().Then (UpdateUserView);
}
// ...
void OnUserAccountSelected (UserAccount selectedUserAccount, string newDisplayName)
{
userAccountService.UpdateDisplayName (selectedUserAccount, newDisplayName)
.Then (UpdateUserView)
.Catch<WordInDisplayNameNotAllowedException> (HandleWordInDisplayNameNotAllowedException)
.Catch (HandleError);
}
}
public class UserAccountService : IUserAccountSercie
{
IUserAccountRepository repository; // injected
// ...
public Promise<UserList> GetUsers()
{
return repository.GetAll();
}
public UpdateDisplayName (UserAccount userAccount, string newDisplayName)
{
// Should I like the following?
repository.UpdateDisplayName (userAccount, newDisplayName);
}
}
public class UserAccountRepository : IUserAccountRepository
{
public Promise<UserList> GetAll()
{
// request to external web service...
}
public Promise<UserAccount> UpdateDisplayName (UserAccount userAccount, string newDisplayName)
{
// request to external web service...
}
}
Где я должен поставить коды для вызова веб-API для обновления UserAccount::displayName
?
Репозиторий - это место, где можно совершить звонок по обновлению. В этом случае внешний веб-API - это ваше хранилище данных, поэтому поставьте хранилище, отвечающее за его работу. – dbugger