public void MoveFolder(SyncItem oldItem, SyncItem newItem)
{
Dictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add("oldPath", oldItem.RemoteRelativePath);
parameters.Add("oldPathLike", oldItem.RemoteRelativePath + "/%");
parameters.Add("substringIndex", oldItem.RemoteRelativePath.Length + 1);
parameters.Add("newPath", newItem.RemoteRelativePath);
parameters.Add("newLocalPath", newItem.LocalRelativePath);
// Update folder itself
ExecuteSQLAction("UPDATE folders SET path=@newPath, localPath=@newLocalPath WHERE path=@oldPath", parameters);
// UPdate all folders under this folder
ExecuteSQLAction("UPDATE folders SET path=@newPath||SUBSTR(path, @substringIndex), localPath=@newLocalPath||SUBSTR(localPath, @substringIndex) WHERE path LIKE @oldPathLike", parameters);
// Update all files under this folder
ExecuteSQLAction("UPDATE files SET path=@newPath||SUBSTR(path, @substringIndex), localPath=@newLocalPath||SUBSTR(localPath, @substringIndex) WHERE path LIKE @oldPathLike", parameters);
}