メインコンテンツまでスキップ
バージョン: 0.4.2

🚀 ユーザーフィーチャーブロック

ユーザーフィーチャーブロックは、Nodeblocksアプリケーションにおけるユーザー管理操作のための完全な事前構成済み機能を提供します。これらのフィーチャーは、適切な検証、認証、エラー処理による即座に使用可能なAPIエンドポイントを作成するために、スキーマ、ルート、ハンドラーを組み合わせます。


🎯 概要

ユーザーフィーチャーブロックは以下を目的として設計されています:

  • ユーザー管理操作のための完全なAPIエンドポイントの提供
  • 検証済み操作のためのスキーマとルートの組み合わせ
  • 認証と認可チェックの自動実装
  • 関数コンポジションパターンのサポート
  • ログとエラー管理の円滑な処理

📋 フィーチャー構造

各ユーザーフィーチャーは一貫したコンポジションパターンに従います:

  • スキーマ: 入力データとパラメータの検証
  • ルート: ハンドラー付きHTTPエンドポイントの提供
  • コンポジション: compose関数を使用したスキーマとルートの結合

🔧 利用可能なユーザーフィーチャー

createUserFeature

検証とルーティング付き新しいユーザーアカウントを作成します。

目的: 完全な検証によるユーザー登録を処理

コンポジション:

使用方法:

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

// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.createUserFeature));

// データベース設定付き
app.use('/api', defService(partial(features.createUserFeature, [{ dataStores: db }])));

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


getUserFeatures

アクセス制御付き個別ユーザーデータを取得します。

目的: 適切な認可によるユーザープロフィールデータの取得

コンポジション:

  • スキーマ: getUserSchema - パスパラメータを検証
  • ルート: getUserRoute - GET /users/:id 取得ハンドラー付き

使用方法:

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

// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.getUserFeatures));

// データベース設定付き
app.use('/api', defService(partial(features.getUserFeatures, [{ dataStores: db }])));

APIエンドポイント: GET /api/users/:userId


findUsersFeatures

フィルタリングとページネーション付きユーザーの検索とリストを行います。

目的: 検索機能付きユーザーリストの提供

コンポジション:

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

使用方法:

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

// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.findUsersFeatures));

// データベース設定付き
app.use('/api', defService(partial(features.findUsersFeatures, [{ dataStores: db }])));

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


editUserFeatures

検証とアクセス制御付きユーザープロフィールデータを更新します。

目的: 適切な認可によるユーザーデータの変更

コンポジション:

使用方法:

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

// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.editUserFeatures));

// データベース設定付き
app.use('/api', defService(partial(features.editUserFeatures, [{ dataStores: db }])));

APIエンドポイント: PATCH /api/users/:userId


deleteUserFeatures

適切な認可によるユーザーアカウントを削除します。

目的: アクセス制御によるユーザーアカウントの削除

コンポジション:

使用方法:

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

// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.deleteUserFeatures));

// データベース設定付き
app.use('/api', defService(partial(features.deleteUserFeatures, [{ dataStores: db }])));

APIエンドポイント: DELETE /api/users/:userId


lockUserFeatures

アクセスを防ぐためユーザーアカウントをロックします(管理者のみ)。

目的: セキュリティのためユーザーアカウントアクセスを無効化

コンポジション:

  • スキーマ: lockUserSchema - パスパラメータを検証
  • ルート: lockUserRoute - POST /users/:id/lock ロックハンドラー付き

使用方法:

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

// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.lockUserFeatures));

// データベース設定付き
app.use('/api', defService(partial(features.lockUserFeatures, [{ dataStores: db }])));

APIエンドポイント: POST /api/users/:userId/lock


unlockUserFeatures

アクセスを復元するためユーザーアカウントをアンロックします(管理者のみ)。

目的: ロック後のユーザーアカウントアクセスを有効化

コンポジション:

使用方法:

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

// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.unlockUserFeatures));

// データベース設定付き
app.use('/api', defService(partial(features.unlockUserFeatures, [{ dataStores: db }])));

APIエンドポイント: POST /api/users/:userId/unlock