release: simcu::orm 1.2.1 — README 清理(去除 EF 对照、补充 @Index 索引注解)、迁移生成索引说明、包描述与版本更新

This commit is contained in:
2026-08-23 06:45:04 +08:00
parent 9d7b353e2f
commit 270a01fd49
10 changed files with 175 additions and 37 deletions
+14 -4
View File
@@ -10,10 +10,11 @@
* // 模型变更后:快照存在 → 载入旧模型 diff,并覆盖保存新快照
* gen.ensure("20250801000000_AddAge", "新增 age 列", "snapshot.json", models1)
*
* 快照 JSON 结构(版本 2,较 v1 新增 enum 标记):
* {"version":2,"models":[{"table":"users","columns":[
* 快照 JSON 结构(版本 3,较 v2 新增索引标记 idx/ixName/ixUnique):
* {"version":3,"models":[{"table":"users","columns":[
* {"name":"id","column":"id","type":"Int64","key":true,"auto":true,
* "client":false,"required":false,"maxLen":0,"enum":false}]}]}
* "client":false,"required":false,"maxLen":0,"enum":false,
* "idx":false,"ixName":"","ixUnique":false}]}]}
*/
package simcu::orm.migrations
@@ -30,7 +31,7 @@ public class ModelSnapshot {
/// 快照内的轻量模型列表
public var models: ArrayList<EntityModel> = ArrayList()
/// 快照格式版本
public static let formatVersion: Int64 = 2
public static let formatVersion: Int64 = 3
public init() {}
@@ -51,6 +52,9 @@ public class ModelSnapshot {
lp.maxLength = p.maxLength
lp.typeNameOverride = p.typeName()
lp.isEnum = p.isEnum
lp.isIndex = p.isIndex
lp.indexName = p.indexName
lp.indexUnique = p.indexUnique
lm.properties.add(lp)
}
if (let Some(kp) <- m.keyProperty) {
@@ -90,6 +94,9 @@ public class ModelSnapshot {
co["required"] = JBool(p.isRequired)
co["maxLen"] = JNumber("${p.maxLength}")
co["enum"] = JBool(p.isEnum)
co["idx"] = JBool(p.isIndex)
co["ixName"] = JString(p.indexName)
co["ixUnique"] = JBool(p.indexUnique)
cols.add(JObject(co))
}
mo["columns"] = JArray(cols)
@@ -126,6 +133,9 @@ public class ModelSnapshot {
lp.isRequired = getBool(co, "required")
lp.maxLength = getLong(co, "maxLen")
lp.isEnum = getBool(co, "enum")
lp.isIndex = getBool(co, "idx")
lp.indexName = getString(co, "ixName")
lp.indexUnique = getBool(co, "ixUnique")
if (lp.isKey) {
lm.keyProperty = Some(lp)
}