using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json.Linq;
using RethinkDb.Driver.Net;
namespace RethinkDb.Driver.Model
{
///
/// A grouped result helper.
///
/// The KEY type
/// The VALUE type
public class GroupedResult : IGrouping
{
#pragma warning disable 1591 // Missing XML comment for publicly visible type or member
public GroupedResult(JToken key, JArray items)
{
this.Key = key.ToObject(Converter.Serializer);
this.Items = items.ToObject>(Converter.Serializer);
}
public GroupedResult(JToken key, JValue item)
{
this.Key = key.ToObject(Converter.Serializer);
var value = item.ToObject(Converter.Serializer);
this.Items = new List() {value};
}
public IEnumerator GetEnumerator()
{
return this.Items.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
#pragma warning restore 1591 // Missing XML comment for publicly visible type or member
///
/// The Key
///
public TKey Key { get; }
///
/// The list of items grouped by
///
public List Items { get; set; }
}
///
/// A typed grouped result helper.
///
/// The KEY type
/// The VALUE type
public class GroupedResultSet : List>
{
///
/// Item type
///
public Type ItemType => typeof(TItem);
///
/// Key type
///
public Type KeyType => typeof(TKey);
}
}