3个不稳定版本

0.2.0 2024年7月16日
0.1.1 2024年2月6日
0.1.0 2024年1月25日

数据库接口中排名1216

Download history 8/week @ 2024-07-01 113/week @ 2024-07-15 26/week @ 2024-07-22 32/week @ 2024-07-29 108/week @ 2024-08-05 72/week @ 2024-08-12

每月下载量238

Apache-2.0

27KB
484 代码行

graphql-schema-diff

crates.io] docs.rs

该Crate实现了两个GraphQL模式的差异比较,返回一个变更列表。它为Grafbase的变更日志功能和操作检查提供支持。

示例

use graphql_schema_diff::{diff, Change, ChangeKind};

let source = r#"
  type Pizza {
    id: ID!
    name: String!
    toppings: [Topping!]!
  }

  enum Topping {
    OLIVES
    MUSHROOMS
    PINEAPPLE
  }
"#;

let target = r#"
  type Pizza {
    id: ID!
    name: PizzaName
    toppings: [Topping!]!
  }

  type PizzaName {
    english: String
    italian: String!
  }

  enum Topping {
    OLIVES
    MUSHROOMS
    POTATO
  }
"#;

let changes = diff(source, target).unwrap();

assert_eq!(changes,
   &[
        Change {
            path: String::from("Pizza.name"),
            kind: ChangeKind::ChangeFieldType
        },
        Change {
            path: String::from("PizzaName"),
            kind: ChangeKind::AddObjectType
        },
        Change {
            path: String::from("Topping.PINEAPPLE"),
            kind: ChangeKind::RemoveEnumValue
        },
        Change {
            path: String::from("Topping.POTATO"),
            kind: ChangeKind::AddEnumValue
        }
]);

Cargo特性

  • serde: 为Change实现SerializeDeserialize接口(默认:开启)。

依赖

~4MB
~60K SLoC