🎨
【Rust】 async-graphqlでlistのinput項目の長さをチェックする
概要
Rustのgraphqlライブラリでasync-graphqlがあります。Actix-webやAxumなどのWebフレームワークに、組み込んで使えるものとなります。
今回はasync-graphqlでlistのinput項目の長さをチェックかけたい場合、どうすればいいのかというのを調べてみたのでメモ書きします。
前提
* 使用したasync-graphqlのバージョンは7.0.17です。
対応方法
Input value validatorsのドキュメントにある、max_itemsとmin_itemsがlistの長さをチェックするvalidatorになります。
実装サンプル
min_itemsを使用してlist(Vec)の長さをチェックする実装サンプルになります。
inputsに構造体(SapmleInput)のリストを1以上にしたい場合、以下の通り関数の引数にvalidatorを設定します。
async fn register_sample_list(
&self,
ctx: &Context<'_>,
#[graphql(validator(min_items = 1))] inputs: Vec<SampleInput>, // listの長さをチェック
) -> Result<bool> {
// 登録処理
sanple_regsiter(context, inputs).await
}
Discussion