@@ -44,6 +44,22 @@ data PGType
44data Named k = (:=) Symbol k
44data Named k = (:=) Symbol k
45type family Unnamed named where Unnamed (name ':= x) = x
45type family Unnamed named where Unnamed (name ':= x) = x
46type family Name k where Name (name ':= x) = name
46type family Name k where Name (name ':= x) = name
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
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
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
47type Column = Named PGType
63type Column = Named PGType
48type Table = Named [Column]
64type Table = Named [Column]
49type Database = Named [Table]
65type Database = Named [Table]