🎨

【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