FOSMVVM Fluent DataModel Generator

🗄️ Fluent 数据库模型一键生成

为FOSMVVM架构自动生成Fluent数据库模型、迁移脚本和单元测试,支持关联类型关系和PostgreSQL特性

收藏
3.1k
安装
1.3k
版本
2.0.6
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用途

fosmvvm-fluent-datamodel-generator 是专为 FOSMVVM 架构 设计的 Fluent 持久层代码生成工具,主要服务于 Vapor 服务器端应用开发。该 skill 自动生成完整的数据库实体层代码,包括 DataModel 实现、数据库迁移脚本和配套单元测试。

显著优点

架构完整性:严格遵循 FOSMVVM 的 "Model 为中心" 设计理念,DataModel 作为读写操作的唯一数据源,确保数据流单向可追溯。自动生成代码与 Fields 协议层无缝集成,形成 "用户输入 → 验证 → 持久化" 的完整链路。

关系型建模先进:摒弃反模式的 any Protocol existential 类型,强制使用 Swift 关联类型(associatedtype)表达必需关系,在编译期保证类型安全。支持 @Parent/@Children/@Siblings 等 Fluent 关系映射,自动生成 junction table 处理多对多关系。

PostgreSQL 特性原生支持:通过 SQLKit 集成,支持 tsvector 全文搜索、LTREE 层级数据等数据库专属特性,同时保持模型层的跨数据库兼容。

测试驱动设计:自动生成包含完整验证逻辑的单元测试,使用 @Test(arguments:) 参数化测试模式,要求测试结构体显式实现关联类型,确保架构约束在测试层同样被验证。

潜在局限

技术栈锁定强制依赖 Fluent ORM,明确排斥 CoreData、SwiftData、Realm 等其他持久层方案。Scope Guard 机制会在检测到非 Fluent 项目时主动拦截,这对混合技术栈或计划迁移的项目可能造成阻碍。

前置依赖严格:表单类模型必须先运行 fosmvvm-fields-generator 生成 Fields 协议层,存在技能调用顺序约束。虽然文档声称通过 "conversation context" 自动推断,但实际仍需用户确保前置技能已执行。

Swift 版本敏感:大量使用 Swift 5.9+ 特性(如 ~Copyable、严格并发检查 @unchecked Sendable),老旧 Swift 版本可能产生兼容性问题。

适合人群

  • 采用 FOSMVVM + Vapor 技术栈的 Swift 全栈开发团队
  • 需要 类型安全的关系型建模 的企业级后端项目
  • 重视 编译期验证 胜于灵活性的工程文化

常规风险

| 风险类别 | 说明 |
|---------|------|
| 架构漂移 | 手动修改生成代码后,再次生成可能覆盖自定义逻辑 |
| 迁移冲突 | 多人协作时数据库迁移版本号可能冲突 |
| 关联类型复杂化 | 深度嵌套的关联类型可能增加编译时间和错误信息复杂度 |
| Sendable 合规 | `@unchecked Sendable` 是权宜之计,需人工审计线程安全 |

技术亮点摘要

  • 初始化顺序敏感:DataModel 构造函数中 validationMessages 必须在其他字段之前初始化
  • Raw SQL 隔离:数据库专属特性通过 SQLKit 在迁移层实现,不污染模型协议
  • 种子数据幂等:自动生成 count() == 0 防护的 idempotent seed migration

FOSMVVM Fluent DataModel Generator 内容

手动下载zip · 10.2 kB
reference.mdtext/markdown
请选择文件