メインコンテンツまでスキップ
バージョン: 0.9.0 (最新)

🛣️ 注文ルート

注文ルートは、Nodeblocksアプリケーションで注文管理操作用の事前設定されたHTTPエンドポイントを提供します。これらのルートはハンドラー、バリデーター、ミドルウェアを組み合わせて、適切な認証、認可、エラーハンドリングを含む完全なAPIエンドポイントを作成します。


🎯 概要

注文ルートは以下の目的で設計されています:

  • 完全なAPIエンドポイントを提供 - 注文管理操作用
  • ハンドラーとバリデーターを組み合わせ - セキュアな操作のため
  • 認証と認可チェックを含む
  • 関数型構成パターンをサポート
  • ロギングとエラー管理を自動的に処理

📋 ルート構造

各注文ルートは一貫したパターンに従います:

  • HTTP Method: 操作タイプを定義(GET、POST、PATCH、DELETE)
  • Path: パラメータを含むエンドポイントURLを指定
  • ハンドラー: ビジネスロジック用の構成された関数チェーン
  • バリデーター: 認証と認可チェック

🔧 利用可能な注文ルート

createOrderRoute

新しい注文を作成し、作成されたリソースを返します。

目的: 完全なリソース取得を含む注文作成を処理します

ルート詳細:

  • Method: POST
  • Path: /orders
  • 認証: 必須(Bearerトークン)

ハンドラー: createOrdergetOrderByIdcreateOrderTerminator

バリデーター: isAuthenticatedsome(checkIdentityType(['admin'])、isSelf(['params', 'requestBody', 'identityId']))

使用例:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.createOrderRoute);

getOrderRoute

IDによる特定の注文を取得します。

目的: アクセス制御を含む注文データを取得します

ルート詳細:

  • Method: GET
  • Path: /orders/:orderId
  • 認証: 必須(Bearerトークン)

ハンドラー: getOrderByIdnormalizeOrderTerminator

バリデーター: isAuthenticatedsome(checkIdentityType(['admin'])、ownsOrder(['params', 'requestParams', 'orderId']))

使用例:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.getOrderRoute);

findOrdersRoute

正規化されたリスト形式ですべての注文を取得します。

目的: ページネーションとアクセス制御を含む注文をリストします

ルート詳細:

  • Method: GET
  • Path: /orders
  • 認証: 必須(Bearerトークン)

ハンドラー: findOrdersnormalizeOrdersListTerminator

バリデーター: isAuthenticatedsome(checkIdentityType(['admin'])、isSelf(['params', 'requestQuery', 'identityId']))

使用例:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.findOrdersRoute);

updateOrderRoute

既存の注文を更新し、更新されたリソースを返します。

目的: アクセス制御を含む注文データを変更します

ルート詳細:

  • Method: PATCH
  • Path: /orders/:orderId
  • 認証: 必須(Bearerトークン)

ハンドラー: updateOrdergetOrderByIdnormalizeOrderTerminator

バリデーター: isAuthenticatedsome(checkIdentityType(['admin'])、ownsOrder(['params', 'requestParams', 'orderId']))

使用例:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.updateOrderRoute);

deleteOrderRoute

IDによる注文を削除します。

目的: アクセス制御を含む注文を削除します

ルート詳細:

  • Method: DELETE
  • Path: /orders/:orderId
  • 認証: 必須(Bearerトークン)

ハンドラー: deleteOrderdeleteOrderTerminator

バリデーター: isAuthenticatedsome(checkIdentityType(['admin'])、ownsOrder(['params', 'requestParams', 'orderId']))

使用例:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.deleteOrderRoute);

findOrdersByOrganizationIdRoute

GET /orders/organizations/:organizationId経由で組織IDによる注文を取得します。

目的: 適切な認可制御とページネーションサポートを含む組織スコープの注文へのアクセスを提供します。

ルート詳細:

  • Method: GET
  • Path: /orders/organizations/:organizationId
  • 認証: 必須(Bearerトークン)
  • 認可: 組織ロールベース(hasOrgRole(['owner', 'admin', 'member'])

ハンドラー: buildOrganizationIdFilterbuildWithoutMongoIdFindOptionsfindOrdersapplySpecorThrow

バリデーター: isAuthenticatedhasOrgRole(['owner', 'admin', 'member'], ['params', 'requestParams', 'organizationId'])

クエリパラメータ:

パラメータタイプ必須デフォルト説明
pagenumber1ページネーションのページ番号
limitnumber10ページあたりの注文数

使用例:

import { routes } from '@nodeblocks/backend-sdk';

// Register route with Express app
app.use('/api', routes.findOrdersByOrganizationIdRoute);

レスポンス(200 - 成功):

{
"data": [
{
"id": "order-123",
"organizationId": "org-456",
"currency": "USD",
"status": "confirmed",
"createdAt": "2024-01-01T00:00:00.000Z",
"updatedAt": "2024-01-01T00:00:00.000Z"
}
],
"metadata": {
"pagination": {
"hasNext": false,
"hasPrev": false,
"limit": 10,
"page": 1,
"total": 1,
"totalPages": 1
}
}
}

エラーレスポンス:

  • 401: Unauthorized - 無効または欠落している認証トークン
  • 403: Forbidden - ユーザーが組織アクセスを欠いているか、ロール権限が不足
  • 500: Internal Server Error - データベースまたは正規化エラー

主な機能:

  • 組織スコープ: 注文はパスパラメータの組織IDで自動的にフィルタリングされます
  • ロールベース認可: 組織の所有者、管理者、メンバーへのアクセスを制限
  • ページネーションサポート: 大きな注文コレクション用のメタデータを含む完全なページネーション
  • データ正規化: buildWithoutMongoIdFindOptionsによる自動ドキュメント正規化
  • 型安全性: OrderDbBlockErrorによる包括的なエラーハンドリング