Class: Setting

Inherits:
RailsSettings::Base
  • Object
show all
Includes:
Models::Auditable
Defined in:
app/models/setting.rb

Overview

== Schema Information

Table name: settings
Database name: primary

id :bigint not null, primary key
value :text
var :string not null
created_at :datetime not null
updated_at :datetime not null

Indexes

index_settings_on_var (var) UNIQUE

Defined Under Namespace

Classes: SettingPermission

Constant Summary

Constants included from Models::Auditable

Models::Auditable::ALWAYS_IGNORED

Class Method Summary collapse

Methods included from Models::Auditable

#all_skipped_columns, #audit_reference_data, #creator, #should_not_save_version, #stamp_record, #updater

Class Method Details

.ai_visionActiveRecord::Relation<Setting>

A relation of Settings that are ai vision. Active Record Scope

Returns:

  • (ActiveRecord::Relation<Setting>)

See Also:



79
80
81
82
83
# File 'app/models/setting.rb', line 79

scope :ai_vision do
  field :ai_vision_model, type: :string
  field :ai_vision_max_tokens, type: :integer
  field :ai_vision_prompt, type: :string
end

.brand_voiceActiveRecord::Relation<Setting>

A relation of Settings that are brand voice. Active Record Scope

Returns:

  • (ActiveRecord::Relation<Setting>)

See Also:



88
89
90
91
92
93
# File 'app/models/setting.rb', line 88

scope :brand_voice do
  field :brand_voice_guidelines, type: :string
  field :brand_voice_examples, type: :string
  field :brand_voice_phrases_to_use, type: :array
  field :brand_voice_phrases_to_avoid, type: :array
end

.call_transcriptionActiveRecord::Relation<Setting>

A relation of Settings that are call transcription. Active Record Scope

Returns:

  • (ActiveRecord::Relation<Setting>)

See Also:



57
58
59
60
61
62
63
64
65
# File 'app/models/setting.rb', line 57

scope :call_transcription do
  field :call_transcription_lemur_system_prompt, type: :string
  field :call_transcription_lemur_analysis_prompt, type: :string
  field :call_transcription_lemur_model, type: :string
  field :call_transcription_lemur_max_tokens, type: :integer
  field :call_transcription_lemur_temperature, type: :float
  field :call_transcription_speech_model, type: :string
  field :call_transcription_keyterms, type: :array
end

.ip_in_switchvox_whitelist?(remote_ip) ⇒ Boolean

Check if an IP matches the whitelist (supports CIDR)
Returns true if whitelist is empty (no IP restriction configured)

Returns:

  • (Boolean)


119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'app/models/setting.rb', line 119

def self.ip_in_switchvox_whitelist?(remote_ip)
  whitelist = Array(switchvox_webhook_ips).compact_blank

  # Empty whitelist = no IP restriction, allow all
  return true if whitelist.empty?
  return false if remote_ip.blank?

  begin
    remote = IPAddr.new(remote_ip)
    whitelist.any? do |allowed|
      IPAddr.new(allowed.to_s.strip).include?(remote)
    rescue IPAddr::InvalidAddressError
      false
    end
  rescue IPAddr::InvalidAddressError
    false
  end
end

.permission_for(key) ⇒ Object

Helper method to create a permission check object



161
162
163
# File 'app/models/setting.rb', line 161

def self.permission_for(key)
  SettingPermission.new(key)
end

.phone_systemActiveRecord::Relation<Setting>

A relation of Settings that are phone system. Active Record Scope

Returns:

  • (ActiveRecord::Relation<Setting>)

See Also:



70
71
72
73
74
# File 'app/models/setting.rb', line 70

scope :phone_system do
  field :call_recording_twilio_enabled, type: :boolean
  field :call_recording_twilio_trunk_id, type: :string
  field :switchvox_webhook_ips, type: :array
end

.ransackable_associations(_auth_object = nil) ⇒ Object



146
147
148
# File 'app/models/setting.rb', line 146

def self.ransackable_associations(_auth_object = nil)
  []
end

.ransackable_attributes(_auth_object = nil) ⇒ Object

=============================================================================
Ransack & CanCanCan Configuration



142
143
144
# File 'app/models/setting.rb', line 142

def self.ransackable_attributes(_auth_object = nil)
  %w[created_at id updated_at value var]
end

.transcriptionActiveRecord::Relation<Setting>

A relation of Settings that are transcription. Active Record Scope

Returns:

  • (ActiveRecord::Relation<Setting>)

See Also:



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

scope :transcription do
  field :transcription_spelling_corrections, type: :hash
end

.validate_switchvox_webhook_ips(ip_list) ⇒ Object

Validate IP/CIDR format when setting switchvox_webhook_ips
Returns array of invalid entries, empty if all valid



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'app/models/setting.rb', line 101

def self.validate_switchvox_webhook_ips(ip_list)
  return [] if ip_list.blank?

  invalid = []
  Array(ip_list).each do |ip|
    next if ip.blank?

    begin
      IPAddr.new(ip.to_s.strip)
    rescue IPAddr::InvalidAddressError, IPAddr::AddressFamilyError
      invalid << ip
    end
  end
  invalid
end

.video_processingActiveRecord::Relation<Setting>

A relation of Settings that are video processing. Active Record Scope

Returns:

  • (ActiveRecord::Relation<Setting>)

See Also:



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'app/models/setting.rb', line 33

scope :video_processing do
  field :video_processing_transcription_keyterms_prompt, type: :array
  field :video_processing_transcription_spelling_corrections, type: :hash
  field :video_processing_seo_prompt, type: :string
  field :video_processing_seo_model, type: :string
  field :video_processing_seo_max_tokens, type: :integer
  field :video_processing_seo_temperature, type: :float
  field :video_processing_paragraph_system_prompt, type: :string
  field :video_processing_paragraph_user_prompt, type: :string
  field :video_processing_paragraph_model, type: :string
  field :video_processing_paragraph_max_tokens, type: :integer
  field :video_processing_paragraph_temperature, type: :float
  field :video_processing_polish_system_prompt, type: :string
  field :video_processing_polish_user_prompt, type: :string
  field :video_processing_translate_system_prompt, type: :string
  field :video_processing_translate_user_prompt, type: :string
  field :video_processing_llm_model, type: :string
  field :video_processing_llm_max_tokens, type: :integer
  field :video_processing_llm_temperature, type: :float
end