第一部分のプロジェクトコードでは、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 の特性を活用していないため、今後はもっと良くできると思います。