This represents a simplified Sql-Type. Since it applies to all dialects, it is called
Quill-Application-Type hence Quat. Quats represent the types of the Quill AST allowing us
to know what fields exist on an Ident and more concretely what can be done with it.
Currently they are:
Quat.Product - Something that contains a list of fields e.g. case class Person(name:String,age:Int) would be
Product("name"->Quat.Value, "age"->Quat.Value)
Quat.Value - A value level Quat e.g. Int, Long, String etc... More specific Quat.Value types are planned int the future.
Quat.Generic - A Quat representing a type whose value is not known yet.
Quat.Null - A Quat representing a null value.
Quats are generally treated as through they are immutable although there are dynamic/mutable variables in some places
(e.g. Product uses LinkedHashSet and var) due to various other issues (e.g. performance, serialization). It is assumed that
all operations Quats have referential transparency.
This represents a simplified Sql-Type. Since it applies to all dialects, it is called Quill-Application-Type hence Quat. Quats represent the types of the Quill AST allowing us to know what fields exist on an Ident and more concretely what can be done with it. Currently they are:
Person(name:String,age:Int)
would beProduct("name"->Quat.Value, "age"->Quat.Value)
Quats are generally treated as through they are immutable although there are dynamic/mutable variables in some places (e.g. Product uses LinkedHashSet and var) due to various other issues (e.g. performance, serialization). It is assumed that all operations Quats have referential transparency.