マイクロファイバーを用いたGraphSQLスキーマの操作と問い合わせ


しばらくしてintroduced SpectaQL オープンソースコミュニティには大きな成功を収めています.これは、何千もの毎週のダウンロードを取得し、ユーザーのサポートと関心のGithubを介して健康的な量を持っているなどの記事について書かれているthis one and this one . Spectaqlの私たちの目標は、常に任意のGraphSQL APIの静的HTMLドキュメントの自動生成のために使用するライブラリに事実上移動することでした.Spectaqlの非常に重要な特徴は、あなたのAPIのどんな部分もあなたのドキュメンテーションで公開したくないことを「隠す」能力です.これは簡単な仕事のようですが、実際には少しトリッキーです.Grapqlスキーマの相互作用と操作を容易にするために、特にこの目的のために設計されたツールを開発した.最終的に我々は、このツールは、Spectaqlに超積分されたが、それはまた、他のアプリケーションに便利ですので、我々はそれ自身のライブラリにそれを破ることを決めたopen source それ!このポストでは、紹介しますMicrofiber そして、その最も興味深い機能と機能の概要を与える.

問題


あなたが専門家でない限り、Graphics Schemasはあなたの頭を包んで、彼らの構造を理解するために少しトリッキーでありえます.たとえば、誰もがあなたの質問が、あなたが使用している実装によって、特別な「問い合わせ」タイプ(慣習または構成によってどちらか)として指定されたタイプのフィールドとして実際に定義されていると理解していません.また、特定のフィールド、引数またはクエリ/突然変異結果の型について知っておくべきことを理解するのは難しいです.彼らは1つのアイテムやリストですか?リストの場合は、項目のいずれかをnullにすることができますか?さらに、あなたのスキーマからタイプを「隠す」ことを望むならば、どのように、フィールド、引数または質問/突然変異結果のそのタイプに対するすべての参照を見つけることについて、あなたはどうしますか?マイクロファイバーに入る!

なぜマイクロファイバーか


我々がさらに進む前に、あなたは疑問に思われるかもしれません:なぜ、それは「マイクロファイバー」と呼ばれていますか?あなたは、あなたの眼鏡で来て、レンズをきれいにするのに用いられるその小さい繊維質のものを知っています?それはマイクロファイバーです.マイクロファイバーはものをきれいにするために使われます、そして、我々のマイクロファイバーはあなたのGraphical Schemaを「浄化する」ために使われます.また、マイクロファイバーはしばしばガラスをきれいにするために使われます、そして、我々のマイクロファイバーはSpectaql(眼鏡への言及)によって重く使われます.

始める


依存性に関してマイクロファイバーライト級を保つために、それはあなたにあなたの図式をAIntrospection Query 結果.この結果は単純なJSONオブジェクトです.あなたのマイクロファイバーインスタンスを作成するときに興味深いオプションの数を設定することができますが、デフォルトはすべてのケースを使用する必要があります“正気”です.サポートされているすべてのオプションを見ることができますdocumentation .
import { Microfiber } from 'microfiber'

const introspectionQueryResults = {...}

const microfiber = new Microfiber(introspectionQueryResults)

// ...do some things to your schema with `microfiber`

const cleanedIntrospectonQueryResults = microfiber.getResponse()

// ...do something with your cleaned Introspection Query Results.

スキーマのクエリ


あなたが探しているものを見つけるためにスキーマを横断したり、存在するかどうかをチェックするのは必ずしも簡単ではありません.マイクロファイバーは、簡単にあなたのためにこれを行うことができる“get”機能の数を提供します.以下に例を示します:
// Get a specific Query from your schema.
const query = microfiber.getQuery({ name: 'users' })

// Get a specific Mutation from your schema.
const mutation = microfiber.getMutation({ name: 'createUser' })

// Get a specific Field from your schema.
const field = microfiber.getField({ typeKind: 'OBJECT', typeName: 'User', fieldName: 'email' })

// Get a specific Arg from your schema.
const arg = microfiber.getArg({ typeKind: 'OBJECT', typeName: 'User', fieldName: 'addresses', argName: 'countryFilter' })

スキーマの変更


あなたのスキーマで質問するのが役に立つ間、マイクロファイバーの本当の力はそれが行うことができる操作で来ます.たとえば、特定のフィールドを型に隠す必要があります.
microfiber.removeField({
  typeKind: 'OBJECT',
  typeName: 'User',
  fieldName: 'email',
})
あるいは、誰も知りたくない突然変異を隠そうとするかもしれません.
microfiber.removeMutation({
  name: 'deleteUser',
})
または、おそらくマイクロファイバーの最も有用な機能は、あなたのスキーマから完全に型を削除することができます.つまり、型を削除するだけでなく、任意のフィールド、inputfields、union typeオプション、args、query、またはその型の突然変異を削除します.これは自分で行うには難しいが、マイクロファイバーで簡単です.
microfiber.removeType({
  kind: 'OBJECT',
  name: 'SecretType',
})
さらに、マイクロファイバーは、自動的にどこでも実際に使用されていないスキーマからすべての型を削除することによって、自動的にものをきれいにすることができます.これは、特定のフィールドなどを隠したときに発生することがあります.
microfiber.cleanSchema()
変更されたスキーマを簡単に取得し、移動する必要がある場所に沿って渡します.
const cleanedResponse = microfiber.getResponse()

概要


あなたが特にあなたのGraphicsスキーマを照会する簡単な方法を探しているならば、マイクロファイバーはあなた自身のヘルパーを書くしようとする代わりにすばらしいオプションです.しかし、あなたがきれいにしたり、物事を隠して、スキーマを変更しようとしている場合は、マイクロファイバーは本当にあなたの人生を容易にすることができます.我々は、我々はそれらを識別するように、より多くの機能を追加していきますし、マイクロファイバーの有用性を見つける場合[email protected] , またはレポでスイングし、メッセージを残します.ハッピー開発!