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

🚀 注文機能

注文機能は、Nodeblocksアプリケーションで注文管理操作用の完全な、事前構成された機能を提供します。これらの機能はスキーマ、ルート、ハンドラーを組み合わせて、注文CRUD操作、検索、ライフサイクル管理用のすぐに使用できるAPIエンドポイントを作成します。


🎯 概要

注文機能は以下の目的で設計されています:

  • 完全な注文管理を提供 - 完全なCRUD操作を含む
  • 注文ライフサイクルをサポート - 作成から完了までの管理
  • 検証とルーティングを含む - セキュアな注文操作のため
  • フィルタリングとページネーションをサポート - 注文リスト用
  • 注文アイテムを処理 - 合計計算を含む

📋 機能構造

各注文機能は一貫した構成パターンに従います:

  • スキーマ: 注文入力データとパラメータを検証
  • ルート: 注文ハンドラーを含むHTTPエンドポイントを提供
  • 構成: compose関数を使用してスキーマとルートを組み合わせ

🔧 利用可能な注文機能

createOrderFeature

スキーマ検証とルーティングを含む注文作成機能。

目的: 完全な検証を含む注文作成を処理します

構成:

  • スキーマ: createOrderSchema - アイテム配列、合計、オプションフィールドを検証
  • ルート: createOrderRoute - POST /orders - 作成ハンドラー付き

使用例:

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


// With database configuration
app.use('/api', defService(partial(features.createOrderFeature, [{ dataStores: db }])));

APIエンドポイント: POST /api/orders


updateOrderFeature

スキーマ検証とルーティングを含む注文更新機能。

目的: 適切な検証を含む注文情報を変更します

構成:

使用例:

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


// With database configuration
app.use('/api', defService(partial(features.updateOrderFeature, [{ dataStores: db }])));

APIエンドポイント: PATCH /api/orders/:orderId


getOrderFeature

個別の注文データを取得するための注文取得機能。

目的: 適切な検証を含む注文情報を取得します

構成:

  • スキーマ: getOrderSchema - パスパラメータを検証
  • ルート: getOrderRoute - GET /orders/:orderId - 取得ハンドラー付き

使用例:

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


// With database configuration
app.use('/api', defService(partial(features.getOrderFeature, [{ dataStores: db }])));

APIエンドポイント: GET /api/orders/:orderId


findOrdersFeature

フィルタリングとページネーションを含む注文検索機能。

目的: 検索機能を含む注文リストを提供します

構成:

  • スキーマ: findOrdersSchema - フィルタリング用のクエリパラメータを検証
  • ルート: findOrdersRoute - GET /orders - 検索とページネーション付き

使用例:

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


// With database configuration
app.use('/api', defService(partial(features.findOrdersFeature, [{ dataStores: db }])));

APIエンドポイント: GET /api/orders


deleteOrderFeature

ルーティングを含む注文削除機能。

目的: アクセス制御とクリーンアップを含む注文を削除します

構成:

使用例:

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


// With database configuration
app.use('/api', defService(partial(features.deleteOrderFeature, [{ dataStores: db }])));

APIエンドポイント: DELETE /api/orders/:orderId


findOrdersByOrganizationIdFeature

スキーマ検証とルーティングを含む組織IDによる注文取得機能。

目的: フィルタリング、ページネーション、データ正規化を含む特定の組織にスコープされた注文をリストします

構成:

使用例:

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

// Direct usage:
app.use('/api', defService(findOrdersByOrganizationIdFeature));

// With database configuration:
app.use('/api', defService(partial(findOrdersByOrganizationIdFeature, [{ dataStores: db }])));

APIエンドポイント: GET /api/orders/organizations/:organizationId

リクエストパラメータ:

  • パスパラメータ:
    • organizationId (required): 注文を取得する対象組織ID
  • クエリパラメータ:
    • page (optional): ページネーションのページ番号(デフォルト: 1)
    • limit (optional): ページあたりの注文数(デフォルト: 10)

レスポンス(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
}
}
}

認可:

  • 認証が必要
  • hasOrgRole(['owner', 'admin', 'member'])経由で'owner'、'admin'、または'member'ロールを持つ組織メンバーに制限

エラーレスポンス:

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

主な機能:

  • 組織スコープ: 注文は組織メンバーシップで自動的にフィルタリングされます
  • ロールベースアクセス: 組織の所有者、管理者、メンバーへのアクセスを制限
  • ページネーションサポート: 大きな注文コレクション用のメタデータを含む完全なページネーション
  • データ正規化: クリーンなAPIレスポンス用の自動ドキュメント正規化