2026-01-16 n 度目の FirestoreClient 実装
今日は 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 のバージョンアップなどをしておかないとまずそう。
今日のコミット。