Большинство приложений используют базу данных для управления изменением, созданием и удалением данных. Итак, мой следующий шаг в изучении rust — выяснить, как взаимодействовать с базой данных. Одним из способов облегчения взаимодействия между вашей программой и базой данных является написание кода для генерации соответствующих операторов SQL. Это как-то коряво на мой взгляд. На смену приходят объектно-реляционные преобразователи (сокращенно ORM). Как следует из названия, они сопоставляют таблицы базы данных (отношения) с объектами в вашей программе, что обеспечивает более удобный доступ к ним. Во вселенной ржавчины одним из самых популярных ORM является Diesel, который фактически используется для веб-сайта crates.io. Он даже поставляется с удобным интерфейсом для настройки!

Теперь, когда я понял, с чем работать, мне нужно было создать среду разработки. Я использую ПК с Windows, который я настроил для редактирования и печати фотографий, поэтому мне не нравится устанавливать на него слишком много вещей. Первоначально инстанс Cloud9 на AWS казался подходящим, но у меня на столе много мощного оборудования. Зачем платить за это в облаке? Я решил установить Debian в виртуальную коробку, которая прекрасно работала. Затем я установил в него postgres и потратил некоторое время на то, чтобы выяснить, как его настроить, создать новых пользователей и другие административные задачи. В прошлом базы данных всегда были настроены для меня, и мне было очень интересно погрузиться в них немного глубже.

У меня возникла проблема с установкой ящика для дизельного двигателя. Он зависит от библиотеки C++, поэтому я рекомендую ознакомиться с их предварительной документацией на git: https://github.com/diesel-rs/diesel/tree/master/guide_drafts

Я воспроизвел предоставленные дизельные примеры, а затем решил написать небольшое приложение командной строки для ведения заметок, чтобы протестировать его. В дизельном рабочем процессе вы сначала создаете переменную среды, содержащую строку подключения к базе данных. Затем с помощью дизельного кли можно создавать и выполнять миграции базы данных. Они содержат операторы CREATE TABLE для отношений в модели данных вашего приложения. Моя маленькая программа имеет только одну таблицу под названием заметки. Когда вы запускаете миграцию, Diesel автоматически создает макросы в файле с именем schema.rs, что позволяет вам получить доступ к таблицам базы данных в коде rust. Следующим шагом является создание соответствующих структур (называемых Примечание). Я нашел эту полезную запись в блоге, которая отображает типы postgres в типы rust. В этих структурах определены функции для создания, редактирования и удаления заметок.

Чтобы сделать взаимодействие CLI более эргономичным, я использовал крейт диалог, который позволяет (множественный) выбор(ы).

Если вам это показалось интересным, вы можете найти мой код на git hub: https://github.com/marvintherain/mynotesapp