fix(plugin): P1 跨插件引用修复 — DateTime generated column + resolve-labels UUID 类型 + EntitySelect manifest→UUID 映射
- manifest.rs: DateTime 类型 generated column 改为 TEXT 存储(PostgreSQL TIMESTAMPTZ cast 非 immutable) - data_handler.rs: resolve-labels 查询参数从 String 改为 UUID 类型避免类型不匹配 - data_dto.rs: PublicEntityResp 新增 plugin_id 字段 - EntitySelect.tsx: 跨插件查询先通过 registry 解析 manifest_id→plugin UUID - pluginData.ts: PublicEntity 接口增加 plugin_id - plugin_tests.rs: 适配 PluginField/PluginEntity 新增字段
This commit is contained in:
@@ -118,7 +118,8 @@ impl PluginFieldType {
|
||||
Self::Decimal => "NUMERIC",
|
||||
Self::Boolean => "BOOLEAN",
|
||||
Self::Date => "DATE",
|
||||
Self::DateTime => "TIMESTAMPTZ",
|
||||
// TIMESTAMPTZ cast 不是 immutable,generated column 不支持类型转换,存为 TEXT
|
||||
Self::DateTime => "TEXT",
|
||||
Self::Uuid => "UUID",
|
||||
}
|
||||
}
|
||||
@@ -126,7 +127,7 @@ impl PluginFieldType {
|
||||
/// Generated Column 的表达式
|
||||
pub fn generated_expr(&self, field_name: &str) -> String {
|
||||
match self {
|
||||
Self::String | Self::Json => format!("data->>'{}'", field_name),
|
||||
Self::String | Self::Json | Self::DateTime => format!("data->>'{}'", field_name),
|
||||
_ => format!("(data->>'{}')::{}", field_name, self.generated_sql_type()),
|
||||
}
|
||||
}
|
||||
@@ -687,7 +688,7 @@ label = "空标签页"
|
||||
assert_eq!(PluginFieldType::Decimal.generated_sql_type(), "NUMERIC");
|
||||
assert_eq!(PluginFieldType::Boolean.generated_sql_type(), "BOOLEAN");
|
||||
assert_eq!(PluginFieldType::Date.generated_sql_type(), "DATE");
|
||||
assert_eq!(PluginFieldType::DateTime.generated_sql_type(), "TIMESTAMPTZ");
|
||||
assert_eq!(PluginFieldType::DateTime.generated_sql_type(), "TEXT");
|
||||
assert_eq!(PluginFieldType::Uuid.generated_sql_type(), "UUID");
|
||||
assert_eq!(PluginFieldType::Json.generated_sql_type(), "TEXT");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user