🧱 アドレスブロック
アドレスブロックは、@nodeblocks/backend-sdkのblocksを通じてエクスポートされる再利用可能な郵便番号検索操作です。ドライバー検索を実行し、予期された検索失敗をスローするのではなくneverthrow結果を返します。
目録
| エクスポート | 種類 | 入力 | 結果 / 動作 / エラー |
|---|---|---|---|
FindAddressServiceError | エラー型 | メッセージ、オプションのデータ | 予期せぬドライバー失敗を包みます。 |
AddressNotFoundError | エラー型 | メッセージ、オプションのデータ | ドライバー検索がアドレスを持たないことを表します。 |
Address | 型 | なし | {prefecture, city, postalCode, town?} または null。 |
FindAddressDriver | 型 | 郵便番号 | findAddress(postalCode)の契約。 |
findAddress | 非同期関数 | ドライバー、郵便番号、オプションのキャッシュ | ハイフンを正規化し、キャッシュを使用し、アドレス結果を返します。 |
詳細
FindAddressServiceError
実装
BlockErrorを拡張し、本質的なHTTPステータスを持ちません。findAddressはドライバーが非BlockErrorで拒絶した場合、このエラーを返します;findAddressRouteはこれを500にマッピングします。
AddressNotFoundError
実装
FindAddressServiceErrorを拡張し、本質的なHTTPステータスを持ちません。nullドライバー結果はfindAddressでこのエラーになります;findAddressRouteはこれを404にマッピングします。
Address
実装
パブリック型は{prefecture, city, postalCode, town?} | nullです。ドライバーはnullを返す場合がありますが、findAddressはこの結果をerr(AddressNotFoundError)に変換します;したがって成功結果はアドレスオブジェクトを含みます。
FindAddressDriver、findAddress、およびAddressサービスが接受するfindAddressCache構成によって使用されます。
FindAddressDriver
実装
ホストはfindAddress(postalCode: string): Promise<Address>を提供します。Japan Postドライバーはこの契約を満たします。AddressサービスはfindAddressDriverとしてドライバーを注入し、findAddressがこれを消費します。
findAddress
実装
シグネチャ:findAddress(findAddressDriver, postalCode, cache?): Promise<Result<Address, FindAddressServiceError>>、ここでcacheはReturnType<typeof createCache<string, Address>>です。
キャッシュとドライバーアクセスの前にすべてのハイフンを削除しますが、結果の郵便番号を検証しません;入力有効性は注入されたドライバーによって決定されます。真性値を持つキャッシュヒットは直接返されます。キャッシュミスでドライバーを呼び出し、ドライバー結果をキャッシュに書き込み、null結果をerr(AddressNotFoundError('No matching address found.'))に変換します。非BlockError拒絶はerr(FindAddressServiceError('Failed to find address.', {cause}))になります;既存のBlockErrorは保持されます。
キャッシュヒットチェックが真性ベースであるため、キャッシュされたnullはヒットを生みません。findAddressRouteによって使用され、AddressNotFoundErrorを404、FindAddressServiceErrorを500にマッピングします。