/** * Prisma 存储适配器 * IStorageAdapter 接口的 Prisma 参考实现 * * 这个适配器展示了如何将 SDK 与 Prisma ORM 集成。 * 它处理事务上下文、类型映射和错误转换。 */ import { PrismaClient } from '@prisma/client'; import { IStorageAdapter } from './IStorageAdapter'; import { User, Transaction, TransactionInput, AuditLog, AuditLogInput, IdempotencyRecord, IdempotencyRecordInput } from '../core/types'; /** * Prisma 适配器类 * * 实现所有 IStorageAdapter 方法,支持事务透传。 * 当提供事务上下文时,使用该事务执行所有操作; * 否则直接使用 PrismaClient 实例。 * * @example * ```typescript * const prisma = new PrismaClient(); * const adapter = new PrismaAdapter(prisma); * * // 不使用事务 * const user = await adapter.getUserById('user-123'); * * // 使用事务 * await prisma.$transaction(async (txn) => { * const user = await adapter.getUserById('user-123', txn); * await adapter.updateUserCredits('user-123', -10, txn); * }); * ``` */ export declare class PrismaAdapter implements IStorageAdapter { private prisma; /** * 创建一个新的 PrismaAdapter * @param prisma - PrismaClient 实例 */ constructor(prisma: PrismaClient); /** * 获取 Prisma 客户端 * 如果提供了事务上下文,使用事务客户端;否则使用默认客户端 * * @param txn - 可选的事务上下文 * @returns Prisma 客户端实例 */ private getClient; /** * 根据用户 ID 获取用户信息 * * @param userId - 用户唯一标识符 * @param txn - 可选的事务上下文 * @returns 用户对象,如果不存在则返回 null */ getUserById(userId: string, txn?: any): Promise; /** * 更新用户积分余额 * * @param userId - 用户唯一标识符 * @param amount - 变更金额 (正数为增加,负数为减少) * @param txn - 可选的事务上下文 * @returns 更新后的用户对象 * @throws UserNotFoundError 如果用户不存在 */ updateUserCredits(userId: string, amount: number, txn?: any): Promise; /** * 创建交易记录 * * @param transaction - 交易数据 * @param txn - 可选的事务上下文 * @returns 创建的交易记录 (包含生成的 ID 和时间戳) */ createTransaction(transaction: TransactionInput, txn?: any): Promise; /** * 创建审计日志 * * @param log - 日志数据 * @param txn - 可选的事务上下文 * @returns 创建的审计日志 (包含生成的 ID 和时间戳) */ createAuditLog(log: AuditLogInput, txn?: any): Promise; /** * 获取幂等性记录 * * @param key - 幂等键 * @param txn - 可选的事务上下文 * @returns 幂等性记录,如果不存在或已过期则返回 null */ getIdempotencyRecord(key: string, txn?: any): Promise; /** * 创建幂等性记录 * * @param record - 幂等性记录数据 * @param txn - 可选的事务上下文 * @returns 创建的幂等性记录 (包含创建时间) */ createIdempotencyRecord(record: IdempotencyRecordInput, txn?: any): Promise; /** * 获取用户的交易历史 * * @param userId - 用户唯一标识符 * @param options - 查询选项 (分页、过滤等) * @param txn - 可选的事务上下文 * @returns 交易记录列表,按时间戳降序排列 */ getTransactions(userId: string, options?: { limit?: number; offset?: number; startDate?: Date; endDate?: Date; action?: string; }, txn?: any): Promise; /** * 更新用户会员等级和积分 * * 在单个原子操作中同时更新用户的会员等级、积分余额和会员到期时间。 * * @param userId - 用户唯一标识符 * @param membershipTier - 新的会员等级 * @param credits - 新的积分余额 * @param membershipExpiresAt - 会员到期时间(可选) * @param txn - 可选的事务上下文 * @returns 更新后的用户对象 * @throws UserNotFoundError 如果用户不存在 */ updateUserMembership(userId: string, membershipTier: string, credits: number, membershipExpiresAt?: Date | null, txn?: any): Promise; /** * 处理 Prisma 错误并转换为 SDK 错误 * * @param error - Prisma 错误对象 * @param operation - 操作名称 (用于错误消息) * @returns SDK 错误 */ private handlePrismaError; } //# sourceMappingURL=PrismaAdapter.d.ts.map