Уровень репозитория
Уровень репозитория абстрагирует доступ к Supabase от остальной части приложения. Каждый репозиторий инкапсулирует операции CRUD для определенного объекта. Все методы представляют собой функции suspend, выполняемые на Dispatchers.IO.
Локатор сервисов
di/ServiceLocator.kt выступает в качестве точки доступа к репозиториям. Каждый репозиторий создается способом lazy (единственный экземпляр, создаваемый при первом доступе):
object ServiceLocator {
val authRepository by lazy { AuthRepository() }
val usuarioRepository by lazy { UsuarioRepository() }
val maquinaRepository by lazy { MaquinaRepository() }
val reservaRepository by lazy { ReservaRepository() }
val platoRepository by lazy { PlatoRepository() }
val pesoRepository by lazy { PesoRepository() }
val pagoRepository by lazy { PagoRepository() }
}
ViewModels получают доступ к репозиториям через ServiceLocator.xRepository.
Репозиторий авторизации
Управляет операциями аутентификации и регистрации.
| Метод | Описание |
|---|---|
getUserByDni(dni) | Поиск пользователя по ID. Возвращает Usuario? |
userExistsByDni(dni) | Проверьте, зарегистрирован ли уже DNI. Возвращает Boolean |
verifyCredentials(dni, email) | Проверьте пару DNI + адрес электронной почты для восстановления пароля |
updatePassword(userId, newPass) | Обновляет поле пользователя contraseniaHash |
insertUser(nombre, dni, email, pass, telefono) | Зарегистрируйте нового пользователя с помощью admin=0 и premium=false |
##Репозиторий пользователей
Управляет чтением и обновлением профиля пользователя.
| Метод | Описание |
|---|---|
getById(id) | Получает пользователя по его идентификатору. Возвращает Usuario? |
update(id, nombre, email, telefono, pass, foto) | Обновить редактируемые поля профиля |
updatePremium(id, isPremium, fechaIni, fechaFin) | Активировать или деактивировать Премиум-подписку |
##Репозиторий Maquina
Управляйте каталогом техники.
| Метод | Описание |
|---|---|
getAll() | Получает полный список машин. Возвращает List<Maquina> |
insert(maquina) | Вставьте новую машину |
delete(id) | Удалить машину по ID |
activateMaintenance(id, desde, hasta) | Отметьте машину как неработоспособную с диапазоном технического обслуживания |
deactivateMaintenance(id) | Повторно активируйте машину и очистите поля обслуживания |
Резервный репозиторий
Управлять резервами техники.
| Метод | Описание |
|---|---|
getAll() | Получите все резервирования со встроенными пользовательскими и машинными данными |
getByUser(userId) | Получить бронирование от конкретного пользователя |
getByMachine(machineId) | Получите активное бронирование машины |
insert(reserva) | Создать новое бронирование |
delete(id) | Отменить/удалить бронирование по ID |
Запросы резервирования используют встроенный синтаксис отношений PostgREST (*, usuarios(*), maquinas(*)) для получения данных пользователя и компьютера в одном запросе.
Репозиторий Платона
Ведение каталога диетических блюд.
| Метод | Описание |
|---|---|
getAccepted() | Получает блюда с помощью aceptado=true и visibilidad=true |
getPending() | Получает посуду с помощью aceptado=false (только для администраторов) |
insert(plato) | Вставьте новую пластину с помощью aceptado=false |
accept(id) | Одобрить блюдо: aceptado=true |
delete(id) | Удалить табличку навсегда |
##ПесоРепозиторий
Управляйте записями веса тела.
| Метод | Описание |
|---|---|
getByUser(userId) | Получает историю веса пользователя, отсортированную по возрастанию даты |
insert(pesoUsuario) | Вставьте новый рекорд веса |
update(id, peso) | Обновляет значение существующей записи |
delete(id) | Удалить запись веса |
##Репозиторий Паго
Управляйте историей платежей по подписке.
| Метод | Описание |
|---|---|
getByUser(userId) | Получает платежи пользователя, отсортированные по дате убывания |
insert(pago) | Зарегистрируйте новый платеж по подписке |