#cypher #dto #neo4j #query #graph

cypher-dto-macros

cypher-dto 的宏

5 个不稳定版本

0.3.1 2024 年 3 月 24 日
0.3.0 2024 年 3 月 1 日
0.2.0 2023 年 8 月 12 日
0.1.1 2023 年 8 月 7 日
0.1.0 2023 年 8 月 6 日

10#dto 中排名

Download history 32/week @ 2024-04-01

219 每月下载量
用于 cypher-dto

MIT 许可证

65KB
1.5K SLoC

cypher-dto-macros

用于与 cypher-dto 包工作的宏。

包含三种类型的宏

  1. 派生宏,完成大部分工作。

    #[derive(Node)]
    struct Person {
      id: String,
      name: String,
      #[name = "zip_code"]
      zip: String,
    }
    
    #[derive(Relation)]
    struct Knows;
    

    这些将为结构体实现 cypher_dto::{FieldSet, NodeEntity, RelationEntity}

    使用派生宏时,有两个辅助属性进入作用域,分别是 #[id]#[name]

    #[id] 将字段标记为实体唯一标识字段集合的一部分。通过这种方式支持多值标识符。如果没有指定且存在名为 id 的字段,则将其推断为唯一的 id 字段。id 字段集将有自己的结构体,例如 PersonId,可以通过 person.identifier()person.into() 获取。

    #[name] 允许数据库中的属性名称与结构体中的名称不同。支持以下两种形式: #[name = "..."]#[name("...")],并且可以应用于结构体。

    为每个结构体也生成一个构建器,例如 PersonBuilder。可以通过 person.into_builder() 获取。

  2. #[timestamps] 宏可以为结构体添加一个或两个时间戳字段。默认情况下,它会添加两个字段,分别是 created_atupdated_at,类型为 Option<DateTime<Utc>>。可选的时间戳字段允许 Person::new() 实现跳过将它们作为参数,这是在应用程序代码中创建 DTO 时的常用方法,在数据库创建之前。

    可以通过指定某些字符串值来控制添加哪些字段(#[timestamps = "..."]#[timestamps("...")] 均受支持)。值必须是以下之一:full(默认值)、short(created,updated)、created_atupdated_atcreatedupdated

依赖关系

~0.9–1.4MB
~28K SLoC