@@ -10,7 +10,7 @@ object TableAnnotation {
1010 case class name (name : String ) extends StaticAnnotation
1111}
1212
13- trait TableModule { self : ExprModule with SelectModule with UtilsModule with SelectUtilsModule =>
13+ trait TableModule { self : ExprModule with SelectModule with UtilsModule with SelectUtilsModule with AllColumnsModule =>
1414
1515 type Lens [F , S , A ] = Expr [Features .Source [F , S ], S , A ]
1616
@@ -22,6 +22,7 @@ trait TableModule { self: ExprModule with SelectModule with UtilsModule with Sel
2222 * Creates a table descripton from the Schema of T.
2323 * Table name is taken either from @name annotation or schema id type and pluralized.
2424 */
25+ // TODO do not allow CaseClass0 with macro
2526 def defineTableSmart [T ](implicit
2627 schema : Schema .Record [T ],
2728 tableLike : TableSchema [T ]
@@ -67,17 +68,22 @@ trait TableModule { self: ExprModule with SelectModule with UtilsModule with Sel
6768 ): Table .Source .WithTableDetails [schema.Terms , T , schema.Accessors [Lens , Prism , Traversal ]] =
6869 new Table .Source {
6970
70- val exprAccessorBuilder = new ExprAccessorBuilder (tableName)
71+ protected [sql] val exprAccessorBuilder = new ExprAccessorBuilder (tableName)
7172
72- override type AllColumnIdentities = schema.Terms
73+ override protected [sql] type AllColumnIdentities = schema.Terms
7374
74- override type TableType = T
75+ override protected [sql] type TableType = T
7576
76- override type ColumnsOut =
77+ override protected [sql] type ColumnsOut =
7778 schema.Accessors [exprAccessorBuilder.Lens , exprAccessorBuilder.Prism , exprAccessorBuilder.Traversal ]
7879
7980 override val columns : ColumnsOut = schema.makeAccessors(exprAccessorBuilder)
8081
82+ override protected [sql] def all (implicit
83+ helper : ColumnsHelper [ColumnsOut , TableType ]
84+ ): SelectBuilder [helper.F , TableType , helper.SelSet ] =
85+ helper.apply(columns)
86+
8187 override val name : TableName = tableName.toLowerCase()
8288 }
8389
@@ -177,7 +183,7 @@ trait TableModule { self: ExprModule with SelectModule with UtilsModule with Sel
177183 }
178184
179185 sealed trait Table { self =>
180- type TableType
186+ protected [sql] type TableType
181187
182188 final def fullOuter [That ](that : Table .Aux [That ]): Table .JoinBuilder [self.TableType , That ] =
183189 new Table .JoinBuilder [self.TableType , That ](JoinType .FullOuter , self, that)
@@ -209,19 +215,23 @@ trait TableModule { self: ExprModule with SelectModule with UtilsModule with Sel
209215 }
210216
211217 trait Insanity {
212- def ahhhhhhhhhhhhh [A ]: A
218+ protected [sql] def ahhhhhhhhhhhhh [A ]: A
213219 }
214220
215221 sealed trait Source extends Table with Insanity {
216- type AllColumnIdentities
222+ protected [sql] type AllColumnIdentities
217223
218224 val name : TableName
219225
220- type ColumnsOut
226+ protected [sql] type ColumnsOut
221227
222228 val columns : ColumnsOut
223229
224- override def ahhhhhhhhhhhhh [A ]: A = ??? // don't remove or it'll break
230+ protected [sql] def all (implicit
231+ helper : ColumnsHelper [ColumnsOut , TableType ]
232+ ): SelectBuilder [helper.F , TableType , helper.SelSet ]
233+
234+ override protected [sql] def ahhhhhhhhhhhhh [A ]: A = ??? // don't remove or it'll break
225235 }
226236
227237 object Source {
0 commit comments