A special implicitly materialized typeclass that compares HLists for equality.
A very dirty typeclass used to duct type single argument calls to the store varargs autotupled method.
A very dirty typeclass used to duct type single argument calls to the store varargs autotupled method. We currently expect the store method to auto-tuple argument types, which leads to problems when a single tuple argument is passed. In order to fix this, this type class will effectively pick a matching type between our single implementation of SingleGeneric and the traditional shapeless.Generic.
Unlike the traditional implementation, a single tuple argument must not be expanded into a shapeless.HList of its enclosing types, but rather an shapeless.HList that merely wraps around the source type.
Example:
val singleGeneric = SingleGeneric[(String, Int)].Repr (String, Int) :: HNil val shapelessGeneric = Generic[(String, Int)] String :: Int :: HNil
Unlike the traditional implementation of Generic we don't always need to destructure tuples, but because we cannot effectively distinguish, we are forced to duct-type and pick the appropriate implementation based on which variation between GenR and Store matches the input type.
The source type of the record that is passed to the store method as an auto-tupling argument.
The HList input type inferred by TableHelper.
The generic HList type inferred by shapeless.Generic.
A special implicitly materialized typeclass that compares HLists for equality. This also prints more useful information to the end user if the HLists don't match. However, it is required because the standard =:= type class in Scala is not able to see through an HList generated as an abstract type member of another implicitly materialized type class.
The left shapeless.HList type.
The right shapeless.HList type.