chaosbot/ChaosBot/Database/Entity/ServerConfigurationFlag.cs

67 lines
1.8 KiB
C#

using System;
using System.Data;
using System.IO;
using System.Text;
using System.Text.Json;
using System.Xml.Serialization;
using ChaosBot.Attribute;
namespace ChaosBot.Database.Entity
{
[DBEntity("ServerConfigurationFlags")]
public class ServerConfigurationFlag<T> : BaseEntity
{
public string key { get; private set; }
public string serializedValue { get; set; }
public long guildId { get; private set; }
public ServerConfigurationFlag() {}
public ServerConfigurationFlag(string key, T value, ulong guildId)
{
this.serializedValue = Serialize(value);
this.key = key;
this.guildId = Convert.ToInt64(guildId);
}
public ServerConfigurationFlag(string key, T value, long guildId)
{
this.serializedValue = Serialize(value);
this.key = key;
this.guildId = guildId;
}
public ServerConfigurationFlag(string key, long guildId)
{
this.key = key;
this.guildId = guildId;
}
public static QueryBuilder<ServerConfigurationFlag<T>> Query()
{
return BaseEntity.Query<ServerConfigurationFlag<T>>();
}
public override void SetFromRow(DataRow row)
{
key = (string)row["key"];
serializedValue = (string)row["serializedValue"];
guildId = (long)row["guildId"];
}
public T GetValue()
{
return Deserialize(serializedValue);
}
public static string Serialize(T value)
{
return JsonSerializer.Serialize(value);
}
public static T Deserialize(string serializedValue)
{
return JsonSerializer.Deserialize<T>(serializedValue);
}
}
}