第一部分のプロジェクトコードでは、json ファイル内で映画情報を管理し、役割のランク付けによって映画の追加および削除操作を制限する機能が実装されています。
今回のコードはこのコースを基に、プロジェクトを workspace に変更し、映画を保存する json ファイルを sqlite ストレージに変更し、データベースを使用して追加、削除、更新、検索を行い、データベースを利用して役割の判断を行います。
具体的なコード部分は db_services.rs が元の services.rs に置き換えられています。ここには映画情報の追加、削除、更新、検索操作とユーザーの役割を識別する機能が含まれています。
また、sql_tools.rs 部分ではデータベースの初期化操作が実装されており、データベースを作成する際にいくつかのテスト用データを追加し、json ファイルを読み込んでデータベースに移行する関数が含まれています。
// db_tools.rs
// jsonファイル内のすべての映画情報をデータベースに移行する
fn json_save_to_db(conn: &Connection) -> Result<(), Box<dyn Error>> {
let movies = read_form_json()?;
for movie in movies {
conn.execute(
"INSERT INTO movies (disc, year, title, remark, user_id) VALUES (?1, ?2, ?3, ?4, ?5)",
(movie.disc, movie.year, movie.title, movie.remark, 1),
)?;
}
Ok(())
}
完全なコードはgithub リポジトリで見ることができます。
現在、rust を初学中で、書いたコードが醜いと感じており、rust の struct の特性を活かしていないため、今後はもっと良く改善できると思います。