2022-01-01 13:38:12 +00:00
|
|
|
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
|
2021-06-01 12:20:20 +00:00
|
|
|
|
2017-09-08 08:28:34 +00:00
|
|
|
class CreateBase < ActiveRecord::Migration[4.2]
|
2012-04-10 14:06:46 +00:00
|
|
|
def up
|
2014-08-24 08:04:20 +00:00
|
|
|
|
2016-11-08 13:15:24 +00:00
|
|
|
# clear old caches to start from scratch
|
|
|
|
Cache.clear
|
|
|
|
|
2012-04-10 14:06:46 +00:00
|
|
|
create_table :sessions do |t|
|
2015-09-27 21:34:21 +00:00
|
|
|
t.string :session_id, null: false
|
2015-09-26 11:32:33 +00:00
|
|
|
t.boolean :persistent, null: true
|
2012-04-10 14:06:46 +00:00
|
|
|
t.text :data
|
2020-10-27 09:37:21 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2012-04-10 14:06:46 +00:00
|
|
|
end
|
|
|
|
add_index :sessions, :session_id
|
|
|
|
add_index :sessions, :updated_at
|
2015-09-26 11:32:33 +00:00
|
|
|
add_index :sessions, :persistent
|
2012-04-10 14:06:46 +00:00
|
|
|
|
|
|
|
create_table :users do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.references :organization, null: true
|
2017-01-19 14:52:10 +00:00
|
|
|
t.string :login, limit: 255, null: false
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :firstname, limit: 100, null: true, default: ''
|
|
|
|
t.string :lastname, limit: 100, null: true, default: ''
|
2017-01-19 14:52:10 +00:00
|
|
|
t.string :email, limit: 255, null: true, default: ''
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :image, limit: 100, null: true
|
|
|
|
t.string :image_source, limit: 200, null: true
|
|
|
|
t.string :web, limit: 100, null: true, default: ''
|
|
|
|
t.string :password, limit: 100, null: true
|
|
|
|
t.string :phone, limit: 100, null: true, default: ''
|
|
|
|
t.string :fax, limit: 100, null: true, default: ''
|
|
|
|
t.string :mobile, limit: 100, null: true, default: ''
|
|
|
|
t.string :department, limit: 200, null: true, default: ''
|
|
|
|
t.string :street, limit: 120, null: true, default: ''
|
|
|
|
t.string :zip, limit: 100, null: true, default: ''
|
|
|
|
t.string :city, limit: 100, null: true, default: ''
|
|
|
|
t.string :country, limit: 100, null: true, default: ''
|
2015-09-26 16:51:04 +00:00
|
|
|
t.string :address, limit: 500, null: true, default: ''
|
2015-07-01 08:50:42 +00:00
|
|
|
t.boolean :vip, default: false
|
|
|
|
t.boolean :verified, null: false, default: false
|
|
|
|
t.boolean :active, null: false, default: true
|
2017-10-02 18:28:27 +00:00
|
|
|
t.string :note, limit: 5000, null: true, default: ''
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamp :last_login, limit: 3, null: true
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :source, limit: 200, null: true
|
|
|
|
t.integer :login_failed, null: false, default: 0
|
2017-09-05 09:49:32 +00:00
|
|
|
t.boolean :out_of_office, null: false, default: false
|
|
|
|
t.date :out_of_office_start_at, null: true
|
|
|
|
t.date :out_of_office_end_at, null: true
|
|
|
|
t.integer :out_of_office_replacement_id, null: true
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :preferences, limit: 8000, null: true
|
|
|
|
t.integer :updated_by_id, null: false
|
|
|
|
t.integer :created_by_id, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2012-04-10 14:06:46 +00:00
|
|
|
end
|
2015-04-27 13:42:53 +00:00
|
|
|
add_index :users, [:login], unique: true
|
2012-04-10 14:06:46 +00:00
|
|
|
add_index :users, [:email]
|
2021-07-16 13:44:10 +00:00
|
|
|
# add_index :users, [:email], unique: => true
|
2015-06-30 14:44:23 +00:00
|
|
|
add_index :users, [:organization_id]
|
2014-12-17 15:40:59 +00:00
|
|
|
add_index :users, [:image]
|
2012-10-16 09:46:22 +00:00
|
|
|
add_index :users, [:department]
|
2012-04-10 14:06:46 +00:00
|
|
|
add_index :users, [:phone]
|
|
|
|
add_index :users, [:fax]
|
|
|
|
add_index :users, [:mobile]
|
2017-11-23 08:09:44 +00:00
|
|
|
add_index :users, %i[out_of_office out_of_office_start_at out_of_office_end_at], name: 'index_out_of_office'
|
2017-09-05 09:49:32 +00:00
|
|
|
add_index :users, [:out_of_office_replacement_id]
|
2012-04-10 14:06:46 +00:00
|
|
|
add_index :users, [:source]
|
|
|
|
add_index :users, [:created_by_id]
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :users, :users, column: :created_by_id
|
|
|
|
add_foreign_key :users, :users, column: :updated_by_id
|
2017-09-05 09:49:32 +00:00
|
|
|
add_foreign_key :users, :users, column: :out_of_office_replacement_id
|
2012-04-10 14:06:46 +00:00
|
|
|
|
2012-09-04 21:28:49 +00:00
|
|
|
create_table :signatures do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :name, limit: 100, null: false
|
2016-05-09 14:55:31 +00:00
|
|
|
t.text :body, limit: 10.megabytes + 1, null: true
|
2015-07-01 08:50:42 +00:00
|
|
|
t.boolean :active, null: false, default: true
|
|
|
|
t.string :note, limit: 250, null: true
|
|
|
|
t.integer :updated_by_id, null: false
|
|
|
|
t.integer :created_by_id, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2012-09-04 21:28:49 +00:00
|
|
|
end
|
2015-04-27 13:42:53 +00:00
|
|
|
add_index :signatures, [:name], unique: true
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :signatures, :users, column: :created_by_id
|
|
|
|
add_foreign_key :signatures, :users, column: :updated_by_id
|
2012-09-04 21:28:49 +00:00
|
|
|
|
2012-10-01 18:41:08 +00:00
|
|
|
create_table :email_addresses do |t|
|
2016-05-20 10:21:55 +00:00
|
|
|
t.integer :channel_id, null: true
|
|
|
|
t.string :realname, limit: 250, null: false
|
|
|
|
t.string :email, limit: 250, null: false
|
|
|
|
t.boolean :active, null: false, default: true
|
|
|
|
t.string :note, limit: 250, null: true
|
|
|
|
t.string :preferences, limit: 2000, null: true
|
|
|
|
t.integer :updated_by_id, null: false
|
|
|
|
t.integer :created_by_id, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2012-10-01 18:41:08 +00:00
|
|
|
end
|
2015-04-27 13:42:53 +00:00
|
|
|
add_index :email_addresses, [:email], unique: true
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :email_addresses, :users, column: :created_by_id
|
|
|
|
add_foreign_key :email_addresses, :users, column: :updated_by_id
|
2012-10-01 18:41:08 +00:00
|
|
|
|
2012-04-10 14:06:46 +00:00
|
|
|
create_table :groups do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.references :signature, null: true
|
|
|
|
t.references :email_address, null: true
|
|
|
|
t.string :name, limit: 160, null: false
|
|
|
|
t.integer :assignment_timeout, null: true
|
|
|
|
t.string :follow_up_possible, limit: 100, null: false, default: 'yes'
|
|
|
|
t.boolean :follow_up_assignment, null: false, default: true
|
|
|
|
t.boolean :active, null: false, default: true
|
|
|
|
t.string :note, limit: 250, null: true
|
|
|
|
t.integer :updated_by_id, null: false
|
|
|
|
t.integer :created_by_id, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2012-04-10 14:06:46 +00:00
|
|
|
end
|
2015-04-27 13:42:53 +00:00
|
|
|
add_index :groups, [:name], unique: true
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :groups, :signatures
|
|
|
|
add_foreign_key :groups, :email_addresses
|
|
|
|
add_foreign_key :groups, :users, column: :created_by_id
|
|
|
|
add_foreign_key :groups, :users, column: :updated_by_id
|
2012-04-10 14:06:46 +00:00
|
|
|
|
|
|
|
create_table :roles do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :name, limit: 100, null: false
|
2016-08-12 16:57:21 +00:00
|
|
|
t.text :preferences, limit: 500.kilobytes + 1, null: true
|
2016-08-12 16:39:09 +00:00
|
|
|
t.boolean :default_at_signup, null: true, default: false
|
2015-07-01 08:50:42 +00:00
|
|
|
t.boolean :active, null: false, default: true
|
|
|
|
t.string :note, limit: 250, null: true
|
|
|
|
t.integer :updated_by_id, null: false
|
|
|
|
t.integer :created_by_id, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2012-04-10 14:06:46 +00:00
|
|
|
end
|
2015-04-27 13:42:53 +00:00
|
|
|
add_index :roles, [:name], unique: true
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :roles, :users, column: :created_by_id
|
|
|
|
add_foreign_key :roles, :users, column: :updated_by_id
|
2012-04-10 14:06:46 +00:00
|
|
|
|
2016-08-12 16:39:09 +00:00
|
|
|
create_table :permissions do |t|
|
2020-10-07 12:05:07 +00:00
|
|
|
t.string :name, limit: 255, null: false
|
|
|
|
t.string :note, limit: 500, null: true
|
|
|
|
t.string :preferences, limit: 10_000, null: true
|
|
|
|
t.boolean :active, null: false, default: true
|
|
|
|
t.boolean :allow_signup, null: false, default: false
|
|
|
|
t.timestamps limit: 3, null: false
|
2016-08-12 16:39:09 +00:00
|
|
|
end
|
|
|
|
add_index :permissions, [:name], unique: true
|
|
|
|
|
|
|
|
create_table :permissions_roles, id: false do |t|
|
|
|
|
t.belongs_to :role, index: true
|
|
|
|
t.belongs_to :permission, index: true
|
|
|
|
end
|
|
|
|
|
2012-04-10 14:06:46 +00:00
|
|
|
create_table :organizations do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :name, limit: 100, null: false
|
|
|
|
t.boolean :shared, null: false, default: true
|
2016-11-13 22:59:39 +00:00
|
|
|
t.string :domain, limit: 250, null: true, default: ''
|
|
|
|
t.boolean :domain_assignment, null: false, default: false
|
2015-07-01 08:50:42 +00:00
|
|
|
t.boolean :active, null: false, default: true
|
2017-10-02 18:28:27 +00:00
|
|
|
t.string :note, limit: 5000, null: true, default: ''
|
2015-07-01 08:50:42 +00:00
|
|
|
t.integer :updated_by_id, null: false
|
|
|
|
t.integer :created_by_id, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2012-04-10 14:06:46 +00:00
|
|
|
end
|
2015-04-27 13:42:53 +00:00
|
|
|
add_index :organizations, [:name], unique: true
|
2016-11-13 22:59:39 +00:00
|
|
|
add_index :organizations, [:domain]
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :users, :organizations
|
|
|
|
add_foreign_key :organizations, :users, column: :created_by_id
|
|
|
|
add_foreign_key :organizations, :users, column: :updated_by_id
|
2012-04-10 14:06:46 +00:00
|
|
|
|
2015-04-27 13:42:53 +00:00
|
|
|
create_table :roles_users, id: false do |t|
|
2017-06-06 15:49:49 +00:00
|
|
|
t.references :user
|
|
|
|
t.references :role
|
2012-04-10 14:06:46 +00:00
|
|
|
end
|
2015-06-30 14:44:23 +00:00
|
|
|
add_index :roles_users, [:user_id]
|
|
|
|
add_index :roles_users, [:role_id]
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :roles_users, :users
|
|
|
|
add_foreign_key :roles_users, :roles
|
2014-06-01 08:31:52 +00:00
|
|
|
|
2015-04-27 13:42:53 +00:00
|
|
|
create_table :groups_users, id: false do |t|
|
2017-06-16 20:43:09 +00:00
|
|
|
t.references :user, null: false
|
|
|
|
t.references :group, null: false
|
|
|
|
t.string :access, limit: 50, null: false, default: 'full'
|
2012-04-10 14:06:46 +00:00
|
|
|
end
|
2015-06-30 14:44:23 +00:00
|
|
|
add_index :groups_users, [:user_id]
|
|
|
|
add_index :groups_users, [:group_id]
|
2017-06-16 20:43:09 +00:00
|
|
|
add_index :groups_users, [:access]
|
2022-01-31 13:56:58 +00:00
|
|
|
add_index :groups_users, %i[user_id group_id access]
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :groups_users, :users
|
|
|
|
add_foreign_key :groups_users, :groups
|
2012-04-10 14:06:46 +00:00
|
|
|
|
2017-06-16 20:43:09 +00:00
|
|
|
create_table :roles_groups, id: false do |t|
|
|
|
|
t.references :role, null: false
|
|
|
|
t.references :group, null: false
|
|
|
|
t.string :access, limit: 50, null: false, default: 'full'
|
|
|
|
end
|
|
|
|
add_index :roles_groups, [:role_id]
|
|
|
|
add_index :roles_groups, [:group_id]
|
|
|
|
add_index :roles_groups, [:access]
|
|
|
|
add_foreign_key :roles_groups, :roles
|
|
|
|
add_foreign_key :roles_groups, :groups
|
|
|
|
|
2015-04-27 13:42:53 +00:00
|
|
|
create_table :organizations_users, id: false do |t|
|
2017-06-06 15:49:49 +00:00
|
|
|
t.references :user
|
|
|
|
t.references :organization
|
2012-04-10 14:06:46 +00:00
|
|
|
end
|
2015-06-30 14:44:23 +00:00
|
|
|
add_index :organizations_users, [:user_id]
|
|
|
|
add_index :organizations_users, [:organization_id]
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :organizations_users, :users
|
|
|
|
add_foreign_key :organizations_users, :organizations
|
2012-04-10 14:06:46 +00:00
|
|
|
|
|
|
|
create_table :authorizations do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :provider, limit: 250, null: false
|
|
|
|
t.string :uid, limit: 250, null: false
|
2017-12-13 17:38:21 +00:00
|
|
|
t.string :token, limit: 2500, null: true
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :secret, limit: 250, null: true
|
|
|
|
t.string :username, limit: 250, null: true
|
2015-04-27 13:42:53 +00:00
|
|
|
t.references :user, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2012-04-10 14:06:46 +00:00
|
|
|
end
|
2020-04-14 08:14:14 +00:00
|
|
|
add_index :authorizations, %i[uid provider], unique: true
|
2012-04-10 14:06:46 +00:00
|
|
|
add_index :authorizations, [:user_id]
|
|
|
|
add_index :authorizations, [:username]
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :authorizations, :users
|
2012-04-10 14:06:46 +00:00
|
|
|
|
2015-07-01 08:50:42 +00:00
|
|
|
create_table :locales do |t|
|
|
|
|
t.string :locale, limit: 20, null: false
|
|
|
|
t.string :alias, limit: 20, null: true
|
|
|
|
t.string :name, limit: 255, null: false
|
2017-06-26 13:16:03 +00:00
|
|
|
t.string :dir, limit: 9, null: false, default: 'ltr'
|
2015-07-01 08:50:42 +00:00
|
|
|
t.boolean :active, null: false, default: true
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2015-07-01 08:50:42 +00:00
|
|
|
end
|
|
|
|
add_index :locales, [:locale], unique: true
|
|
|
|
add_index :locales, [:name], unique: true
|
|
|
|
|
2012-11-06 21:43:13 +00:00
|
|
|
create_table :translations do |t|
|
2021-11-26 07:08:02 +00:00
|
|
|
t.string :locale, limit: 10, null: false
|
|
|
|
t.string :source, limit: 3000, null: false
|
|
|
|
t.string :target, limit: 3000, null: false
|
|
|
|
t.string :target_initial, limit: 3000, null: false
|
|
|
|
t.boolean :is_synchronized_from_codebase, null: false, default: false
|
2021-11-15 15:58:19 +00:00
|
|
|
t.string :synchronized_from_translation_file, limit: 255
|
2021-11-26 07:08:02 +00:00
|
|
|
t.integer :updated_by_id, null: false
|
|
|
|
t.integer :created_by_id, null: false
|
|
|
|
t.timestamps limit: 3, null: false
|
2012-11-06 21:43:13 +00:00
|
|
|
end
|
2016-08-17 07:38:04 +00:00
|
|
|
add_index :translations, [:source], length: 255
|
2012-11-06 21:43:13 +00:00
|
|
|
add_index :translations, [:locale]
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :translations, :users, column: :created_by_id
|
|
|
|
add_foreign_key :translations, :users, column: :updated_by_id
|
2012-11-06 21:43:13 +00:00
|
|
|
|
2014-08-24 00:10:00 +00:00
|
|
|
create_table :object_lookups do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :name, limit: 250, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2014-08-24 00:10:00 +00:00
|
|
|
end
|
2015-07-01 08:50:42 +00:00
|
|
|
add_index :object_lookups, [:name], unique: true
|
2014-08-24 08:04:20 +00:00
|
|
|
|
|
|
|
create_table :type_lookups do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :name, limit: 250, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2014-08-24 08:04:20 +00:00
|
|
|
end
|
2015-04-27 13:42:53 +00:00
|
|
|
add_index :type_lookups, [:name], unique: true
|
2014-08-24 08:04:20 +00:00
|
|
|
|
2014-12-17 15:19:18 +00:00
|
|
|
create_table :tokens do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.references :user, null: false
|
|
|
|
t.boolean :persistent
|
|
|
|
t.string :name, limit: 100, null: false
|
|
|
|
t.string :action, limit: 40, null: false
|
2016-07-28 10:09:32 +00:00
|
|
|
t.string :label, limit: 255, null: true
|
2016-08-12 16:57:21 +00:00
|
|
|
t.text :preferences, limit: 500.kilobytes + 1, null: true
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamp :last_used_at, limit: 3, null: true
|
2016-08-30 14:26:27 +00:00
|
|
|
t.date :expires_at, null: true
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2014-12-17 15:19:18 +00:00
|
|
|
end
|
|
|
|
add_index :tokens, :user_id
|
2017-11-23 08:09:44 +00:00
|
|
|
add_index :tokens, %i[name action], unique: true
|
2014-12-17 15:19:18 +00:00
|
|
|
add_index :tokens, :created_at
|
2015-09-26 15:14:42 +00:00
|
|
|
add_index :tokens, :persistent
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :tokens, :users
|
2014-12-17 15:19:18 +00:00
|
|
|
|
|
|
|
create_table :packages do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :name, limit: 250, null: false
|
|
|
|
t.string :version, limit: 50, null: false
|
|
|
|
t.string :vendor, limit: 150, null: false
|
|
|
|
t.string :state, limit: 50, null: false
|
|
|
|
t.integer :updated_by_id, null: false
|
|
|
|
t.integer :created_by_id, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2014-12-17 15:19:18 +00:00
|
|
|
end
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :packages, :users, column: :created_by_id
|
|
|
|
add_foreign_key :packages, :users, column: :updated_by_id
|
|
|
|
|
2014-12-17 15:19:18 +00:00
|
|
|
create_table :package_migrations do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :name, limit: 250, null: false
|
|
|
|
t.string :version, limit: 250, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2014-12-17 15:19:18 +00:00
|
|
|
end
|
|
|
|
|
2014-12-17 15:40:59 +00:00
|
|
|
create_table :taskbars do |t|
|
2017-06-06 15:49:49 +00:00
|
|
|
t.references :user, null: false
|
2020-10-27 09:37:21 +00:00
|
|
|
t.datetime :last_contact, null: false, limit: 3
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :client_id, null: false
|
|
|
|
t.string :key, limit: 100, null: false
|
|
|
|
t.string :callback, limit: 100, null: false
|
2016-09-21 17:38:32 +00:00
|
|
|
t.text :state, limit: 20.megabytes + 1, null: true
|
2017-01-04 14:40:19 +00:00
|
|
|
t.text :preferences, limit: 5.megabytes + 1, null: true
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :params, limit: 2000, null: true
|
|
|
|
t.integer :prio, null: false
|
|
|
|
t.boolean :notify, null: false, default: false
|
|
|
|
t.boolean :active, null: false, default: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2014-12-17 15:40:59 +00:00
|
|
|
end
|
|
|
|
add_index :taskbars, [:user_id]
|
|
|
|
add_index :taskbars, [:client_id]
|
2017-01-04 14:40:19 +00:00
|
|
|
add_index :taskbars, [:key]
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :taskbars, :users
|
2014-12-17 15:19:18 +00:00
|
|
|
|
|
|
|
create_table :tag_objects do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :name, limit: 250, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2014-12-17 15:19:18 +00:00
|
|
|
end
|
2015-07-01 08:50:42 +00:00
|
|
|
add_index :tag_objects, [:name], unique: true
|
2014-12-17 15:19:18 +00:00
|
|
|
|
|
|
|
create_table :tag_items do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :name, limit: 250, null: false
|
2016-06-02 06:58:10 +00:00
|
|
|
t.string :name_downcase, limit: 250, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2014-12-17 15:19:18 +00:00
|
|
|
end
|
2016-06-02 06:58:10 +00:00
|
|
|
add_index :tag_items, [:name_downcase]
|
2014-12-17 15:19:18 +00:00
|
|
|
|
2017-06-06 15:49:49 +00:00
|
|
|
create_table :tags do |t|
|
|
|
|
t.references :tag_item, null: false
|
|
|
|
t.references :tag_object, null: false
|
|
|
|
t.integer :o_id, null: false
|
|
|
|
t.integer :created_by_id, null: false
|
|
|
|
t.timestamps limit: 3, null: false
|
|
|
|
end
|
|
|
|
add_index :tags, [:o_id]
|
|
|
|
add_index :tags, [:tag_object_id]
|
|
|
|
add_foreign_key :tags, :tag_items
|
|
|
|
add_foreign_key :tags, :tag_objects
|
|
|
|
add_foreign_key :tags, :users, column: :created_by_id
|
|
|
|
|
2014-12-17 15:40:59 +00:00
|
|
|
create_table :recent_views do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.references :recent_view_object, null: false
|
|
|
|
t.integer :o_id, null: false
|
|
|
|
t.integer :created_by_id, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2014-12-17 15:40:59 +00:00
|
|
|
end
|
|
|
|
add_index :recent_views, [:o_id]
|
|
|
|
add_index :recent_views, [:created_by_id]
|
|
|
|
add_index :recent_views, [:created_at]
|
|
|
|
add_index :recent_views, [:recent_view_object_id]
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :recent_views, :object_lookups, column: :recent_view_object_id
|
|
|
|
add_foreign_key :recent_views, :users, column: :created_by_id
|
2014-12-17 15:40:59 +00:00
|
|
|
|
|
|
|
create_table :activity_streams do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.references :activity_stream_type, null: false
|
|
|
|
t.references :activity_stream_object, null: false
|
2016-08-12 16:39:09 +00:00
|
|
|
t.references :permission, null: true
|
2015-07-01 08:50:42 +00:00
|
|
|
t.references :group, null: true
|
|
|
|
t.integer :o_id, null: false
|
|
|
|
t.integer :created_by_id, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2014-12-17 15:40:59 +00:00
|
|
|
end
|
|
|
|
add_index :activity_streams, [:o_id]
|
|
|
|
add_index :activity_streams, [:created_by_id]
|
2016-08-12 16:39:09 +00:00
|
|
|
add_index :activity_streams, [:permission_id]
|
2019-04-07 15:23:03 +00:00
|
|
|
add_index :activity_streams, %i[permission_id group_id]
|
|
|
|
add_index :activity_streams, %i[permission_id group_id created_at], name: 'index_activity_streams_on_permission_id_group_id_created_at'
|
2014-12-17 15:40:59 +00:00
|
|
|
add_index :activity_streams, [:group_id]
|
|
|
|
add_index :activity_streams, [:created_at]
|
|
|
|
add_index :activity_streams, [:activity_stream_object_id]
|
|
|
|
add_index :activity_streams, [:activity_stream_type_id]
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :activity_streams, :type_lookups, column: :activity_stream_type_id
|
|
|
|
add_foreign_key :activity_streams, :object_lookups, column: :activity_stream_object_id
|
|
|
|
add_foreign_key :activity_streams, :permissions
|
|
|
|
add_foreign_key :activity_streams, :groups
|
|
|
|
add_foreign_key :activity_streams, :users, column: :created_by_id
|
|
|
|
|
|
|
|
create_table :history_types do |t|
|
|
|
|
t.string :name, limit: 250, null: false
|
|
|
|
t.timestamps limit: 3, null: false
|
|
|
|
end
|
|
|
|
add_index :history_types, [:name], unique: true
|
|
|
|
|
|
|
|
create_table :history_objects do |t|
|
|
|
|
t.string :name, limit: 250, null: false
|
|
|
|
t.string :note, limit: 250, null: true
|
|
|
|
t.timestamps limit: 3, null: false
|
|
|
|
end
|
|
|
|
add_index :history_objects, [:name], unique: true
|
|
|
|
|
|
|
|
create_table :history_attributes do |t|
|
|
|
|
t.string :name, limit: 250, null: false
|
|
|
|
t.timestamps limit: 3, null: false
|
|
|
|
end
|
|
|
|
add_index :history_attributes, [:name], unique: true
|
2014-12-17 15:40:59 +00:00
|
|
|
|
2014-12-17 21:59:03 +00:00
|
|
|
create_table :histories do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.references :history_type, null: false
|
|
|
|
t.references :history_object, null: false
|
|
|
|
t.references :history_attribute, null: true
|
|
|
|
t.integer :o_id, null: false
|
|
|
|
t.integer :related_o_id, null: true
|
|
|
|
t.integer :related_history_object_id, null: true
|
|
|
|
t.integer :id_to, null: true
|
|
|
|
t.integer :id_from, null: true
|
2015-12-12 22:32:25 +00:00
|
|
|
t.string :value_from, limit: 500, null: true
|
|
|
|
t.string :value_to, limit: 500, null: true
|
2015-07-01 08:50:42 +00:00
|
|
|
t.integer :created_by_id, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2014-12-17 21:59:03 +00:00
|
|
|
end
|
|
|
|
add_index :histories, [:o_id]
|
|
|
|
add_index :histories, [:created_by_id]
|
|
|
|
add_index :histories, [:created_at]
|
|
|
|
add_index :histories, [:history_object_id]
|
|
|
|
add_index :histories, [:history_attribute_id]
|
|
|
|
add_index :histories, [:history_type_id]
|
|
|
|
add_index :histories, [:id_to]
|
|
|
|
add_index :histories, [:id_from]
|
2015-12-12 22:32:25 +00:00
|
|
|
add_index :histories, [:value_from], length: 255
|
|
|
|
add_index :histories, [:value_to], length: 255
|
2018-12-01 12:02:06 +00:00
|
|
|
add_index :histories, [:related_o_id]
|
|
|
|
add_index :histories, [:related_history_object_id]
|
|
|
|
add_index :histories, %i[o_id history_object_id related_o_id]
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :histories, :history_types
|
|
|
|
add_foreign_key :histories, :history_objects
|
|
|
|
add_foreign_key :histories, :history_attributes
|
|
|
|
add_foreign_key :histories, :users, column: :created_by_id
|
2014-12-17 21:59:03 +00:00
|
|
|
|
|
|
|
create_table :settings do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :title, limit: 200, null: false
|
|
|
|
t.string :name, limit: 200, null: false
|
|
|
|
t.string :area, limit: 100, null: false
|
|
|
|
t.string :description, limit: 2000, null: false
|
2021-05-28 11:28:06 +00:00
|
|
|
t.text :options, null: true
|
2016-08-16 00:14:36 +00:00
|
|
|
t.text :state_current, limit: 200.kilobytes + 1, null: true
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :state_initial, limit: 2000, null: true
|
|
|
|
t.boolean :frontend, null: false
|
2016-08-16 00:10:41 +00:00
|
|
|
t.text :preferences, limit: 200.kilobytes + 1, null: true
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2014-12-17 21:59:03 +00:00
|
|
|
end
|
2015-04-27 13:42:53 +00:00
|
|
|
add_index :settings, [:name], unique: true
|
2014-12-17 21:59:03 +00:00
|
|
|
add_index :settings, [:area]
|
|
|
|
add_index :settings, [:frontend]
|
2014-12-17 15:40:59 +00:00
|
|
|
|
2015-07-01 01:08:01 +00:00
|
|
|
create_table :store_objects do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :name, limit: 250, null: false
|
|
|
|
t.string :note, limit: 250, null: true
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2015-07-01 01:08:01 +00:00
|
|
|
end
|
2015-07-01 08:50:42 +00:00
|
|
|
add_index :store_objects, [:name], unique: true
|
2015-07-01 01:08:01 +00:00
|
|
|
|
|
|
|
create_table :store_files do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :sha, limit: 128, null: false
|
|
|
|
t.string :provider, limit: 20, null: true
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2015-07-01 01:08:01 +00:00
|
|
|
end
|
2015-07-01 08:50:42 +00:00
|
|
|
add_index :store_files, [:sha], unique: true
|
2015-07-01 01:08:01 +00:00
|
|
|
add_index :store_files, [:provider]
|
|
|
|
|
2017-06-06 15:49:49 +00:00
|
|
|
create_table :stores do |t|
|
|
|
|
t.references :store_object, null: false
|
|
|
|
t.references :store_file, null: false
|
|
|
|
t.integer :o_id, limit: 8, null: false
|
|
|
|
t.string :preferences, limit: 2500, null: true
|
|
|
|
t.string :size, limit: 50, null: true
|
|
|
|
t.string :filename, limit: 250, null: false
|
|
|
|
t.integer :created_by_id, null: false
|
|
|
|
t.timestamps limit: 3, null: false
|
|
|
|
end
|
2017-11-23 08:09:44 +00:00
|
|
|
add_index :stores, %i[store_object_id o_id]
|
2019-04-07 15:23:03 +00:00
|
|
|
add_index :stores, %i[store_file_id]
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :stores, :store_objects
|
|
|
|
add_foreign_key :stores, :store_files
|
|
|
|
add_foreign_key :stores, :users, column: :created_by_id
|
|
|
|
|
2015-07-01 01:08:01 +00:00
|
|
|
create_table :store_provider_dbs do |t|
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :sha, limit: 128, null: false
|
|
|
|
t.binary :data, limit: 200.megabytes, null: true
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2015-07-01 08:50:42 +00:00
|
|
|
end
|
|
|
|
add_index :store_provider_dbs, [:sha], unique: true
|
|
|
|
|
|
|
|
create_table :avatars do |t|
|
|
|
|
t.integer :o_id, null: false
|
|
|
|
t.integer :object_lookup_id, null: false
|
|
|
|
t.boolean :default, null: false, default: false
|
|
|
|
t.boolean :deletable, null: false, default: true
|
|
|
|
t.boolean :initial, null: false, default: false
|
|
|
|
t.integer :store_full_id, null: true
|
|
|
|
t.integer :store_resize_id, null: true
|
|
|
|
t.string :store_hash, limit: 32, null: true
|
|
|
|
t.string :source, limit: 100, null: false
|
|
|
|
t.string :source_url, limit: 512, null: true
|
|
|
|
t.integer :updated_by_id, null: false
|
|
|
|
t.integer :created_by_id, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2015-07-01 01:08:01 +00:00
|
|
|
end
|
2017-11-23 08:09:44 +00:00
|
|
|
add_index :avatars, %i[o_id object_lookup_id]
|
2015-07-01 08:50:42 +00:00
|
|
|
add_index :avatars, [:store_hash]
|
|
|
|
add_index :avatars, [:source]
|
|
|
|
add_index :avatars, [:default]
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :avatars, :users, column: :created_by_id
|
|
|
|
add_foreign_key :avatars, :users, column: :updated_by_id
|
2015-07-01 08:50:42 +00:00
|
|
|
|
|
|
|
create_table :online_notifications do |t|
|
|
|
|
t.integer :o_id, null: false
|
|
|
|
t.integer :object_lookup_id, null: false
|
|
|
|
t.integer :type_lookup_id, null: false
|
|
|
|
t.integer :user_id, null: false
|
|
|
|
t.boolean :seen, null: false, default: false
|
2016-02-21 11:43:16 +00:00
|
|
|
t.integer :updated_by_id, null: false
|
2015-07-01 08:50:42 +00:00
|
|
|
t.integer :created_by_id, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2015-07-01 08:50:42 +00:00
|
|
|
end
|
|
|
|
add_index :online_notifications, [:user_id]
|
2015-09-26 15:14:42 +00:00
|
|
|
add_index :online_notifications, [:seen]
|
|
|
|
add_index :online_notifications, [:created_at]
|
|
|
|
add_index :online_notifications, [:updated_at]
|
2018-05-08 10:10:19 +00:00
|
|
|
add_foreign_key :online_notifications, :users
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :online_notifications, :users, column: :created_by_id
|
|
|
|
add_foreign_key :online_notifications, :users, column: :updated_by_id
|
2015-09-26 15:14:42 +00:00
|
|
|
|
|
|
|
create_table :schedulers do |t|
|
2016-09-12 06:56:14 +00:00
|
|
|
t.string :name, limit: 250, null: false
|
|
|
|
t.string :method, limit: 250, null: false
|
|
|
|
t.integer :period, null: true
|
|
|
|
t.integer :running, null: false, default: false
|
|
|
|
t.timestamp :last_run, limit: 3, null: true
|
|
|
|
t.integer :prio, null: false
|
|
|
|
t.string :pid, limit: 250, null: true
|
|
|
|
t.string :note, limit: 250, null: true
|
2017-09-07 13:50:46 +00:00
|
|
|
t.string :error_message, null: true
|
|
|
|
t.string :status, null: true
|
2016-09-12 06:56:14 +00:00
|
|
|
t.boolean :active, null: false, default: false
|
|
|
|
t.integer :updated_by_id, null: false
|
|
|
|
t.integer :created_by_id, null: false
|
|
|
|
t.timestamps limit: 3, null: false
|
2015-09-26 15:14:42 +00:00
|
|
|
end
|
|
|
|
add_index :schedulers, [:name], unique: true
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :schedulers, :users, column: :created_by_id
|
|
|
|
add_foreign_key :schedulers, :users, column: :updated_by_id
|
2015-07-01 08:50:42 +00:00
|
|
|
|
2016-05-20 10:21:55 +00:00
|
|
|
create_table :calendars do |t|
|
2016-09-12 06:56:14 +00:00
|
|
|
t.string :name, limit: 250, null: true
|
|
|
|
t.string :timezone, limit: 250, null: true
|
2016-07-19 20:15:49 +00:00
|
|
|
t.string :business_hours, limit: 3000, null: true
|
2016-09-12 06:56:14 +00:00
|
|
|
t.boolean :default, null: false, default: false
|
|
|
|
t.string :ical_url, limit: 500, null: true
|
2016-05-20 10:21:55 +00:00
|
|
|
t.text :public_holidays, limit: 500.kilobytes + 1, null: true
|
|
|
|
t.text :last_log, limit: 500.kilobytes + 1, null: true
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamp :last_sync, limit: 3, null: true
|
|
|
|
t.integer :updated_by_id, null: false
|
|
|
|
t.integer :created_by_id, null: false
|
|
|
|
t.timestamps limit: 3, null: false
|
2016-05-20 10:21:55 +00:00
|
|
|
end
|
|
|
|
add_index :calendars, [:name], unique: true
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :calendars, :users, column: :created_by_id
|
|
|
|
add_foreign_key :calendars, :users, column: :updated_by_id
|
2016-05-20 10:21:55 +00:00
|
|
|
|
2015-09-26 15:41:21 +00:00
|
|
|
create_table :user_devices do |t|
|
|
|
|
t.references :user, null: false
|
|
|
|
t.string :name, limit: 250, null: false
|
|
|
|
t.string :os, limit: 150, null: true
|
|
|
|
t.string :browser, limit: 250, null: true
|
|
|
|
t.string :location, limit: 150, null: true
|
|
|
|
t.string :device_details, limit: 2500, null: true
|
|
|
|
t.string :location_details, limit: 2500, null: true
|
|
|
|
t.string :fingerprint, limit: 160, null: true
|
|
|
|
t.string :user_agent, limit: 250, null: true
|
|
|
|
t.string :ip, limit: 160, null: true
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2015-09-26 15:41:21 +00:00
|
|
|
end
|
|
|
|
add_index :user_devices, [:user_id]
|
2017-11-23 08:09:44 +00:00
|
|
|
add_index :user_devices, %i[os browser location]
|
2015-09-26 15:41:21 +00:00
|
|
|
add_index :user_devices, [:fingerprint]
|
|
|
|
add_index :user_devices, [:updated_at]
|
|
|
|
add_index :user_devices, [:created_at]
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :user_devices, :users
|
2015-09-26 15:41:21 +00:00
|
|
|
|
2016-05-20 10:21:55 +00:00
|
|
|
create_table :external_credentials do |t|
|
|
|
|
t.string :name
|
|
|
|
t.string :credentials, limit: 2500, null: false
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2016-05-20 10:21:55 +00:00
|
|
|
end
|
|
|
|
|
2015-09-27 11:18:04 +00:00
|
|
|
create_table :object_manager_attributes do |t|
|
2016-09-12 06:56:14 +00:00
|
|
|
t.references :object_lookup, null: false
|
|
|
|
t.string :name, limit: 200, null: false
|
|
|
|
t.string :display, limit: 200, null: false
|
|
|
|
t.string :data_type, limit: 100, null: false
|
2017-06-20 15:08:59 +00:00
|
|
|
t.text :data_option, limit: 800.kilobytes + 1, null: true
|
|
|
|
t.text :data_option_new, limit: 800.kilobytes + 1, null: true
|
2016-09-12 06:56:14 +00:00
|
|
|
t.boolean :editable, null: false, default: true
|
|
|
|
t.boolean :active, null: false, default: true
|
|
|
|
t.string :screens, limit: 2000, null: true
|
|
|
|
t.boolean :to_create, null: false, default: false
|
|
|
|
t.boolean :to_migrate, null: false, default: false
|
|
|
|
t.boolean :to_delete, null: false, default: false
|
|
|
|
t.boolean :to_config, null: false, default: false
|
|
|
|
t.integer :position, null: false
|
|
|
|
t.integer :created_by_id, null: false
|
|
|
|
t.integer :updated_by_id, null: false
|
|
|
|
t.timestamps limit: 3, null: false
|
2015-09-27 11:18:04 +00:00
|
|
|
end
|
2017-11-23 08:09:44 +00:00
|
|
|
add_index :object_manager_attributes, %i[object_lookup_id name], unique: true
|
2015-09-27 11:18:04 +00:00
|
|
|
add_index :object_manager_attributes, [:object_lookup_id]
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :object_manager_attributes, :object_lookups
|
|
|
|
add_foreign_key :object_manager_attributes, :users, column: :created_by_id
|
|
|
|
add_foreign_key :object_manager_attributes, :users, column: :updated_by_id
|
2015-09-27 11:18:04 +00:00
|
|
|
|
2015-07-01 08:50:42 +00:00
|
|
|
create_table :delayed_jobs, force: true do |t|
|
2020-10-27 09:37:21 +00:00
|
|
|
t.integer :priority, default: 0 # Allows some jobs to jump to the front of the queue
|
|
|
|
t.integer :attempts, default: 0 # Provides for retries, but still fail eventually.
|
2015-07-01 08:50:42 +00:00
|
|
|
t.text :handler # YAML-encoded string of the object that will do work
|
|
|
|
t.text :last_error # reason for last failure (See Note below)
|
2020-10-27 09:37:21 +00:00
|
|
|
t.datetime :run_at, limit: 3 # When to run. Could be Time.zone.now for immediately, or sometime in the future.
|
|
|
|
t.datetime :locked_at, limit: 3 # Set when a client is working on this object
|
|
|
|
t.datetime :failed_at, limit: 3 # Set when all retries have failed (actually, by default, the record is deleted instead)
|
2015-07-01 08:50:42 +00:00
|
|
|
t.string :locked_by # Who is working on this object (if locked)
|
|
|
|
t.string :queue # The name of the queue this job is in
|
2016-09-12 06:56:14 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2015-07-01 08:50:42 +00:00
|
|
|
end
|
|
|
|
|
2017-11-23 08:09:44 +00:00
|
|
|
add_index :delayed_jobs, %i[priority run_at], name: 'delayed_jobs_priority'
|
2015-07-01 01:08:01 +00:00
|
|
|
|
2016-10-19 03:20:00 +00:00
|
|
|
create_table :external_syncs do |t|
|
|
|
|
t.string :source, limit: 100, null: false
|
|
|
|
t.string :source_id, limit: 200, null: false
|
|
|
|
t.string :object, limit: 100, null: false
|
|
|
|
t.integer :o_id, null: false
|
|
|
|
t.text :last_payload, limit: 500.kilobytes + 1, null: true
|
|
|
|
t.timestamps limit: 3, null: false
|
|
|
|
end
|
2017-11-23 08:09:44 +00:00
|
|
|
add_index :external_syncs, %i[source source_id], unique: true
|
|
|
|
add_index :external_syncs, %i[source source_id object o_id], name: 'index_external_syncs_on_source_and_source_id_and_object_o_id'
|
|
|
|
add_index :external_syncs, %i[object o_id]
|
2016-10-19 03:20:00 +00:00
|
|
|
|
2017-04-19 10:09:54 +00:00
|
|
|
create_table :import_jobs do |t|
|
|
|
|
t.string :name, limit: 250, null: false
|
|
|
|
|
|
|
|
t.boolean :dry_run, default: false
|
|
|
|
|
|
|
|
t.text :payload, limit: 80_000
|
|
|
|
t.text :result, limit: 80_000
|
|
|
|
|
2020-10-27 09:37:21 +00:00
|
|
|
t.datetime :started_at, limit: 3
|
|
|
|
t.datetime :finished_at, limit: 3
|
2017-04-19 10:09:54 +00:00
|
|
|
|
2020-10-27 09:37:21 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
2017-04-19 10:09:54 +00:00
|
|
|
end
|
|
|
|
|
2016-10-19 03:20:00 +00:00
|
|
|
create_table :cti_logs do |t|
|
|
|
|
t.string :direction, limit: 20, null: false
|
|
|
|
t.string :state, limit: 20, null: false
|
|
|
|
t.string :from, limit: 100, null: false
|
|
|
|
t.string :from_comment, limit: 250, null: true
|
|
|
|
t.string :to, limit: 100, null: false
|
|
|
|
t.string :to_comment, limit: 250, null: true
|
2018-08-09 21:06:34 +00:00
|
|
|
t.string :queue, limit: 250, null: true
|
2016-10-19 03:20:00 +00:00
|
|
|
t.string :call_id, limit: 250, null: false
|
|
|
|
t.string :comment, limit: 500, null: true
|
2018-08-09 21:06:34 +00:00
|
|
|
t.timestamp :initialized_at, limit: 3, null: true
|
|
|
|
t.timestamp :start_at, limit: 3, null: true
|
|
|
|
t.timestamp :end_at, limit: 3, null: true
|
|
|
|
t.integer :duration_waiting_time, null: true
|
|
|
|
t.integer :duration_talking_time, null: true
|
2016-10-19 03:20:00 +00:00
|
|
|
t.boolean :done, null: false, default: true
|
|
|
|
t.text :preferences, limit: 500.kilobytes + 1, null: true
|
|
|
|
t.timestamps limit: 3, null: false
|
|
|
|
end
|
|
|
|
add_index :cti_logs, [:call_id], unique: true
|
|
|
|
add_index :cti_logs, [:direction]
|
|
|
|
add_index :cti_logs, [:from]
|
|
|
|
|
|
|
|
create_table :cti_caller_ids do |t|
|
2017-06-06 15:49:49 +00:00
|
|
|
t.string :caller_id, limit: 100, null: false
|
|
|
|
t.string :comment, limit: 500, null: true
|
|
|
|
t.string :level, limit: 100, null: false
|
|
|
|
t.string :object, limit: 100, null: false
|
|
|
|
t.integer :o_id, null: false
|
|
|
|
t.references :user, null: true
|
|
|
|
t.text :preferences, limit: 500.kilobytes + 1, null: true
|
2016-10-19 03:20:00 +00:00
|
|
|
t.timestamps limit: 3, null: false
|
|
|
|
end
|
|
|
|
add_index :cti_caller_ids, [:caller_id]
|
2017-11-23 08:09:44 +00:00
|
|
|
add_index :cti_caller_ids, %i[caller_id level]
|
|
|
|
add_index :cti_caller_ids, %i[caller_id user_id]
|
|
|
|
add_index :cti_caller_ids, %i[object o_id]
|
2019-04-07 15:23:03 +00:00
|
|
|
add_index :cti_caller_ids, %i[object o_id level user_id caller_id], name: 'index_cti_caller_ids_on_object_o_id_level_user_id_caller_id'
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :cti_caller_ids, :users
|
2016-10-19 03:20:00 +00:00
|
|
|
|
|
|
|
create_table :stats_stores do |t|
|
2020-10-06 13:13:50 +00:00
|
|
|
t.references :stats_storable, polymorphic: true, index: true
|
2016-10-19 03:20:00 +00:00
|
|
|
t.string :key, limit: 250, null: true
|
2016-11-17 08:56:43 +00:00
|
|
|
t.string :data, limit: 5000, null: true
|
2016-10-19 03:20:00 +00:00
|
|
|
t.integer :created_by_id, null: false
|
|
|
|
t.timestamps limit: 3, null: false
|
|
|
|
end
|
|
|
|
add_index :stats_stores, [:key]
|
|
|
|
add_index :stats_stores, [:created_by_id]
|
|
|
|
add_index :stats_stores, [:created_at]
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :stats_stores, :users, column: :created_by_id
|
2016-10-19 03:20:00 +00:00
|
|
|
|
|
|
|
create_table :http_logs do |t|
|
|
|
|
t.column :direction, :string, limit: 20, null: false
|
|
|
|
t.column :facility, :string, limit: 100, null: false
|
|
|
|
t.column :method, :string, limit: 100, null: false
|
|
|
|
t.column :url, :string, limit: 255, null: false
|
|
|
|
t.column :status, :string, limit: 20, null: true
|
|
|
|
t.column :ip, :string, limit: 50, null: true
|
|
|
|
t.column :request, :string, limit: 10_000, null: false
|
|
|
|
t.column :response, :string, limit: 10_000, null: false
|
|
|
|
t.column :updated_by_id, :integer, null: true
|
|
|
|
t.column :created_by_id, :integer, null: true
|
|
|
|
t.timestamps limit: 3, null: false
|
|
|
|
end
|
|
|
|
add_index :http_logs, [:facility]
|
|
|
|
add_index :http_logs, [:created_by_id]
|
|
|
|
add_index :http_logs, [:created_at]
|
2017-06-06 15:49:49 +00:00
|
|
|
add_foreign_key :http_logs, :users, column: :created_by_id
|
|
|
|
add_foreign_key :http_logs, :users, column: :updated_by_id
|
2019-11-13 07:03:47 +00:00
|
|
|
|
|
|
|
create_table :active_job_locks do |t|
|
|
|
|
t.string :lock_key
|
|
|
|
t.string :active_job_id
|
|
|
|
|
2020-10-27 09:37:21 +00:00
|
|
|
t.timestamps limit: 3
|
2019-11-13 07:03:47 +00:00
|
|
|
end
|
|
|
|
add_index :active_job_locks, :lock_key, unique: true
|
|
|
|
add_index :active_job_locks, :active_job_id, unique: true
|
2020-06-02 11:01:16 +00:00
|
|
|
|
|
|
|
create_table :smime_certificates do |t|
|
|
|
|
t.string :subject, limit: 500, null: false
|
|
|
|
t.string :doc_hash, limit: 250, null: false
|
|
|
|
t.string :fingerprint, limit: 250, null: false
|
|
|
|
t.string :modulus, limit: 1024, null: false
|
2020-10-27 09:37:21 +00:00
|
|
|
t.datetime :not_before_at, null: true, limit: 3
|
|
|
|
t.datetime :not_after_at, null: true, limit: 3
|
2020-06-02 11:01:16 +00:00
|
|
|
t.binary :raw, limit: 10.megabytes, null: false
|
|
|
|
t.binary :private_key, limit: 10.megabytes, null: true
|
|
|
|
t.string :private_key_secret, limit: 500, null: true
|
|
|
|
t.timestamps limit: 3, null: false
|
|
|
|
end
|
|
|
|
add_index :smime_certificates, [:fingerprint], unique: true
|
|
|
|
add_index :smime_certificates, [:modulus]
|
|
|
|
add_index :smime_certificates, [:subject]
|
2020-09-08 15:06:23 +00:00
|
|
|
|
|
|
|
create_table :data_privacy_tasks do |t|
|
|
|
|
t.column :state, :string, limit: 150, default: 'in process', null: true
|
|
|
|
t.references :deletable, polymorphic: true
|
2021-05-10 14:13:39 +00:00
|
|
|
t.text :preferences
|
2020-09-08 15:06:23 +00:00
|
|
|
t.column :updated_by_id, :integer, null: false
|
|
|
|
t.column :created_by_id, :integer, null: false
|
|
|
|
t.timestamps limit: 3, null: false
|
|
|
|
end
|
|
|
|
add_index :data_privacy_tasks, [:state]
|
2021-03-16 08:59:32 +00:00
|
|
|
|
|
|
|
create_table :mentions do |t|
|
|
|
|
t.references :mentionable, polymorphic: true, null: false
|
|
|
|
t.column :user_id, :integer, null: false
|
|
|
|
t.column :updated_by_id, :integer, null: false
|
|
|
|
t.column :created_by_id, :integer, null: false
|
|
|
|
t.timestamps limit: 3, null: false
|
|
|
|
end
|
|
|
|
add_index :mentions, %i[mentionable_id mentionable_type user_id], unique: true, name: 'index_mentions_mentionable_user'
|
|
|
|
add_foreign_key :mentions, :users, column: :created_by_id
|
|
|
|
add_foreign_key :mentions, :users, column: :updated_by_id
|
|
|
|
add_foreign_key :mentions, :users, column: :user_id
|
2021-08-25 12:24:42 +00:00
|
|
|
|
|
|
|
create_table :core_workflows do |t|
|
|
|
|
t.string :name, limit: 100, null: false
|
|
|
|
t.string :object, limit: 100, null: true
|
|
|
|
t.text :preferences, limit: 500.kilobytes + 1, null: true
|
|
|
|
t.text :condition_saved, limit: 500.kilobytes + 1, null: true
|
|
|
|
t.text :condition_selected, limit: 500.kilobytes + 1, null: true
|
|
|
|
t.text :perform, limit: 500.kilobytes + 1, null: true
|
|
|
|
t.boolean :active, null: false, default: true
|
|
|
|
t.boolean :stop_after_match, null: false, default: false
|
|
|
|
t.boolean :changeable, null: false, default: true
|
|
|
|
t.integer :priority, null: false, default: 0
|
|
|
|
t.integer :updated_by_id, null: false
|
|
|
|
t.integer :created_by_id, null: false
|
|
|
|
t.timestamps limit: 3, null: false
|
|
|
|
end
|
|
|
|
add_index :core_workflows, [:name], unique: true
|
|
|
|
add_foreign_key :core_workflows, :users, column: :created_by_id
|
|
|
|
add_foreign_key :core_workflows, :users, column: :updated_by_id
|
2014-12-17 15:40:59 +00:00
|
|
|
end
|
2015-04-27 14:15:29 +00:00
|
|
|
end
|