1
This commit is contained in:
99
src/Models/IDIS_Model.cs
Normal file
99
src/Models/IDIS_Model.cs
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
using System.Reflection;
|
||||||
|
using IDIS.Models;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace IDIS.Model
|
||||||
|
{
|
||||||
|
public record IDIS_Model
|
||||||
|
{
|
||||||
|
[JsonIgnore]
|
||||||
|
public virtual string[] Tags { get; set; } = Array.Empty<string>();
|
||||||
|
public virtual IDIS_Register_Data.ValueInfo[] AsValueInfo()
|
||||||
|
{
|
||||||
|
var list = new List<IDIS_Register_Data.ValueInfo>();
|
||||||
|
list.Add(new IDIS_Register_Data.ValueInfo
|
||||||
|
{
|
||||||
|
Data = new IDIS_Register_Data.ValueData
|
||||||
|
{
|
||||||
|
Value = string.Join(";",Tags),
|
||||||
|
Format = "string"
|
||||||
|
},
|
||||||
|
Index = 0,
|
||||||
|
Type = "Tags"
|
||||||
|
});
|
||||||
|
var index = 1;
|
||||||
|
foreach (var x in GetProperties())
|
||||||
|
{
|
||||||
|
var valueInfo = new IDIS_Register_Data.ValueInfo
|
||||||
|
{
|
||||||
|
Data =new IDIS_Register_Data.ValueData()
|
||||||
|
{
|
||||||
|
Value = x.GetValue(this)!.ToString()!,
|
||||||
|
Format = x.PropertyType.Name,
|
||||||
|
},
|
||||||
|
Index = index++,
|
||||||
|
Type = x.Name
|
||||||
|
};
|
||||||
|
list.Add(valueInfo);
|
||||||
|
}
|
||||||
|
return list.ToArray();
|
||||||
|
}
|
||||||
|
public virtual IDIS_Template AsTemplate()
|
||||||
|
{
|
||||||
|
var template = new IDIS_Template
|
||||||
|
{
|
||||||
|
Description = "This is a template",
|
||||||
|
Prefix = "88.123.99",
|
||||||
|
Version = "1.0.0"
|
||||||
|
};
|
||||||
|
|
||||||
|
var metaList = new List<IDIS_Template_Item>
|
||||||
|
{
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
IdType = "tags",
|
||||||
|
Name = "标签",
|
||||||
|
MetaData = new IDIS_Template_Item_MetaData()
|
||||||
|
{
|
||||||
|
MinLength = 0,
|
||||||
|
MaxLength = 255,
|
||||||
|
Type = "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (var x in GetProperties())
|
||||||
|
{
|
||||||
|
var item = new IDIS_Template_Item
|
||||||
|
{
|
||||||
|
IdType = x.Name,
|
||||||
|
};
|
||||||
|
var meta = new IDIS_Template_Item_MetaData();
|
||||||
|
if (x.GetCustomAttribute<DisplayNameAttribute>() is { } displayName)
|
||||||
|
{
|
||||||
|
item.Name = displayName.DisplayName;
|
||||||
|
}
|
||||||
|
meta.Type = x.PropertyType.Name;
|
||||||
|
meta.MinLength = 0;
|
||||||
|
meta.MaxLength = 255;
|
||||||
|
|
||||||
|
|
||||||
|
item.MetaData = meta;
|
||||||
|
|
||||||
|
metaList.Add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
template.Items = metaList.ToArray();
|
||||||
|
return template;
|
||||||
|
}
|
||||||
|
private PropertyInfo[] GetProperties()
|
||||||
|
{
|
||||||
|
return GetType()
|
||||||
|
.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
|
||||||
|
.Where(x => x.Name is not ("EqualityContract" or "Tags"))
|
||||||
|
.ToArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
35
src/Models/IDIS_Query_Data.cs
Normal file
35
src/Models/IDIS_Query_Data.cs
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace IDIS.Models;
|
||||||
|
[Serializable]
|
||||||
|
public record IDIS_Query_Data
|
||||||
|
{
|
||||||
|
public record QueryData
|
||||||
|
{
|
||||||
|
[JsonProperty("format")]
|
||||||
|
public string Format;
|
||||||
|
[JsonProperty("value")]
|
||||||
|
public string Value;
|
||||||
|
}
|
||||||
|
public record QueryInfo
|
||||||
|
{
|
||||||
|
[JsonProperty("data")]
|
||||||
|
public QueryData Data;
|
||||||
|
[JsonProperty("auth")]
|
||||||
|
public string Auth;
|
||||||
|
[JsonProperty("index")]
|
||||||
|
public int Index;
|
||||||
|
[JsonProperty("type")]
|
||||||
|
public string Type;
|
||||||
|
}
|
||||||
|
[JsonProperty("code")]
|
||||||
|
public int Code;
|
||||||
|
[JsonProperty("prefix")]
|
||||||
|
public string Prefix;
|
||||||
|
[JsonProperty("handle")]
|
||||||
|
public string Handle;
|
||||||
|
[JsonProperty("templateVersion")]
|
||||||
|
public string TemplateVersion;
|
||||||
|
[JsonProperty("value")]
|
||||||
|
public QueryInfo[] Value=Array.Empty<QueryInfo>();
|
||||||
|
}
|
@@ -7,10 +7,30 @@ namespace IDIS.Models;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class IDIS_Register_Data
|
public class IDIS_Register_Data
|
||||||
{
|
{
|
||||||
|
public record ValueData
|
||||||
|
{
|
||||||
|
[JsonProperty("format")]
|
||||||
|
public string Format;
|
||||||
|
[JsonProperty("value")]
|
||||||
|
public string Value;
|
||||||
|
|
||||||
|
}
|
||||||
|
public record ValueInfo
|
||||||
|
{
|
||||||
|
[JsonProperty("auth")]
|
||||||
|
public string Auth;
|
||||||
|
[JsonProperty("index")]
|
||||||
|
public int Index;
|
||||||
|
[JsonProperty("data")]
|
||||||
|
public ValueData Data;
|
||||||
|
[JsonProperty("type")]
|
||||||
|
public string Type;
|
||||||
|
}
|
||||||
|
|
||||||
[JsonProperty("handle")]
|
[JsonProperty("handle")]
|
||||||
public required string Handle;
|
public required string Handle;
|
||||||
[JsonProperty("templateVersion")]
|
[JsonProperty("templateVersion")]
|
||||||
public required string TemplateVersion;
|
public required string TemplateVersion;
|
||||||
[JsonProperty("value")]
|
[JsonProperty("value")]
|
||||||
public required Dictionary<string, object> Value;
|
public required ValueInfo[] Value;
|
||||||
}
|
}
|
@@ -6,7 +6,7 @@ namespace IDIS.Models
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 基于IDIS v1的标识模板值
|
/// 基于IDIS v1的标识模板值
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class IDIS_Template_Item
|
public record IDIS_Template_Item
|
||||||
{
|
{
|
||||||
public IDIS_Template_Item(){}
|
public IDIS_Template_Item(){}
|
||||||
public IDIS_Template_Item(string name,string idType)
|
public IDIS_Template_Item(string name,string idType)
|
||||||
@@ -19,6 +19,6 @@ namespace IDIS.Models
|
|||||||
[JsonProperty("idType")]
|
[JsonProperty("idType")]
|
||||||
public string IdType { get; set; } = string.Empty;
|
public string IdType { get; set; } = string.Empty;
|
||||||
[JsonProperty("metaData")]
|
[JsonProperty("metaData")]
|
||||||
public IDIS_Template_Item_MetaData[] MetaData { get; set; } = Array.Empty<IDIS_Template_Item_MetaData>();
|
public IDIS_Template_Item_MetaData MetaData { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -4,7 +4,7 @@ using Newtonsoft.Json;
|
|||||||
namespace IDIS
|
namespace IDIS
|
||||||
{
|
{
|
||||||
|
|
||||||
public class IDIS_Template_Item_MetaData
|
public record IDIS_Template_Item_MetaData
|
||||||
{
|
{
|
||||||
public IDIS_Template_Item_MetaData()
|
public IDIS_Template_Item_MetaData()
|
||||||
{
|
{
|
||||||
|
@@ -25,21 +25,30 @@ namespace IDIS.Services
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
event Action OnDisconnected;
|
event Action OnDisconnected;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 解析标识的回调的回调
|
||||||
|
/// </summary>
|
||||||
|
event Action<IDIS_Query_Data> OnQuery;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 注册标识的回调
|
||||||
|
/// </summary>
|
||||||
|
event Action<string,string> OnRegister;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 基于标识模板注册标识
|
/// 基于标识模板注册标识
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="handle">标识码</param>
|
/// <param name="handle">标识码</param>
|
||||||
/// <param name="templateVersion">标识模板</param>
|
/// <param name="templateVersion">标识模板</param>
|
||||||
/// <param name="value">值,通常为字典</param>
|
/// <param name="value">值,通常为字典</param>
|
||||||
/// <returns></returns>
|
UniTask RegisterAsync(string handle, string templateVersion,IDIS_Register_Data.ValueInfo[] value);
|
||||||
UniTask<IDIS_Response> RegisterAsync(string handle, string templateVersion,IDictionary<string,object> value);
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 异步删除标识
|
/// 异步删除标识
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="code">标识码</param>
|
/// <param name="code">标识码</param>
|
||||||
/// <returns>是否删除成功</returns>
|
/// <returns>是否删除成功</returns>
|
||||||
UniTask<IDIS_Response> DeleteAsync(string code);
|
UniTask DeleteAsync(string code);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 异步删除标识
|
/// 异步删除标识
|
||||||
@@ -47,7 +56,7 @@ namespace IDIS.Services
|
|||||||
/// <param name="code">标识码</param>
|
/// <param name="code">标识码</param>
|
||||||
/// <param name="index">标识索引</param>
|
/// <param name="index">标识索引</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
UniTask<IDIS_Response> DeleteIdDataAsync(string code, int index);
|
UniTask DeleteIdDataAsync(string code, int index);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 更新标识值
|
/// 更新标识值
|
||||||
@@ -55,14 +64,14 @@ namespace IDIS.Services
|
|||||||
/// <param name="code">标识码</param>
|
/// <param name="code">标识码</param>
|
||||||
/// <param name="value">需要更新的标识列表</param>
|
/// <param name="value">需要更新的标识列表</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
UniTask<IDIS_Response> UpdateAsync(string code, IDictionary<string,object> value);
|
UniTask UpdateAsync(string code, IDictionary<string,object> value);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 异步解析标识
|
/// 异步解析标识
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="code">标识码</param>
|
/// <param name="code">标识码</param>
|
||||||
/// <returns><see cref="IDIS_Response"/></returns>
|
/// <returns><see cref="IDIS_Response"/></returns>
|
||||||
UniTask<IDIS_Response> QueryAsync(string code);
|
UniTask<IDIS_Query_Data> QueryAsync(string code);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 标识码是否已注册
|
/// 标识码是否已注册
|
||||||
|
@@ -11,34 +11,33 @@ namespace IDIS.Services
|
|||||||
{
|
{
|
||||||
event Action<IDIS_Template> OnTemplateCreated;
|
event Action<IDIS_Template> OnTemplateCreated;
|
||||||
event Action<IDIS_Template> OnTemplateDeleted;
|
event Action<IDIS_Template> OnTemplateDeleted;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查询数据模板
|
/// 查询标识模板
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="prefix">前缀</param>
|
/// <param name="prefix">前缀</param>
|
||||||
/// <param name="version">模板版本</param>
|
/// <param name="version">模板版本</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
UniTask<IDIS_Response> QueryAsync(string prefix, string version);
|
UniTask<IDIS_Template> QueryAsync(string prefix, string version);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取所有数据模板
|
/// 获取所有数据模板
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
UniTask<IDIS_Response> ToArrayAsync();
|
UniTask<IDIS_Template[]> ToArrayAsync();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 保存数据模板
|
/// 保存数据模板
|
||||||
/// <para>模板不存在时为会新增模板信息</para>
|
/// <para>模板不存在时为会新增模板信息</para>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="template">模板信息</param>
|
/// <param name="template">模板信息</param>
|
||||||
/// <returns></returns>
|
UniTask SaveAsync(IDIS_Template template);
|
||||||
UniTask<IDIS_Response> SaveAsync(IDIS_Template template);
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 删除数据模板
|
/// 删除数据模板
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="prefix"></param>
|
/// <param name="prefix"></param>
|
||||||
/// <param name="version"></param>
|
/// <param name="version"></param>
|
||||||
/// <returns></returns>
|
UniTask DeleteAsync (string prefix, string version);
|
||||||
UniTask<IDIS_Response> DeleteAsync (string prefix, string version);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user