Перейти к основному содержанию

Уровень репозитория

Уровень репозитория абстрагирует доступ к 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)Зарегистрируйте новый платеж по подписке