Crates.io | firestore-path |
lib.rs | firestore-path |
version | 1.0.0 |
source | src |
created_at | 2023-12-17 08:00:43.27877 |
updated_at | 2024-11-09 01:20:50.137645 |
description | A Firestore path helper |
homepage | |
repository | https://github.com/bouzuya/firestore-path |
max_upload_size | |
id | 1072333 |
size | 189,160 |
A Firestore path helper.
use firestore_path::{CollectionId, CollectionName, CollectionPath, DatabaseId, DatabaseName, DocumentId, DocumentName, DocumentPath, ProjectId, RootDocumentName};
use std::str::FromStr;
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);
assert_eq!(database_name.to_string(), "projects/my-project/databases/my-database");
// assert_eq!(
// DatabaseName::from_project_id("my-project")?.to_string(),
// "projects/my-project/databases/(default)"
// );
let root_document_name: RootDocumentName = database_name.root_document_name();
assert_eq!(root_document_name.to_string(), "projects/my-project/databases/my-database/documents");
let collection_name: CollectionName = root_document_name.collection("chatrooms")?;
assert_eq!(collection_name.to_string(), "projects/my-project/databases/my-database/documents/chatrooms");
assert_eq!(collection_name.collection_id().as_ref(), "chatrooms");
let document_name: DocumentName = collection_name.doc("chatroom1")?;
assert_eq!(document_name.to_string(), "projects/my-project/databases/my-database/documents/chatrooms/chatroom1");
assert_eq!(document_name.collection_id().as_ref(), "chatrooms");
assert_eq!(document_name.document_id().as_ref(), "chatroom1");
let collection_id = CollectionId::from_str("messages")?;
let collection_path = CollectionPath::from(collection_id);
assert_eq!(collection_path.to_string(), "messages");
let document_id = DocumentId::from_str("message1")?;
let document_path: DocumentPath = collection_path.doc(document_id)?;
assert_eq!(document_path.to_string(), "messages/message1");
let child_document_name = document_name.doc(document_path)?;
assert_eq!(
child_document_name.to_string(),
"projects/my-project/databases/my-database/documents/chatrooms/chatroom1/messages/message1"
);
Licensed under either of
at your option.