123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- class CreateChat < ActiveRecord::Migration
- def up
- create_table :chats do |t|
- t.string :name, limit: 250, null: true
- t.integer :max_queue, null: false, default: 5
- t.string :note, limit: 250, null: true
- t.boolean :active, null: false, default: true
- t.boolean :public, null: false, default: false
- t.string :preferences, limit: 5000, null: true
- t.integer :updated_by_id, null: false
- t.integer :created_by_id, null: false
- t.timestamps null: false
- end
- add_index :chats, [:name], unique: true
- create_table :chat_topics do |t|
- t.integer :chat_id, null: false
- t.string :name, limit: 250, null: false
- t.string :note, limit: 250, null: true
- t.integer :updated_by_id, null: false
- t.integer :created_by_id, null: false
- t.timestamps null: false
- end
- add_index :chat_topics, [:name], unique: true
- create_table :chat_sessions do |t|
- t.integer :chat_id, null: false
- t.string :session_id, null: false
- t.string :name, limit: 250, null: true
- t.string :state, limit: 50, null: false, default: 'waiting' # running, closed
- t.integer :user_id, null: true
- t.text :preferences, limit: 100.kilobytes + 1, null: true
- t.integer :updated_by_id, null: true
- t.integer :created_by_id, null: true
- t.timestamps null: false
- end
- add_index :chat_sessions, [:session_id]
- add_index :chat_sessions, [:state]
- add_index :chat_sessions, [:user_id]
- add_index :chat_sessions, [:chat_id]
- create_table :chat_messages do |t|
- t.integer :chat_session_id, null: false
- t.string :content, limit: 5000, null: false
- t.integer :created_by_id, null: true
- t.timestamps null: false
- end
- add_index :chat_messages, [:chat_session_id]
- create_table :chat_agents do |t|
- t.boolean :active, null: false, default: true
- t.integer :concurrent, null: false, default: 5
- t.integer :updated_by_id, null: false
- t.integer :created_by_id, null: false
- t.timestamps null: false
- end
- add_index :chat_agents, [:active]
- add_index :chat_agents, [:updated_by_id], unique: true
- add_index :chat_agents, [:created_by_id], unique: true
- # return if it's a new setup
- return if !Setting.find_by(name: 'system_init_done')
- Role.create_if_not_exists(
- name: 'Chat',
- note: 'Access to chat feature.',
- updated_by_id: 1,
- created_by_id: 1
- )
- chat = Chat.create(
- name: 'default',
- max_queue: 5,
- note: '',
- active: true,
- updated_by_id: 1,
- created_by_id: 1,
- )
- Scheduler.create_or_update(
- name: 'Closed chat sessions where participients are offline.',
- method: 'Chat.cleanup_close',
- period: 60 * 15,
- prio: 2,
- active: true,
- updated_by_id: 1,
- created_by_id: 1,
- )
- Scheduler.create_or_update(
- name: 'Cleanup closed sessions.',
- method: 'Chat.cleanup',
- period: 5.days,
- prio: 2,
- active: true,
- updated_by_id: 1,
- created_by_id: 1,
- )
- end
- def down
- drop_table :chat_topics
- drop_table :chat_sessions
- drop_table :chat_messages
- drop_table :chat_agents
- drop_table :chats
- end
- end
|