Как я понимаю мне нужно, чтобы все хранилища реализовывали методы интерфейса getOne, set.
Вообще репозиторий должен реализовывать стандартный CRUD (по сути getOne это read, а set смесь create + update), а в него передается модель для манипуляций, из модели уже можно, в зависимости от реализованного хранилища, брать нужные данные, для бд айди, для лс ключ (хотя по сути это одно и то же, ничего не мешает вам хранить в лс цифровые ключи, если это у вас действительно хранилище, а не справочник/кэш).
Кроме того, не совсем корректно объединять кей-валуе хранилище с реляционным общим интерфейсом, так как функционал последнего на порядок шире и интерфейсом первого никак не покрывается. Разве что у вас действительно будет РБД использоваться чисто как кей-валуе, во что слабо верится.
загадкой остается только как у вас будет работать бд на фронтенде (firebase?) или лс на бэкенде...