#mongo-db #macro #clap #config

mongodb-macro

MongoDB Macro 是一个包含用于快速创建与 MongoDB 交互的结构宏的 crate。

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

Download history 36/week @ 2024-03-30 9/week @ 2024-04-06

每月下载量 96

MIT 许可协议

26KB
151

crates.io documentation MIT License

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