Class: Sage::Queries::MessagesController
- Inherits:
-
BaseController
- Object
- Blazer::BaseController
- BaseController
- Sage::Queries::MessagesController
- Defined in:
- app/controllers/sage/queries/messages_controller.rb
Instance Method Summary collapse
Instance Method Details
#create ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'app/controllers/sage/queries/messages_controller.rb', line 32 def create = @query..create!(body: params[:statement]) creator_id = blazer_user.present? ? blazer_user.id : 0 .creator_id = creator_id .save! .reload stream_target_id = SecureRandom.hex(8) Sage::ProcessReportJob.perform_later( .body, query_id: .blazer_query.id, stream_target_id: ) # Check if we need a new day separator @need_day_separator = @query..where( "DATE(created_at) = ?", .created_at.to_date ).count == 1 end |
#index ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'app/controllers/sage/queries/messages_controller.rb', line 7 def index page = params[:page] || 1 # For reverse infinite scroll, we want: # Page 1: Most recent messages (to show at bottom initially) # Page 2: Older messages (to prepend when scrolling up) # Page 3: Even older messages, etc. base_query = @query..order(created_at: :desc) @pagy, = pagy(base_query, page: page, overflow: :last_page) # For page 1 (initial load), show newest messages in chronological order (oldest first) # For page 2+, keep reverse chronological order for prepending if page.to_i == 1 = .reverse # Show oldest first for initial display else = # Keep newest first for prepending end respond_to do |format| format.html # For turbo_frame initial load format.turbo_stream # For infinite scroll pagination end end |