dawarich/app/services/geojson/import_parser.rb

37 lines
729 B
Ruby
Raw Normal View History

2024-09-02 16:33:54 -04:00
# frozen_string_literal: true
class Geojson::ImportParser
include Imports::Broadcaster
2024-09-02 16:33:54 -04:00
attr_reader :import, :json, :user_id
def initialize(import, user_id)
@import = import
@json = import.raw_data
@user_id = user_id
end
def call
data = Geojson::Params.new(json).call
data.each.with_index(1) do |point, index|
2024-09-02 16:33:54 -04:00
next if point_exists?(point, user_id)
Point.create!(point.merge(user_id:, import_id: import.id))
broadcast_import_progress(import, index)
2024-09-02 16:33:54 -04:00
end
end
private
def point_exists?(params, user_id)
Point.exists?(
latitude: params[:latitude],
longitude: params[:longitude],
timestamp: params[:timestamp],
user_id:
)
end
end