cartodb-4.42/app/models/carto/synchronization.rb
2024-04-06 05:25:13 +00:00

40 lines
993 B
Ruby

require 'active_record'
class Carto::Synchronization < ActiveRecord::Base
belongs_to :user, class_name: Carto::User
belongs_to :visualization, class_name: Carto::Visualization
belongs_to :log, class_name: Carto::Log
has_many :external_data_imports, class_name: Carto::ExternalDataImport
STATE_CREATED = 'created'
# Already at resque, waiting for slot
STATE_QUEUED = 'queued'
# Actually syncing
STATE_SYNCING = 'syncing'
STATE_SUCCESS = 'success'
STATE_FAILURE = 'failure'
def authorize?(user)
user.id == user_id && (!!user.sync_tables_enabled || from_external_source?)
end
def to_json(*args)
attributes.merge({from_external_source: from_external_source?}).to_json(*args)
end
def to_hash
attributes.merge({from_external_source: from_external_source?}).to_hash
end
def success?
state == STATE_SUCCESS
end
def from_external_source?
Carto::ExternalDataImport.where(synchronization_id: self.id).first != nil
end
end