メインコンテンツまでスキップ
バージョン: 0.13.0 (Previous)

🖼️ アバター

アバターは、APIレスポンスで保存されたアバターの参照を署名付きダウンロードURLに変換し、置換後の古いファイルを削除するための再利用可能なブロックを提供します。アバターフィーチャー、ハンドラー、ルート、バリデーター、サービスエクスポートはありません。

まずはここから

所有ドメインはこれらのエクスポートを独自のパイプラインに合成します。保存された avatarSchema の値を永続化し、オーナーを返す前に正規化してから、そのオーナーを更新した後に置換ファイルをクリーンアップします。以下のスニペットではホストがすでに fileStorageDriver を構成済みであると仮定しています。

アバターブロックごとに FileStorageDriver を渡します。normalizeAvatarOfOwnerobjectId + '.' + extension(type) に対して署名付きURLを生成し、normalizeAvatarsOfOwners は各オーナーに対して同じ変換を実行し、deleteAvatarIfReplaced は前後のオブジェクトIDが異なる場合にのみそのキーを削除します。null アバターは null のままです。ストレージドライバの署名付きURLの有効期間とプロバイダー構成は file-storage ドライバー に委ねられます。

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

const storedAvatar = {
objectId: '550e8400-e29b-41d4-a716-446655440000',
type: 'image/png',
};
// `schemas.avatarSchema` は永続化された参照の契約です。
const result = await blocks.normalizeAvatarOfOwner(fileStorageDriver, {
id: 'owner-id',
avatar: storedAvatar,
});

if (result.isErr()) throw result.error;
// result.value.avatar は {type: 'image/png', url: '<署名付きダウンロードURL>'} です

正規化されたアバターでは元の保存済み objectId は返されません。署名に失敗するとブロックからではなく Err<AvatarBlockError> が生成されます。file-storage ドライバー のドライバー設定と エラー処理 の失敗した Result 値についてはそちらを参照してください。

よくあるタスク

タスク最初のステップ契約
アバターの参照を永続化するavatarSchemaavatarSchema に保存された { objectId, type } 契約
1人のオーナーを安全に返すnormalizeAvatarOfOwnernormalizeAvatarOfOwner 経由の署名済み応答URL
複数のオーナーを返すnormalizeAvatarsOfOwnersnormalizeAvatarsOfOwners 経由の並列正規化
古いファイルを残さずにアバターを置換するdeleteAvatarIfReplaceddeleteAvatarIfReplaced 経由の条件付きクリーンアップ

リファレンスマップ

ページ目的
ブロック正規化、クリーンアップ、結果、エラー契約。
スキーマ保存済みアバター参照の検証。

関連モジュール

FileStorageDriver の設定には file-storage ドライバー を使用し、委譲された署名付きダウンロードと削除操作には file-storage ブロック を使用します。Profile サービス はすべてのアバターブロックを消費します。getOrganizationFollowersRoutegetProductLikersRouteAvatarBlockError500 にマッピングし、フォローアーデータを正規化します。