AvatarStore. Untested, but complete
parent
791c6188fd
commit
6e8d94685d
|
@ -43,5 +43,7 @@ namespace OpenSim.Data
|
||||||
{
|
{
|
||||||
AvatarBaseData[] Get(string field, string val);
|
AvatarBaseData[] Get(string field, string val);
|
||||||
bool Store(AvatarBaseData data);
|
bool Store(AvatarBaseData data);
|
||||||
|
bool Delete(UUID principalID, string name);
|
||||||
|
bool Delete(string field, string val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,12 +95,12 @@ namespace OpenSim.Data.MySQL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public T[] Get(string field, string key)
|
public virtual T[] Get(string field, string key)
|
||||||
{
|
{
|
||||||
return Get(new string[] { field }, new string[] { key });
|
return Get(new string[] { field }, new string[] { key });
|
||||||
}
|
}
|
||||||
|
|
||||||
public T[] Get(string[] fields, string[] keys)
|
public virtual T[] Get(string[] fields, string[] keys)
|
||||||
{
|
{
|
||||||
if (fields.Length != keys.Length)
|
if (fields.Length != keys.Length)
|
||||||
return new T[0];
|
return new T[0];
|
||||||
|
@ -184,7 +184,7 @@ namespace OpenSim.Data.MySQL
|
||||||
return result.ToArray();
|
return result.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public T[] Get(string where)
|
public virtual T[] Get(string where)
|
||||||
{
|
{
|
||||||
MySqlCommand cmd = new MySqlCommand();
|
MySqlCommand cmd = new MySqlCommand();
|
||||||
|
|
||||||
|
@ -196,7 +196,7 @@ namespace OpenSim.Data.MySQL
|
||||||
return DoQuery(cmd);
|
return DoQuery(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Store(T row)
|
public virtual bool Store(T row)
|
||||||
{
|
{
|
||||||
MySqlCommand cmd = new MySqlCommand();
|
MySqlCommand cmd = new MySqlCommand();
|
||||||
|
|
||||||
|
@ -234,7 +234,7 @@ namespace OpenSim.Data.MySQL
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Delete(string field, string val)
|
public virtual bool Delete(string field, string val)
|
||||||
{
|
{
|
||||||
MySqlCommand cmd = new MySqlCommand();
|
MySqlCommand cmd = new MySqlCommand();
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
BEGIN;
|
||||||
|
|
||||||
|
CREATE TABLE Avatars (PrincipalID CHAR(36) NOT NULL, Name VARCHAR(32) NOT NULL, Value VARCHAR(255) NOT NULL DEFAULT '', PRIMARY KEY(PrincipalID, Name), KEY(PrincipalID));
|
||||||
|
|
||||||
|
COMMIT;
|
|
@ -53,45 +53,86 @@ namespace OpenSim.Services.AvatarService
|
||||||
|
|
||||||
public AvatarData GetAvatar(UUID principalID)
|
public AvatarData GetAvatar(UUID principalID)
|
||||||
{
|
{
|
||||||
|
|
||||||
AvatarBaseData[] av = m_Database.Get("PrincipalID", principalID.ToString());
|
AvatarBaseData[] av = m_Database.Get("PrincipalID", principalID.ToString());
|
||||||
if (av.Length == 0)
|
if (av.Length == 0)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
AvatarData ret = new AvatarData();
|
AvatarData ret = new AvatarData();
|
||||||
ret.AvatarType = Convert.ToInt32(av[0].Data["AvatarType"]);
|
ret.Data = new Dictionary<string,string>();
|
||||||
|
|
||||||
av[0].Data.Remove("AvatarType");
|
foreach (AvatarBaseData b in av)
|
||||||
|
{
|
||||||
ret.Data = av[0].Data;
|
if (b.Data["Name"] == "AvatarType")
|
||||||
|
ret.AvatarType = Convert.ToInt32(b.Data["Value"]);
|
||||||
|
else
|
||||||
|
ret.Data[b.Data["Name"]] = b.Data["Value"];
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool SetAvatar(UUID principalID, AvatarData avatar)
|
public bool SetAvatar(UUID principalID, AvatarData avatar)
|
||||||
{
|
{
|
||||||
|
m_Database.Delete("PrincipalID", principalID.ToString());
|
||||||
|
|
||||||
AvatarBaseData av = new AvatarBaseData();
|
AvatarBaseData av = new AvatarBaseData();
|
||||||
|
av.Data = new Dictionary<string,string>();
|
||||||
|
|
||||||
av.PrincipalID = principalID;
|
av.PrincipalID = principalID;
|
||||||
av.Data = avatar.Data;
|
av.Data["Name"] = "AvatarType";
|
||||||
av.Data["AvatarType"] = avatar.AvatarType.ToString();
|
av.Data["Value"] = avatar.AvatarType.ToString();
|
||||||
|
|
||||||
return m_Database.Store(av);
|
if (!m_Database.Store(av))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
foreach (KeyValuePair<string,string> kvp in avatar.Data)
|
||||||
|
{
|
||||||
|
av.Data["Name"] = kvp.Key;
|
||||||
|
av.Data["Value"] = kvp.Value;
|
||||||
|
|
||||||
|
if (!m_Database.Store(av))
|
||||||
|
{
|
||||||
|
m_Database.Delete("PrincipalID", principalID.ToString());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool ResetAvatar(UUID principalID)
|
public bool ResetAvatar(UUID principalID)
|
||||||
{
|
{
|
||||||
return false;
|
return m_Database.Delete("PrincipalID", principalID.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool SetItems(UUID principalID, string[] names, string[] values)
|
public bool SetItems(UUID principalID, string[] names, string[] values)
|
||||||
{
|
{
|
||||||
|
AvatarBaseData av = new AvatarBaseData();
|
||||||
|
av.Data = new Dictionary<string,string>();
|
||||||
|
av.PrincipalID = principalID;
|
||||||
|
|
||||||
|
if (names.Length != values.Length)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
for (int i = 0 ; i < names.Length ; i++)
|
||||||
|
{
|
||||||
|
av.Data["Name"] = names[i];
|
||||||
|
av.Data["Value"] = values[i];
|
||||||
|
|
||||||
|
if (!m_Database.Store(av))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool RemoveItems(UUID principalID, string[] names)
|
public bool RemoveItems(UUID principalID, string[] names)
|
||||||
{
|
{
|
||||||
return false;
|
foreach (string name in names)
|
||||||
|
{
|
||||||
|
m_Database.Delete(principalID, name);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue