Files

36 lines
1009 B
Ruby
Raw Permalink Normal View History

2025-10-28 10:52:37 +02:00
# frozen_string_literal: true
class TemplatesDetectFieldsController < ApplicationController
include ActionController::Live
load_and_authorize_resource :template
def create
response.headers['Content-Type'] = 'text/event-stream'
sse = SSE.new(response.stream)
documents = @template.schema_documents.preload(:blob)
2026-01-18 17:22:55 +02:00
documents = documents.where(uuid: params[:attachment_uuid]) if params[:attachment_uuid].present?
2026-01-26 18:18:07 +02:00
page_number = params[:page].presence&.to_i
2025-10-28 10:52:37 +02:00
documents.each do |document|
2026-05-31 09:20:51 +03:00
io =
if document.image?
StringIO.new(document.preview_images.joins(:blob).find_by(blob: { filename: ['0.png', '0.jpg'] }).download)
else
StringIO.new(document.download)
end
2025-10-28 10:52:37 +02:00
2026-01-18 17:22:55 +02:00
Templates::DetectFields.call(io, attachment: document, page_number:) do |(attachment_uuid, page, fields)|
2025-10-28 10:52:37 +02:00
sse.write({ attachment_uuid:, page:, fields: })
end
end
sse.write({ completed: true })
ensure
response.stream.close
end
end