8 个版本 (5 个稳定版)
1.0.4 | 2023 年 5 月 31 日 |
---|---|
1.0.3 | 2023 年 4 月 16 日 |
0.3.0 | 2023 年 4 月 14 日 |
0.2.0 | 2023 年 4 月 14 日 |
0.1.0 | 2023 年 4 月 13 日 |
在 数据库接口 中排名第 494
每月下载量 96
26KB
151 行
mongodb-macro
MongoDB Macro 是一个包含宏的 crate,用于快速创建与 MongoDB 交互的结构。特别是,它实现了用于快速初始化“工厂”模式结构的宏。该 crate 的目的是在初始化标准结构时减少样板代码的数量。
安装
使用 cargo 安装
cargo安装 mongodb-macro
确保您也将以下内容添加到项目中
mongodb = "*"
使用方法
宏:Collection
use mongodb::bson::Bson;
// env DB_URL should contain a link to the mongodb url
// env DB_NAME should contain the database name
// env COLLECTION_NAME should contain the collection name
mongodb_macro::collection!(CollectionFactory; CollectionFactoryOpts);
// or with a specified env
// mongodb_macro::collection!(CollectionFactory; CollectionFactoryOpts; ("MONGO_DB_URL", "MONGO_DB_NAME", "MONGO_COLLECTION_NAME"));
async fn main() -> std::io::Result<()> {
// std::env::set_var("MONGODB_HOST", "localhost");
// std::env::set_var("DB_URL", "mongodb://root:root@${MONGODB_HOST}:27017");
let factory = CollectionFactory::parse();
let collection = factory.create::<Bson>().await.expect("failed to connect");
...
}
宏:Database
use mongodb::bson::Bson;
// env DB_URL should contain a link to the mongodb url
// env DB_NAME should contain the database name
mongodb_macro::database!(DbFactory; DbFactoryOpts);
// or with a specified env
// mongodb_macro::database!(DbFactory; DbFactoryOpts; ("MONGO_DB_URL", "MONGO_DB_NAME"));
async fn main() -> std::io::Result<()> {
// std::env::set_var("MONGODB_HOST", "localhost");
// std::env::set_var("DB_URL", "mongodb://root:root@${MONGODB_HOST}:27017");
let factory = DbFactory::parse();
let db = factory.create().await.expect("failed to connect");
let collection = db.collection::<Bson>("users");
...
}
宏:Client
use mongodb::bson::Bson;
// env DB_URL should contain a link to the mongodb url
mongodb_macro::client!(ClientFactory; ClientFactoryOpts);
// or with a specified env
// mongodb_macro::client!(ClientFactory; ClientFactoryOpts; "MONGO_DB_URL");
async fn main() -> std::io::Result<()> {
// std::env::set_var("MONGODB_HOST", "localhost");
// std::env::set_var("DB_URL", "mongodb://root:root@${MONGODB_HOST}:27017");
let factory = ClientFactory::parse();
let client = factory.create().await.expect("failed to connect");
let db = client.database("demo");
let collection = db.collection::<Bson>("users");
...
}
宏:Config
use mongodb::bson::Bson;
use mongodb_macro::Parser;
mongodb_macro::config!(Opts);
// equivalent to
// mongodb_macro::config!(Opts; "DB_NAME", "COLLECTION_NAME", "DB_URL");
//
// or with prefix
//
// mongodb_macro::config!(Opts, "MONGO");
// equivalent to
// mongodb_macro::config!(Opts; "MONGO_DB_NAME", "MONGO_COLLECTION_NAME", "MONGO_DB_URL");
async fn main() -> std::io::Result<()> {
// std::env::set_var("MONGODB_HOST", "localhost");
// std::env::set_var("DB_URL", "mongodb://root:root@${MONGODB_HOST}:27017");
let opts = Opts::parse();
let client = mongodb::Client::with_uri_str(&opts.db_url).await.expect("failed to connect");
let db = client.database(&opts.db_name);
let collection = db.collection::<Bson>(&opts.collection_name);
...
}
当前版本:1.0.4
许可协议:MIT
依赖关系
~5MB
~56K SLoC