diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-12-01 07:40:45 +0200 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-12-01 07:40:45 +0200 |
| commit | 45a7a7319bbae1a2ab5cfc93d7a2507cccd8770e (patch) | |
| tree | 60a11ce93471cc99e30e180304d149727f3fba69 /Software/Visual_Studio/DataStore | |
| parent | 4225ba2cde1b0cfdb57196cb832dbec2dfca5707 (diff) | |
| download | Tango-45a7a7319bbae1a2ab5cfc93d7a2507cccd8770e.tar.gz Tango-45a7a7319bbae1a2ab5cfc93d7a2507cccd8770e.zip | |
Implemented action logs for data store.
Diffstat (limited to 'Software/Visual_Studio/DataStore')
| -rw-r--r-- | Software/Visual_Studio/DataStore/Tango.DataStore.EF/EFDataStoreHelper.cs | 47 | ||||
| -rw-r--r-- | Software/Visual_Studio/DataStore/Tango.DataStore/DataStoreHelper.cs | 92 |
2 files changed, 89 insertions, 50 deletions
diff --git a/Software/Visual_Studio/DataStore/Tango.DataStore.EF/EFDataStoreHelper.cs b/Software/Visual_Studio/DataStore/Tango.DataStore.EF/EFDataStoreHelper.cs index 5e885458b..a702c3465 100644 --- a/Software/Visual_Studio/DataStore/Tango.DataStore.EF/EFDataStoreHelper.cs +++ b/Software/Visual_Studio/DataStore/Tango.DataStore.EF/EFDataStoreHelper.cs @@ -12,55 +12,12 @@ namespace Tango.DataStore.EF { public static byte[] CreateBytes(DataType type, Object obj) { - switch (type) - { - case DataType.Int32: - return BitConverter.GetBytes((int)obj); - case DataType.Float: - return BitConverter.GetBytes((float)obj); - case DataType.Double: - return BitConverter.GetBytes((double)obj); - case DataType.Boolean: - return BitConverter.GetBytes((bool)obj); - case DataType.String: - return Encoding.Default.GetBytes(obj.ToString()); - case DataType.Bytes: - return (byte[])obj; - case DataType.Proto: - if (obj is DataStoreProtoObject protoMessage) - { - return protoMessage.ToBytes(); - } - else - { - throw new NotSupportedException($"Data type is 'Proto' but object is not of type '{nameof(DataStoreProtoObject)}'."); - } - } - - throw new NotSupportedException("The specified type is not supported."); + return DataStoreHelper.CreateBytes(type, obj); } public static Object CreateObject(DataType type, byte[] bytes) { - switch (type) - { - case DataType.Int32: - return BitConverter.ToInt32(bytes, 0); - case DataType.Float: - return BitConverter.ToSingle(bytes, 0); - case DataType.Double: - return BitConverter.ToDouble(bytes, 0); - case DataType.Boolean: - return BitConverter.ToBoolean(bytes, 0); - case DataType.String: - return Encoding.Default.GetString(bytes); - case DataType.Bytes: - return bytes; - case DataType.Proto: - return DataStoreProtoObject.FromBytes(bytes); - } - - throw new NotSupportedException("The specified type is not supported."); + return DataStoreHelper.CreateObject(type, bytes); } public static IDataStoreItem CreateDataStoreItem(DataStoreItem item) diff --git a/Software/Visual_Studio/DataStore/Tango.DataStore/DataStoreHelper.cs b/Software/Visual_Studio/DataStore/Tango.DataStore/DataStoreHelper.cs index 0ceecd81b..0409dbf7a 100644 --- a/Software/Visual_Studio/DataStore/Tango.DataStore/DataStoreHelper.cs +++ b/Software/Visual_Studio/DataStore/Tango.DataStore/DataStoreHelper.cs @@ -83,17 +83,28 @@ namespace Tango.DataStore /// <returns></returns> public static String FormatDataStoreItem(IDataStoreItem item) { - if (item.Type == DataType.Bytes) + return FormatDataStoreValue(item.Type, item.Value); + } + + /// <summary> + /// Formats the data store value. + /// </summary> + /// <param name="type">The type.</param> + /// <param name="obj">The object.</param> + /// <returns></returns> + public static String FormatDataStoreValue(DataType type, object obj) + { + if (type == DataType.Bytes) { - return Convert.ToBase64String((byte[])item.Value); + return Convert.ToBase64String((byte[])obj); } - else if (item.Type == DataType.Proto) + else if (type == DataType.Proto) { - return (item.Value as DataStoreProtoObject).Message.ToJsonString(); + return (obj as DataStoreProtoObject).Message.ToJsonString(); } else { - return item.Value.ToStringSafe(); + return obj.ToStringSafe(); } } @@ -143,5 +154,76 @@ namespace Tango.DataStore var regexItem = new Regex("^[a-zA-Z0-9_-]*$"); return regexItem.IsMatch(name); } + + /// <summary> + /// Creates a data store value from byte array that are stored in database. + /// </summary> + /// <param name="type">The type.</param> + /// <param name="bytes">The bytes.</param> + /// <returns></returns> + /// <exception cref="System.NotSupportedException">The specified type is not supported.</exception> + public static Object CreateObject(DataType type, byte[] bytes) + { + switch (type) + { + case DataType.Int32: + return BitConverter.ToInt32(bytes, 0); + case DataType.Float: + return BitConverter.ToSingle(bytes, 0); + case DataType.Double: + return BitConverter.ToDouble(bytes, 0); + case DataType.Boolean: + return BitConverter.ToBoolean(bytes, 0); + case DataType.String: + return Encoding.Default.GetString(bytes); + case DataType.Bytes: + return bytes; + case DataType.Proto: + return DataStoreProtoObject.FromBytes(bytes); + } + + throw new NotSupportedException("The specified type is not supported."); + } + + /// <summary> + /// Creates a byte array that can be stored on database from the specified data store type and value. + /// </summary> + /// <param name="type">The type.</param> + /// <param name="obj">The object.</param> + /// <returns></returns> + /// <exception cref="System.NotSupportedException"> + /// DataStoreProtoObject + /// or + /// The specified type is not supported. + /// </exception> + public static byte[] CreateBytes(DataType type, Object obj) + { + switch (type) + { + case DataType.Int32: + return BitConverter.GetBytes((int)obj); + case DataType.Float: + return BitConverter.GetBytes((float)obj); + case DataType.Double: + return BitConverter.GetBytes((double)obj); + case DataType.Boolean: + return BitConverter.GetBytes((bool)obj); + case DataType.String: + return Encoding.Default.GetBytes(obj.ToString()); + case DataType.Bytes: + return (byte[])obj; + case DataType.Proto: + if (obj is DataStoreProtoObject protoMessage) + { + return protoMessage.ToBytes(); + } + else + { + throw new NotSupportedException($"Data type is 'Proto' but object is not of type '{nameof(DataStoreProtoObject)}'."); + } + } + + throw new NotSupportedException("The specified type is not supported."); + } } } |
