Прошло некоторое время с тех пор, как я в последний раз обновлял свой прогресс. После последнего обновления я значительно продвинулся вперед.
В последнем обновлении я начал создавать модель пользователя. К настоящему времени я перенес всю модель User в базу данных из GSettings и соответствующим образом рефакторизовал кодовую базу.
Вот мой основной прогресс на данный момент:
- Создание новой модели пользователя:Новая модель пользователя включает в себя все данные пользователя, которые изначально были сохранены в GSettings, такие как user_birthday, user_height и т.д. Эта новая модель поможет связать каждого пользователя с единой структурой данных.
pub struct User {
pub user_id: i64,
pub user_name: String,
pub user_birthday: glib::DateTime,
pub user_height: Length,
pub user_weightgoal: Mass,
pub user_stepgoal: i64,
pub enabled_plugins: Vec<PluginName>,
pub recent_activity_types: Vec<ActivityType>,
pub did_initial_setup: bool,
}
-
Миграция в базу данных
Текущие данные пользователей хранятся в базе данных вместо GSettings для дополнительной гибкости и поддержки множества различных пользователей. Каждому пользователю присваивается идентификатор пользователя, а идентификатор активного пользователя сохраняется в Настройках GSettings для быстрого доступа к конкретному пользователю. -
Привязка весов и видов деятельности к пользователю
Следующая часть моего проекта была посвящена привязке весов и видов деятельности к конкретному пользователю, чтобы все данные можно было сохранять и извлекать на основе ID конкретного пользователя. -
Обработка миграции базы данных
Ранее функция миграции даты в DateTime выполнялась для каждой функции, что приводило к замедлению времени запуска приложения. Это было исправлено путем добавления параметра Version к базе данных таким образом, что если версия базы данных равна текущей версии, мы пропускаем миграцию, в противном случае мы запускаем миграцию и обновляем базу данных. Кроме того, добавлены три дополнительные функции миграции, например, начальный пользователь будет создан из данных в файле GSettings и ассоциирует каждую активность и вес с начальным пользователем с идентификатором пользователя 1. -
Добавление метода для переключения пользователей
Последняя часть до моей промежуточной оценки касалась добавления пользовательского интерфейса для переключения нескольких пользователей.
Это все для моего проекта до настоящего времени. Вот ссылка на мой MR: https://gitlab.gnome.org/World/Health/-/merge_requests/174.
Следующие шаги:
Теперь я буду работать над:
- Добавление новой модели синхронизации, которая поможет в поддержке нескольких поставщиков синхронизации для различных категорий здоровья для каждого пользователя.
- Извлечение фактических действий из Google Fit,
- Поддержка двусторонней синхронизации
- Добавление пользовательского интерфейса для переключения нескольких провайдеров синхронизации.
Увидимся со всеми вами через 3 недели. Спасибо за чтение!