3个不稳定版本
0.2.0 | 2024年7月16日 |
---|---|
0.1.1 | 2024年2月6日 |
0.1.0 | 2024年1月25日 |
在数据库接口中排名1216
每月下载量238
27KB
484 代码行
graphql-schema-diff
该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
实现Serialize
和Deserialize
接口(默认:开启)。
依赖
~4MB
~60K SLoC