今日は bouzuya/tsukota-web の FirestoreClient を実装。
何度目かの FirestoreClient の実装。今回は Document や ListDocumentsResponse などを wrap せずに露出させる方針をとってみた。これらの型をそのまま出すので deserialize も別メソッドにした。 deserialize が別メソッドなので serialize も別メソッドに。
まだきちんと試していないけど、次のようなインタフェースになる想定。
let client = firestore_client::FirestoreClient::connect( firestore_client::path::DatabaseName::from_project_id("project1")? )?; client.create_document( firestore_client::path::DocumentPath::from_str("col1/doc1")?, client.serialize(&value)? ).await?; let firestore_client::google::firestore::v1::ListDocumentsResponse { documents, next_page_token } = client.list_documents( firestore_client::path::CollectionPath::from_str("col1")?, None, // next_page_token ).await?;
これ系の即興での実装は Transaction まわりで面倒になってやめてしまいがち。あまり凝らずにそれを使うコードに注力したい。
明日は crates:serde-firestore-value のバージョンアップなどをしておかないとまずそう。
今日のコミット。