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

🏢 ロケーションブロック

ロケーションブロックは、Nodeblocksアプリケーションで階層的なロケーション管理の包括的な機能を提供します。これらのブロックは、親子関係、祖先追跡、およびさまざまなロケーションタイプをサポートするロケーション階層を処理します。


🎯 概要

ロケーションブロックは以下の目的で設計されています:

  • 階層的なロケーション構造の管理 - 親子関係と祖先追跡を含む
  • 複数のロケーションタイプのサポート - 地域、都市、建物など
  • ロケーションCRUD操作の処理 - 適切なバリデーションと正規化を含む
  • 参照整合性の維持 - 祖先チェーンと親関係を通じて
  • ロケーションバリデーションの提供 - 階層データのビジネスルール
  • ロケーション管理の有効化 - 包括的なコントロール

🏗️ 階層構造

ロケーションは、各ロケーションが以下を持つことができるツリー状の階層構造をサポートします:

  • 親ロケーション: 階層内の直接の親
  • 祖先: ルートから現在のロケーションまでの完全なパス
  • : このロケーションを親として持つロケーション

階層の例

Organization (Root)
├── Region A
│ ├── City X
│ │ ├── Building 1
│ │ └── Building 2
│ └── City Y
└── Region B
└── City Z

📦 ブロックタイプ

🔍 スキーマ

ロケーションデータバリデーション用のJSONスキーマ定義:

  • locationSchema: コアフィールドを含む基本ロケーションエンティティ構造
  • createLocationSchema: 階層的な親サポートを含むロケーション作成バリデーション
  • getLocationSchema: パスパラメータバリデーションを含むロケーション取得スキーマ
  • updateLocationSchema: 部分更新用のオプションフィールドを含むロケーション更新スキーマ
  • deleteLocationSchema: パスパラメータバリデーションを含むロケーション削除スキーマ
  • findLocationsSchema: ページネーションクエリバリデーションを含むロケーション検索スキーマ

ロケーションスキーマを表示 →

🔧 ブロック

ロケーション操作用の純粋なビジネスロジック関数:

  • buildAncestorsFromParent: 既存の祖先に親IDを追加して祖先パスを構築
  • buildLocationToCreate: 祖先と親処理を含む作成用のロケーションデータを正規化
  • getLocationById: 適切な投影を使用してデータベースからIDでロケーションを取得
  • createLocation: 基本エンティティ正規化を使用してデータベースに新しいロケーションドキュメントを作成
  • updateLocation: 部分フィールド更新を含むIDによる既存のロケーションドキュメントの更新
  • buildDescendantsFilter: 階層内に指定された祖先を持つロケーションを見つけるためのMongoDBフィルターを構築
  • assertNoDescendantLocations: 親ロケーションの削除を許可する前に子ロケーションが存在しないことを検証
  • deleteLocation: IDによってデータベースからロケーションを削除
  • findLocations: 自動フィールド投影を使用してデータベースからフィルターに一致する複数のロケーションを取得
  • normalizeLocation: 内部フィールドをAPIフレンドリーな形式に変換してロケーションデータを正規化

ロケーションブロックを表示 →

🛣️ ルート

ロケーション操作用のHTTPエンドポイント定義:

  • createLocationRoute: 階層的な親サポートと祖先構築を含むPOST /locations
  • getLocationRoute: パブリックアクセスとロケーション検索を含むGET /locations/:locationId
  • updateLocationRoute: 管理者認証と部分更新を含むPATCH /locations/:locationId
  • deleteLocationRoute: 階層バリデーションと管理者認証を含むDELETE /locations/:locationId
  • findLocationsRoute: ページネーションサポートとパブリックアクセスを含むGET /locations

ロケーションルートを表示 →

🚀 機能

スキーマとルートを組み合わせた完全なロケーション管理機能:

  • createLocationFeature: スキーマバリデーションと階層ルーティングを含むロケーション作成
  • getLocationFeature: スキーマバリデーションとパブリックルーティングを含むロケーション取得機能
  • updateLocationFeature: スキーマバリデーションと管理者ルーティングを含むロケーション更新機能
  • deleteLocationFeature: スキーマバリデーションと階層バリデーションルーティングを含むロケーション削除機能
  • findLocationsFeature: スキーマバリデーションとページネーションルーティングを含むロケーション検索機能

ロケーション機能を表示 →


🔗 関連ドキュメント