BemiHQ/bemi-prisma v1.0.0 版本发布:重大改进与全新API设计
BemiHQ/bemi-prisma 是一个为 Prisma ORM 提供 PostgreSQL 变更数据捕获(CDC)功能的扩展工具。它通过记录数据库变更操作,帮助开发者实现审计追踪、数据同步等高级功能。最新发布的 v1.0.0 版本带来了多项重大改进,重新设计了 API 接口,并修复了一些关键问题。
核心变更与改进
1. 更清晰的API设计
新版本彻底重构了 API 设计,使其更加直观和符合开发者预期:
-
初始化方式变更:从原先的
withPgAdapter()
拆分为两个更明确的函数 -new PrismaPg()
用于创建 Prisma 客户端实例,withBemiExtension()
用于应用 Bemi 扩展。 -
中间件处理改进:用
bemiMiddleware()
替代了原先的setContext()
,这使得中间件的用途更加明确,同时也更符合 Prisma 中间件的命名惯例。 -
上下文设置优化:
setBemiContext()
取代了bemiContext()
,名称更加清晰地表达了其设置上下文的功能。
这些变更虽然带来了破坏性变化,但显著提升了代码的可读性和一致性,使开发者能够更直观地理解和使用 API。
2. 上下文管理增强
新版本引入了更强大的上下文管理功能:
-
新增
mergeBemiContext()
:允许开发者合并新的上下文信息到现有上下文中,而不是完全覆盖,这在微服务架构中特别有用。 -
新增
currentBemiContext()
:提供了获取当前上下文的能力,方便调试和日志记录。 -
SQL注入控制:通过
injectSqlInContext
选项,开发者可以自主决定是否在上下文中包含执行的 SQL 查询,这既提升了安全性又增加了灵活性。
3. 兼容性修复
解决了 PostgreSQL 表名中包含连字符(-
)时的迁移生成问题。这一修复使得 Bemi 能够更好地适应各种命名约定,特别是那些遵循特定命名规范的项目。
升级指南
对于现有项目升级到 v1.0.0 版本,开发者需要进行以下调整:
-
替换所有
withPgAdapter()
调用为new PrismaPg()
和withBemiExtension()
的组合使用。 -
将中间件设置从
setContext()
更新为bemiMiddleware()
。 -
所有内联上下文设置应从
bemiContext()
改为setBemiContext()
。 -
如果需要保留 SQL 查询在上下文中的功能,需要显式设置
injectSqlInContext: true
。
技术价值
这次更新不仅仅是简单的 API 变更,它反映了 Bemi 项目对开发者体验的深入思考:
-
关注点分离:将初始化逻辑拆分为创建客户端和应用扩展两个步骤,遵循了单一职责原则。
-
安全性提升:默认禁用 SQL 注入到上下文中,减少了潜在的安全风险。
-
调试友好:新增的上下文获取和合并功能大大简化了复杂场景下的问题排查。
-
兼容性增强:修复表名处理问题使得 Bemi 能够在更广泛的环境中稳定工作。
对于需要实现数据变更追踪的项目,升级到 v1.0.0 将获得更稳定、更安全且更易用的开发体验。这些改进也为未来功能的扩展奠定了坚实的基础。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考