@@ -41,38 +41,14 @@ module CQL
4141 # - **@return** [QueryBuilder(T)] A new query builder instance
4242 def with_query (& block : CQL ::Query - > CQL ::Query )
4343 # Create a new query by applying the block to a copy of the current query
44- new_query = block.call(clone_query( @query ) )
44+ new_query = block.call(@query .clone )
4545 QueryBuilder (T ).new(new_query, @model_class )
4646 end
4747
4848 # Clone the current QueryBuilder and apply modifications
4949 # - **@return** [QueryBuilder(T)] A new query builder instance
5050 private def clone_builder : QueryBuilder (T )
51- QueryBuilder (T ).new(clone_query(@query ), @model_class )
52- end
53-
54- # Clone a CQL::Query object since it doesn't have a built-in clone method
55- private def clone_query (original_query : CQL ::Query ) : CQL ::Query
56- # Create a new query with the same schema
57- new_query = CQL ::Query .new(original_query.schema)
58-
59- # Copy properties that have setters
60- new_query.where = original_query.where
61- new_query.having = original_query.having
62- new_query.limit = original_query.limit
63- new_query.offset = original_query.offset
64- new_query.distinct = original_query.distinct?
65-
66- # Copy collections by adding elements one by one
67- original_query.columns.each { |col | new_query.columns << col }
68- original_query.query_tables.each { |key , value | new_query.query_tables[key] = value }
69- original_query.group_by.each { |col | new_query.group_by << col }
70- original_query.order_by.each { |key , value | new_query.order_by[key] = value }
71- original_query.joins.each { |join | new_query.joins << join }
72- original_query.aggr_columns.each { |aggr | new_query.aggr_columns << aggr }
73- original_query.column_aliases.each { |key , value | new_query.column_aliases[key] = value }
74-
75- new_query
51+ QueryBuilder (T ).new(@query .clone, @model_class )
7652 end
7753
7854 # Add columns to select
0 commit comments