2010-02-02 00:05:59 +00:00
/ *
* Copyright ( c ) Contributors , http : //opensimulator.org/
* See CONTRIBUTORS . TXT for a full list of copyright holders .
*
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions are met :
* * Redistributions of source code must retain the above copyright
* notice , this list of conditions and the following disclaimer .
* * Redistributions in binary form must reproduce the above copyright
* notice , this list of conditions and the following disclaimer in the
* documentation and / or other materials provided with the distribution .
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission .
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ` ` AS IS ' ' AND ANY
* EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO , THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED . IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT , INDIRECT , INCIDENTAL , SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES
* ( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ;
* LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT
* ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
* /
using System ;
using System.Collections ;
using System.Collections.Generic ;
using System.Data ;
using OpenMetaverse ;
using OpenSim.Framework ;
using MySql.Data.MySqlClient ;
namespace OpenSim.Data.MySQL
{
public class MySqlFriendsData : MySQLGenericTableHandler < FriendsData > , IFriendsData
{
public MySqlFriendsData ( string connectionString , string realm )
2010-02-05 12:31:29 +00:00
: base ( connectionString , realm , "FriendsStore" )
2010-02-02 00:05:59 +00:00
{
}
2010-02-05 12:31:29 +00:00
public bool Delete ( UUID principalID , string friend )
2011-05-22 23:51:03 +00:00
{
return Delete ( principalID . ToString ( ) , friend ) ;
}
public bool Delete ( string principalID , string friend )
2010-02-02 00:05:59 +00:00
{
2012-04-30 14:54:35 +00:00
using ( MySqlCommand cmd = new MySqlCommand ( ) )
{
cmd . CommandText = String . Format ( "delete from {0} where PrincipalID = ?PrincipalID and Friend = ?Friend" , m_Realm ) ;
cmd . Parameters . AddWithValue ( "?PrincipalID" , principalID . ToString ( ) ) ;
cmd . Parameters . AddWithValue ( "?Friend" , friend ) ;
2010-02-05 12:31:29 +00:00
2012-04-30 14:54:35 +00:00
ExecuteNonQuery ( cmd ) ;
}
2010-02-05 12:31:29 +00:00
return true ;
2010-02-02 00:05:59 +00:00
}
2010-02-05 12:31:29 +00:00
public FriendsData [ ] GetFriends ( UUID principalID )
2011-05-21 23:48:00 +00:00
{
2012-04-30 14:54:35 +00:00
using ( MySqlCommand cmd = new MySqlCommand ( ) )
{
cmd . CommandText = String . Format ( "select a.*,case when b.Flags is null then -1 else b.Flags end as TheirFlags from {0} as a left join {0} as b on a.PrincipalID = b.Friend and a.Friend = b.PrincipalID where a.PrincipalID = ?PrincipalID" , m_Realm ) ;
cmd . Parameters . AddWithValue ( "?PrincipalID" , principalID . ToString ( ) ) ;
2011-05-22 23:51:03 +00:00
2012-04-30 14:54:35 +00:00
return DoQuery ( cmd ) ;
}
2011-05-21 23:48:00 +00:00
}
public FriendsData [ ] GetFriends ( string principalID )
2010-02-02 00:05:59 +00:00
{
2012-04-30 14:54:35 +00:00
using ( MySqlCommand cmd = new MySqlCommand ( ) )
{
cmd . CommandText = String . Format ( "select a.*,case when b.Flags is null then -1 else b.Flags end as TheirFlags from {0} as a left join {0} as b on a.PrincipalID = b.Friend and a.Friend = b.PrincipalID where a.PrincipalID LIKE ?PrincipalID" , m_Realm ) ;
cmd . Parameters . AddWithValue ( "?PrincipalID" , principalID . ToString ( ) + '%' ) ;
2010-02-07 12:06:00 +00:00
2012-04-30 14:54:35 +00:00
return DoQuery ( cmd ) ;
}
2010-02-02 00:05:59 +00:00
}
}
2012-04-30 14:54:35 +00:00
}