Class: CoPlan::EditSession

Inherits:
ApplicationRecord show all
Defined in:
app/models/coplan/edit_session.rb

Constant Summary collapse

STATUSES =
%w[open committed expired cancelled failed].freeze
ACTOR_TYPES =
%w[human local_agent cloud_persona].freeze
LOCAL_AGENT_TTL =
10.minutes
CLOUD_PERSONA_TTL =
30.minutes

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.ransackable_associations(auth_object = nil) ⇒ Object



51
52
53
# File 'app/models/coplan/edit_session.rb', line 51

def self.ransackable_associations(auth_object = nil)
  %w[plan plan_version]
end

.ransackable_attributes(auth_object = nil) ⇒ Object



47
48
49
# File 'app/models/coplan/edit_session.rb', line 47

def self.ransackable_attributes(auth_object = nil)
  %w[id status actor_type actor_id plan_id base_revision created_at]
end

Instance Method Details

#active?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'app/models/coplan/edit_session.rb', line 26

def active?
  open? && (expires_at.nil? || expires_at > Time.current)
end

#add_operation(op) ⇒ Object



42
43
44
45
# File 'app/models/coplan/edit_session.rb', line 42

def add_operation(op)
  self.operations_json = operations_json + [op]
  save!
end

#committed?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'app/models/coplan/edit_session.rb', line 30

def committed?
  status == "committed"
end

#expired?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'app/models/coplan/edit_session.rb', line 34

def expired?
  open? && expires_at < Time.current
end

#has_operations?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'app/models/coplan/edit_session.rb', line 38

def has_operations?
  operations_json.present? && operations_json.any?
end

#open?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'app/models/coplan/edit_session.rb', line 22

def open?
  status == "open"
end