43 lines
1.3 KiB
Ruby
43 lines
1.3 KiB
Ruby
|
require 'active_record'
|
||
|
|
||
|
module Carto
|
||
|
class DataImport < ActiveRecord::Base
|
||
|
include Carto::DataImportConstants
|
||
|
|
||
|
# INFO: hack to workaround `ActiveRecord::DangerousAttributeError: logger is defined by ActiveRecord`
|
||
|
class << self
|
||
|
def instance_method_already_implemented?(method_name)
|
||
|
return true if method_name == 'logger'
|
||
|
super
|
||
|
end
|
||
|
end
|
||
|
|
||
|
STATE_ENQUEUED = 'enqueued' # Default state for imports whose files are not yet at "import source"
|
||
|
STATE_PENDING = 'pending' # Default state for files already at "import source" (e.g. S3 bucket)
|
||
|
STATE_UNPACKING = 'unpacking'
|
||
|
STATE_IMPORTING = 'importing'
|
||
|
STATE_COMPLETE = 'complete'
|
||
|
STATE_UPLOADING = 'uploading'
|
||
|
STATE_FAILURE = 'failure'
|
||
|
STATE_STUCK = 'stuck'
|
||
|
|
||
|
belongs_to :user, class_name: Carto::User
|
||
|
belongs_to :log, class_name: Carto::Log, foreign_key: :logger
|
||
|
has_many :external_data_imports, inverse_of: :data_import, class_name: Carto::ExternalDataImport
|
||
|
has_many :user_tables, class_name: Carto::UserTable
|
||
|
|
||
|
validate :validate_collision_strategy
|
||
|
|
||
|
def is_raster?
|
||
|
::JSON.parse(self.stats).select{ |item| item['type'] == '.tif' }.length > 0
|
||
|
end
|
||
|
|
||
|
def final_state?
|
||
|
[STATE_COMPLETE, STATE_FAILURE, STATE_STUCK].include?(state)
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
end
|
||
|
end
|