@@ -44,6 +44,22 @@ data PGType
4444data Named k = (:=) Symbol k
4545type family Unnamed named where Unnamed (name ':= x) = x
4646type family Name k where Name (name ':= x) = name
47+
48+type family Field1 xs name x where
49+ Field1 '[] name x = 'False
50+ Field1 ((name ':= x) ': xs) name x = 'True
51+ Field1 (y ': xs) name x = Field1 xs name x
52+
53+type family Field2 xss names x where
54+ Field2 '[] names x = 'False
55+ Field2 ((name ':= xs) ': xss) '[name,name1] x = Field1 xs name x
56+ Field2 (y ': xss) names x = Field2 xss names x
57+
58+type family Field3 xsss names x where
59+ Field3 '[] names x = 'False
60+ Field3 ((name ':= xss) ': xsss) (name ': names) x = Field2 xss names x
61+ Field3 (y ': xss) names x = Field3 xss names x
62+
4763type Column = Named PGType
4864type Table = Named [Column]
4965type Database = Named [Table]