2010-03-01 00:09:06 +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 ;
2010-09-23 05:21:08 +00:00
#if CSharpSqlite
using Community.CsharpSqlite.Sqlite ;
# else
using Mono.Data.Sqlite ;
# endif
2010-03-01 00:09:06 +00:00
namespace OpenSim.Data.SQLite
{
public class SQLiteFriendsData : SQLiteGenericTableHandler < FriendsData > , IFriendsData
{
public SQLiteFriendsData ( string connectionString , string realm )
: base ( connectionString , realm , "FriendsStore" )
{
}
2011-05-21 23:48:00 +00:00
public FriendsData [ ] GetFriends ( UUID principalID )
{
return GetFriends ( principalID . ToString ( ) ) ;
}
public FriendsData [ ] GetFriends ( string userID )
2010-03-01 00:09:06 +00:00
{
2012-11-14 04:45:59 +00:00
using ( SqliteCommand cmd = new SqliteCommand ( ) )
{
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" , userID . ToString ( ) ) ;
2010-03-01 00:09:06 +00:00
2012-11-14 04:45:59 +00:00
return DoQuery ( cmd ) ;
}
2010-03-01 00:09:06 +00:00
}
public bool Delete ( UUID principalID , string friend )
2011-05-22 23:51:03 +00:00
{
return Delete ( principalID . ToString ( ) , friend ) ;
}
2014-04-22 17:04:12 +00:00
public override bool Delete ( string principalID , string friend )
2010-03-01 00:09:06 +00:00
{
2012-11-14 04:45:59 +00:00
using ( SqliteCommand cmd = new SqliteCommand ( ) )
{
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-03-01 00:09:06 +00:00
2012-11-14 04:45:59 +00:00
ExecuteNonQuery ( cmd , m_Connection ) ;
}
2010-03-01 00:09:06 +00:00
return true ;
}
}
}