blog.bouzuya.net

2023-12-18 bouzuya/firestore-path 0.1.0, 0.2.0 をつくった

昨日は bouzuya/firestore-path 0.1.0 をつくった。今日は 0.2.0 をつくった。

firestore-path は Rust で Firestore のドキュメントやコレクションのパスを扱うための crate 。次のような型を提供することでパスを表す文字列を扱いやすくする。

  • CollectionId
  • CollectionName
  • CollectionPath
  • DatabaseId
  • DatabaseName
  • DocumentId
  • DocumentName
  • DocumentPath
  • ProjectId

使用例。

use firestore_path::{CollectionId, CollectionName, DatabaseId, DatabaseName, DocumentId, DocumentName, ProjectId};
use std::str::FromStr;

fn main() -> anyhow::Result<()> {
    let project_id = ProjectId::from_str("my-project")?;
    let database_id = DatabaseId::from_str("my-database")?;
    let database_name = DatabaseName::new(project_id, database_id);

    let document_name: DocumentName = database_name
        .collection("chatrooms")?
        .doc("chatroom1")?
        .collection("messages")?
        .doc("message1")?;
    assert_eq!(
        document_name.to_string(),
        "projects/my-project/databases/my-database/documents/chatrooms/chatroom1/messages/message1"
    );
    assert_eq!(document_name.document_id().as_ref(), "message1");

    let collection_name: CollectionName = document_name.parent();
    assert_eq!(
        collection_name.to_string(),
        "projects/my-project/databases/my-database/documents/chatrooms/chatroom1/messages"
    );
    assert_eq!(collection_name.collection_id().as_ref(), "messages");

    Ok(())
}

今日は database_name というメソッドを追加して 0.2.0 にした。

エラーハンドリングを改善して 0.3.0 にしようと考えている。


今日のコミット。