🏢 ロケーションブロック
ロケーションブロックは、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: スキーマバリデーションとページネーションルーティングを含むロケーション検索機能
🔗 関連ドキュメント
- ロケーションスキーマ - ロケーションデータバリデーションとコントラクト
- ロケーションブロック - ロケーションビジネスロジック関数
- ロケーションルート - HTTPエンドポイント定義
- ロケーション機能 - 完全なロケーション管理機能