20120101000001_create_base.rb 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755
  1. class CreateBase < ActiveRecord::Migration[4.2]
  2. def up
  3. # clear old caches to start from scratch
  4. Cache.clear
  5. create_table :sessions do |t|
  6. t.string :session_id, null: false
  7. t.boolean :persistent, null: true
  8. t.text :data
  9. t.timestamps null: false
  10. end
  11. add_index :sessions, :session_id
  12. add_index :sessions, :updated_at
  13. add_index :sessions, :persistent
  14. create_table :users do |t|
  15. t.references :organization, null: true
  16. t.string :login, limit: 255, null: false
  17. t.string :firstname, limit: 100, null: true, default: ''
  18. t.string :lastname, limit: 100, null: true, default: ''
  19. t.string :email, limit: 255, null: true, default: ''
  20. t.string :image, limit: 100, null: true
  21. t.string :image_source, limit: 200, null: true
  22. t.string :web, limit: 100, null: true, default: ''
  23. t.string :password, limit: 100, null: true
  24. t.string :phone, limit: 100, null: true, default: ''
  25. t.string :fax, limit: 100, null: true, default: ''
  26. t.string :mobile, limit: 100, null: true, default: ''
  27. t.string :department, limit: 200, null: true, default: ''
  28. t.string :street, limit: 120, null: true, default: ''
  29. t.string :zip, limit: 100, null: true, default: ''
  30. t.string :city, limit: 100, null: true, default: ''
  31. t.string :country, limit: 100, null: true, default: ''
  32. t.string :address, limit: 500, null: true, default: ''
  33. t.boolean :vip, default: false
  34. t.boolean :verified, null: false, default: false
  35. t.boolean :active, null: false, default: true
  36. t.string :note, limit: 5000, null: true, default: ''
  37. t.timestamp :last_login, limit: 3, null: true
  38. t.string :source, limit: 200, null: true
  39. t.integer :login_failed, null: false, default: 0
  40. t.boolean :out_of_office, null: false, default: false
  41. t.date :out_of_office_start_at, null: true
  42. t.date :out_of_office_end_at, null: true
  43. t.integer :out_of_office_replacement_id, null: true
  44. t.string :preferences, limit: 8000, null: true
  45. t.integer :updated_by_id, null: false
  46. t.integer :created_by_id, null: false
  47. t.timestamps limit: 3, null: false
  48. end
  49. add_index :users, [:login], unique: true
  50. add_index :users, [:email]
  51. #add_index :users, [:email], unique: => true
  52. add_index :users, [:organization_id]
  53. add_index :users, [:image]
  54. add_index :users, [:department]
  55. add_index :users, [:phone]
  56. add_index :users, [:fax]
  57. add_index :users, [:mobile]
  58. add_index :users, %i[out_of_office out_of_office_start_at out_of_office_end_at], name: 'index_out_of_office'
  59. add_index :users, [:out_of_office_replacement_id]
  60. add_index :users, [:source]
  61. add_index :users, [:created_by_id]
  62. add_foreign_key :users, :users, column: :created_by_id
  63. add_foreign_key :users, :users, column: :updated_by_id
  64. add_foreign_key :users, :users, column: :out_of_office_replacement_id
  65. create_table :signatures do |t|
  66. t.string :name, limit: 100, null: false
  67. t.text :body, limit: 10.megabytes + 1, null: true
  68. t.boolean :active, null: false, default: true
  69. t.string :note, limit: 250, null: true
  70. t.integer :updated_by_id, null: false
  71. t.integer :created_by_id, null: false
  72. t.timestamps limit: 3, null: false
  73. end
  74. add_index :signatures, [:name], unique: true
  75. add_foreign_key :signatures, :users, column: :created_by_id
  76. add_foreign_key :signatures, :users, column: :updated_by_id
  77. create_table :email_addresses do |t|
  78. t.integer :channel_id, null: true
  79. t.string :realname, limit: 250, null: false
  80. t.string :email, limit: 250, null: false
  81. t.boolean :active, null: false, default: true
  82. t.string :note, limit: 250, null: true
  83. t.string :preferences, limit: 2000, null: true
  84. t.integer :updated_by_id, null: false
  85. t.integer :created_by_id, null: false
  86. t.timestamps limit: 3, null: false
  87. end
  88. add_index :email_addresses, [:email], unique: true
  89. add_foreign_key :email_addresses, :users, column: :created_by_id
  90. add_foreign_key :email_addresses, :users, column: :updated_by_id
  91. create_table :groups do |t|
  92. t.references :signature, null: true
  93. t.references :email_address, null: true
  94. t.string :name, limit: 160, null: false
  95. t.integer :assignment_timeout, null: true
  96. t.string :follow_up_possible, limit: 100, null: false, default: 'yes'
  97. t.boolean :follow_up_assignment, null: false, default: true
  98. t.boolean :active, null: false, default: true
  99. t.string :note, limit: 250, null: true
  100. t.integer :updated_by_id, null: false
  101. t.integer :created_by_id, null: false
  102. t.timestamps limit: 3, null: false
  103. end
  104. add_index :groups, [:name], unique: true
  105. add_foreign_key :groups, :signatures
  106. add_foreign_key :groups, :email_addresses
  107. add_foreign_key :groups, :users, column: :created_by_id
  108. add_foreign_key :groups, :users, column: :updated_by_id
  109. create_table :roles do |t|
  110. t.string :name, limit: 100, null: false
  111. t.text :preferences, limit: 500.kilobytes + 1, null: true
  112. t.boolean :default_at_signup, null: true, default: false
  113. t.boolean :active, null: false, default: true
  114. t.string :note, limit: 250, null: true
  115. t.integer :updated_by_id, null: false
  116. t.integer :created_by_id, null: false
  117. t.timestamps limit: 3, null: false
  118. end
  119. add_index :roles, [:name], unique: true
  120. add_foreign_key :roles, :users, column: :created_by_id
  121. add_foreign_key :roles, :users, column: :updated_by_id
  122. create_table :permissions do |t|
  123. t.string :name, limit: 255, null: false
  124. t.string :note, limit: 500, null: true
  125. t.string :preferences, limit: 10_000, null: true
  126. t.boolean :active, null: false, default: true
  127. t.boolean :allow_signup, null: false, default: false
  128. t.timestamps limit: 3, null: false
  129. end
  130. add_index :permissions, [:name], unique: true
  131. create_table :permissions_roles, id: false do |t|
  132. t.belongs_to :role, index: true
  133. t.belongs_to :permission, index: true
  134. end
  135. create_table :organizations do |t|
  136. t.string :name, limit: 100, null: false
  137. t.boolean :shared, null: false, default: true
  138. t.string :domain, limit: 250, null: true, default: ''
  139. t.boolean :domain_assignment, null: false, default: false
  140. t.boolean :active, null: false, default: true
  141. t.string :note, limit: 5000, null: true, default: ''
  142. t.integer :updated_by_id, null: false
  143. t.integer :created_by_id, null: false
  144. t.timestamps limit: 3, null: false
  145. end
  146. add_index :organizations, [:name], unique: true
  147. add_index :organizations, [:domain]
  148. add_foreign_key :users, :organizations
  149. add_foreign_key :organizations, :users, column: :created_by_id
  150. add_foreign_key :organizations, :users, column: :updated_by_id
  151. create_table :roles_users, id: false do |t|
  152. t.references :user
  153. t.references :role
  154. end
  155. add_index :roles_users, [:user_id]
  156. add_index :roles_users, [:role_id]
  157. add_foreign_key :roles_users, :users
  158. add_foreign_key :roles_users, :roles
  159. create_table :groups_users, id: false do |t|
  160. t.references :user, null: false
  161. t.references :group, null: false
  162. t.string :access, limit: 50, null: false, default: 'full'
  163. end
  164. add_index :groups_users, [:user_id]
  165. add_index :groups_users, [:group_id]
  166. add_index :groups_users, [:access]
  167. add_foreign_key :groups_users, :users
  168. add_foreign_key :groups_users, :groups
  169. create_table :roles_groups, id: false do |t|
  170. t.references :role, null: false
  171. t.references :group, null: false
  172. t.string :access, limit: 50, null: false, default: 'full'
  173. end
  174. add_index :roles_groups, [:role_id]
  175. add_index :roles_groups, [:group_id]
  176. add_index :roles_groups, [:access]
  177. add_foreign_key :roles_groups, :roles
  178. add_foreign_key :roles_groups, :groups
  179. create_table :organizations_users, id: false do |t|
  180. t.references :user
  181. t.references :organization
  182. end
  183. add_index :organizations_users, [:user_id]
  184. add_index :organizations_users, [:organization_id]
  185. add_foreign_key :organizations_users, :users
  186. add_foreign_key :organizations_users, :organizations
  187. create_table :authorizations do |t|
  188. t.string :provider, limit: 250, null: false
  189. t.string :uid, limit: 250, null: false
  190. t.string :token, limit: 2500, null: true
  191. t.string :secret, limit: 250, null: true
  192. t.string :username, limit: 250, null: true
  193. t.references :user, null: false
  194. t.timestamps limit: 3, null: false
  195. end
  196. add_index :authorizations, %i[uid provider], unique: true
  197. add_index :authorizations, [:user_id]
  198. add_index :authorizations, [:username]
  199. add_foreign_key :authorizations, :users
  200. create_table :locales do |t|
  201. t.string :locale, limit: 20, null: false
  202. t.string :alias, limit: 20, null: true
  203. t.string :name, limit: 255, null: false
  204. t.string :dir, limit: 9, null: false, default: 'ltr'
  205. t.boolean :active, null: false, default: true
  206. t.timestamps limit: 3, null: false
  207. end
  208. add_index :locales, [:locale], unique: true
  209. add_index :locales, [:name], unique: true
  210. create_table :translations do |t|
  211. t.string :locale, limit: 10, null: false
  212. t.string :source, limit: 500, null: false
  213. t.string :target, limit: 500, null: false
  214. t.string :target_initial, limit: 500, null: false
  215. t.string :format, limit: 20, null: false, default: 'string'
  216. t.integer :updated_by_id, null: false
  217. t.integer :created_by_id, null: false
  218. t.timestamps limit: 3, null: false
  219. end
  220. add_index :translations, [:source], length: 255
  221. add_index :translations, [:locale]
  222. add_foreign_key :translations, :users, column: :created_by_id
  223. add_foreign_key :translations, :users, column: :updated_by_id
  224. create_table :object_lookups do |t|
  225. t.string :name, limit: 250, null: false
  226. t.timestamps limit: 3, null: false
  227. end
  228. add_index :object_lookups, [:name], unique: true
  229. create_table :type_lookups do |t|
  230. t.string :name, limit: 250, null: false
  231. t.timestamps limit: 3, null: false
  232. end
  233. add_index :type_lookups, [:name], unique: true
  234. create_table :tokens do |t|
  235. t.references :user, null: false
  236. t.boolean :persistent
  237. t.string :name, limit: 100, null: false
  238. t.string :action, limit: 40, null: false
  239. t.string :label, limit: 255, null: true
  240. t.text :preferences, limit: 500.kilobytes + 1, null: true
  241. t.timestamp :last_used_at, limit: 3, null: true
  242. t.date :expires_at, null: true
  243. t.timestamps limit: 3, null: false
  244. end
  245. add_index :tokens, :user_id
  246. add_index :tokens, %i[name action], unique: true
  247. add_index :tokens, :created_at
  248. add_index :tokens, :persistent
  249. add_foreign_key :tokens, :users
  250. create_table :packages do |t|
  251. t.string :name, limit: 250, null: false
  252. t.string :version, limit: 50, null: false
  253. t.string :vendor, limit: 150, null: false
  254. t.string :state, limit: 50, null: false
  255. t.integer :updated_by_id, null: false
  256. t.integer :created_by_id, null: false
  257. t.timestamps limit: 3, null: false
  258. end
  259. add_foreign_key :packages, :users, column: :created_by_id
  260. add_foreign_key :packages, :users, column: :updated_by_id
  261. create_table :package_migrations do |t|
  262. t.string :name, limit: 250, null: false
  263. t.string :version, limit: 250, null: false
  264. t.timestamps limit: 3, null: false
  265. end
  266. create_table :taskbars do |t|
  267. t.references :user, null: false
  268. t.datetime :last_contact, null: false
  269. t.string :client_id, null: false
  270. t.string :key, limit: 100, null: false
  271. t.string :callback, limit: 100, null: false
  272. t.text :state, limit: 20.megabytes + 1, null: true
  273. t.text :preferences, limit: 5.megabytes + 1, null: true
  274. t.string :params, limit: 2000, null: true
  275. t.integer :prio, null: false
  276. t.boolean :notify, null: false, default: false
  277. t.boolean :active, null: false, default: false
  278. t.timestamps limit: 3, null: false
  279. end
  280. add_index :taskbars, [:user_id]
  281. add_index :taskbars, [:client_id]
  282. add_index :taskbars, [:key]
  283. add_foreign_key :taskbars, :users
  284. create_table :tag_objects do |t|
  285. t.string :name, limit: 250, null: false
  286. t.timestamps limit: 3, null: false
  287. end
  288. add_index :tag_objects, [:name], unique: true
  289. create_table :tag_items do |t|
  290. t.string :name, limit: 250, null: false
  291. t.string :name_downcase, limit: 250, null: false
  292. t.timestamps limit: 3, null: false
  293. end
  294. add_index :tag_items, [:name_downcase]
  295. create_table :tags do |t|
  296. t.references :tag_item, null: false
  297. t.references :tag_object, null: false
  298. t.integer :o_id, null: false
  299. t.integer :created_by_id, null: false
  300. t.timestamps limit: 3, null: false
  301. end
  302. add_index :tags, [:o_id]
  303. add_index :tags, [:tag_object_id]
  304. add_foreign_key :tags, :tag_items
  305. add_foreign_key :tags, :tag_objects
  306. add_foreign_key :tags, :users, column: :created_by_id
  307. create_table :recent_views do |t|
  308. t.references :recent_view_object, null: false
  309. t.integer :o_id, null: false
  310. t.integer :created_by_id, null: false
  311. t.timestamps limit: 3, null: false
  312. end
  313. add_index :recent_views, [:o_id]
  314. add_index :recent_views, [:created_by_id]
  315. add_index :recent_views, [:created_at]
  316. add_index :recent_views, [:recent_view_object_id]
  317. add_foreign_key :recent_views, :object_lookups, column: :recent_view_object_id
  318. add_foreign_key :recent_views, :users, column: :created_by_id
  319. create_table :activity_streams do |t|
  320. t.references :activity_stream_type, null: false
  321. t.references :activity_stream_object, null: false
  322. t.references :permission, null: true
  323. t.references :group, null: true
  324. t.integer :o_id, null: false
  325. t.integer :created_by_id, null: false
  326. t.timestamps limit: 3, null: false
  327. end
  328. add_index :activity_streams, [:o_id]
  329. add_index :activity_streams, [:created_by_id]
  330. add_index :activity_streams, [:permission_id]
  331. add_index :activity_streams, %i[permission_id group_id]
  332. add_index :activity_streams, %i[permission_id group_id created_at], name: 'index_activity_streams_on_permission_id_group_id_created_at'
  333. add_index :activity_streams, [:group_id]
  334. add_index :activity_streams, [:created_at]
  335. add_index :activity_streams, [:activity_stream_object_id]
  336. add_index :activity_streams, [:activity_stream_type_id]
  337. add_foreign_key :activity_streams, :type_lookups, column: :activity_stream_type_id
  338. add_foreign_key :activity_streams, :object_lookups, column: :activity_stream_object_id
  339. add_foreign_key :activity_streams, :permissions
  340. add_foreign_key :activity_streams, :groups
  341. add_foreign_key :activity_streams, :users, column: :created_by_id
  342. create_table :history_types do |t|
  343. t.string :name, limit: 250, null: false
  344. t.timestamps limit: 3, null: false
  345. end
  346. add_index :history_types, [:name], unique: true
  347. create_table :history_objects do |t|
  348. t.string :name, limit: 250, null: false
  349. t.string :note, limit: 250, null: true
  350. t.timestamps limit: 3, null: false
  351. end
  352. add_index :history_objects, [:name], unique: true
  353. create_table :history_attributes do |t|
  354. t.string :name, limit: 250, null: false
  355. t.timestamps limit: 3, null: false
  356. end
  357. add_index :history_attributes, [:name], unique: true
  358. create_table :histories do |t|
  359. t.references :history_type, null: false
  360. t.references :history_object, null: false
  361. t.references :history_attribute, null: true
  362. t.integer :o_id, null: false
  363. t.integer :related_o_id, null: true
  364. t.integer :related_history_object_id, null: true
  365. t.integer :id_to, null: true
  366. t.integer :id_from, null: true
  367. t.string :value_from, limit: 500, null: true
  368. t.string :value_to, limit: 500, null: true
  369. t.integer :created_by_id, null: false
  370. t.timestamps limit: 3, null: false
  371. end
  372. add_index :histories, [:o_id]
  373. add_index :histories, [:created_by_id]
  374. add_index :histories, [:created_at]
  375. add_index :histories, [:history_object_id]
  376. add_index :histories, [:history_attribute_id]
  377. add_index :histories, [:history_type_id]
  378. add_index :histories, [:id_to]
  379. add_index :histories, [:id_from]
  380. add_index :histories, [:value_from], length: 255
  381. add_index :histories, [:value_to], length: 255
  382. add_index :histories, [:related_o_id]
  383. add_index :histories, [:related_history_object_id]
  384. add_index :histories, %i[o_id history_object_id related_o_id]
  385. add_foreign_key :histories, :history_types
  386. add_foreign_key :histories, :history_objects
  387. add_foreign_key :histories, :history_attributes
  388. add_foreign_key :histories, :users, column: :created_by_id
  389. create_table :settings do |t|
  390. t.string :title, limit: 200, null: false
  391. t.string :name, limit: 200, null: false
  392. t.string :area, limit: 100, null: false
  393. t.string :description, limit: 2000, null: false
  394. t.string :options, limit: 2000, null: true
  395. t.text :state_current, limit: 200.kilobytes + 1, null: true
  396. t.string :state_initial, limit: 2000, null: true
  397. t.boolean :frontend, null: false
  398. t.text :preferences, limit: 200.kilobytes + 1, null: true
  399. t.timestamps limit: 3, null: false
  400. end
  401. add_index :settings, [:name], unique: true
  402. add_index :settings, [:area]
  403. add_index :settings, [:frontend]
  404. create_table :store_objects do |t|
  405. t.string :name, limit: 250, null: false
  406. t.string :note, limit: 250, null: true
  407. t.timestamps limit: 3, null: false
  408. end
  409. add_index :store_objects, [:name], unique: true
  410. create_table :store_files do |t|
  411. t.string :sha, limit: 128, null: false
  412. t.string :provider, limit: 20, null: true
  413. t.timestamps limit: 3, null: false
  414. end
  415. add_index :store_files, [:sha], unique: true
  416. add_index :store_files, [:provider]
  417. create_table :stores do |t|
  418. t.references :store_object, null: false
  419. t.references :store_file, null: false
  420. t.integer :o_id, limit: 8, null: false
  421. t.string :preferences, limit: 2500, null: true
  422. t.string :size, limit: 50, null: true
  423. t.string :filename, limit: 250, null: false
  424. t.integer :created_by_id, null: false
  425. t.timestamps limit: 3, null: false
  426. end
  427. add_index :stores, %i[store_object_id o_id]
  428. add_index :stores, %i[store_file_id]
  429. add_foreign_key :stores, :store_objects
  430. add_foreign_key :stores, :store_files
  431. add_foreign_key :stores, :users, column: :created_by_id
  432. create_table :store_provider_dbs do |t|
  433. t.string :sha, limit: 128, null: false
  434. t.binary :data, limit: 200.megabytes, null: true
  435. t.timestamps limit: 3, null: false
  436. end
  437. add_index :store_provider_dbs, [:sha], unique: true
  438. create_table :avatars do |t|
  439. t.integer :o_id, null: false
  440. t.integer :object_lookup_id, null: false
  441. t.boolean :default, null: false, default: false
  442. t.boolean :deletable, null: false, default: true
  443. t.boolean :initial, null: false, default: false
  444. t.integer :store_full_id, null: true
  445. t.integer :store_resize_id, null: true
  446. t.string :store_hash, limit: 32, null: true
  447. t.string :source, limit: 100, null: false
  448. t.string :source_url, limit: 512, null: true
  449. t.integer :updated_by_id, null: false
  450. t.integer :created_by_id, null: false
  451. t.timestamps limit: 3, null: false
  452. end
  453. add_index :avatars, %i[o_id object_lookup_id]
  454. add_index :avatars, [:store_hash]
  455. add_index :avatars, [:source]
  456. add_index :avatars, [:default]
  457. add_foreign_key :avatars, :users, column: :created_by_id
  458. add_foreign_key :avatars, :users, column: :updated_by_id
  459. create_table :online_notifications do |t|
  460. t.integer :o_id, null: false
  461. t.integer :object_lookup_id, null: false
  462. t.integer :type_lookup_id, null: false
  463. t.integer :user_id, null: false
  464. t.boolean :seen, null: false, default: false
  465. t.integer :updated_by_id, null: false
  466. t.integer :created_by_id, null: false
  467. t.timestamps limit: 3, null: false
  468. end
  469. add_index :online_notifications, [:user_id]
  470. add_index :online_notifications, [:seen]
  471. add_index :online_notifications, [:created_at]
  472. add_index :online_notifications, [:updated_at]
  473. add_foreign_key :online_notifications, :users
  474. add_foreign_key :online_notifications, :users, column: :created_by_id
  475. add_foreign_key :online_notifications, :users, column: :updated_by_id
  476. create_table :schedulers do |t|
  477. t.string :name, limit: 250, null: false
  478. t.string :method, limit: 250, null: false
  479. t.integer :period, null: true
  480. t.integer :running, null: false, default: false
  481. t.timestamp :last_run, limit: 3, null: true
  482. t.integer :prio, null: false
  483. t.string :pid, limit: 250, null: true
  484. t.string :note, limit: 250, null: true
  485. t.string :error_message, null: true
  486. t.string :status, null: true
  487. t.boolean :active, null: false, default: false
  488. t.integer :updated_by_id, null: false
  489. t.integer :created_by_id, null: false
  490. t.timestamps limit: 3, null: false
  491. end
  492. add_index :schedulers, [:name], unique: true
  493. add_foreign_key :schedulers, :users, column: :created_by_id
  494. add_foreign_key :schedulers, :users, column: :updated_by_id
  495. create_table :calendars do |t|
  496. t.string :name, limit: 250, null: true
  497. t.string :timezone, limit: 250, null: true
  498. t.string :business_hours, limit: 3000, null: true
  499. t.boolean :default, null: false, default: false
  500. t.string :ical_url, limit: 500, null: true
  501. t.text :public_holidays, limit: 500.kilobytes + 1, null: true
  502. t.text :last_log, limit: 500.kilobytes + 1, null: true
  503. t.timestamp :last_sync, limit: 3, null: true
  504. t.integer :updated_by_id, null: false
  505. t.integer :created_by_id, null: false
  506. t.timestamps limit: 3, null: false
  507. end
  508. add_index :calendars, [:name], unique: true
  509. add_foreign_key :calendars, :users, column: :created_by_id
  510. add_foreign_key :calendars, :users, column: :updated_by_id
  511. create_table :user_devices do |t|
  512. t.references :user, null: false
  513. t.string :name, limit: 250, null: false
  514. t.string :os, limit: 150, null: true
  515. t.string :browser, limit: 250, null: true
  516. t.string :location, limit: 150, null: true
  517. t.string :device_details, limit: 2500, null: true
  518. t.string :location_details, limit: 2500, null: true
  519. t.string :fingerprint, limit: 160, null: true
  520. t.string :user_agent, limit: 250, null: true
  521. t.string :ip, limit: 160, null: true
  522. t.timestamps limit: 3, null: false
  523. end
  524. add_index :user_devices, [:user_id]
  525. add_index :user_devices, %i[os browser location]
  526. add_index :user_devices, [:fingerprint]
  527. add_index :user_devices, [:updated_at]
  528. add_index :user_devices, [:created_at]
  529. add_foreign_key :user_devices, :users
  530. create_table :external_credentials do |t|
  531. t.string :name
  532. t.string :credentials, limit: 2500, null: false
  533. t.timestamps limit: 3, null: false
  534. end
  535. create_table :object_manager_attributes do |t|
  536. t.references :object_lookup, null: false
  537. t.string :name, limit: 200, null: false
  538. t.string :display, limit: 200, null: false
  539. t.string :data_type, limit: 100, null: false
  540. t.text :data_option, limit: 800.kilobytes + 1, null: true
  541. t.text :data_option_new, limit: 800.kilobytes + 1, null: true
  542. t.boolean :editable, null: false, default: true
  543. t.boolean :active, null: false, default: true
  544. t.string :screens, limit: 2000, null: true
  545. t.boolean :to_create, null: false, default: false
  546. t.boolean :to_migrate, null: false, default: false
  547. t.boolean :to_delete, null: false, default: false
  548. t.boolean :to_config, null: false, default: false
  549. t.integer :position, null: false
  550. t.integer :created_by_id, null: false
  551. t.integer :updated_by_id, null: false
  552. t.timestamps limit: 3, null: false
  553. end
  554. add_index :object_manager_attributes, %i[object_lookup_id name], unique: true
  555. add_index :object_manager_attributes, [:object_lookup_id]
  556. add_foreign_key :object_manager_attributes, :object_lookups
  557. add_foreign_key :object_manager_attributes, :users, column: :created_by_id
  558. add_foreign_key :object_manager_attributes, :users, column: :updated_by_id
  559. create_table :delayed_jobs, force: true do |t|
  560. t.integer :priority, default: 0 # Allows some jobs to jump to the front of the queue
  561. t.integer :attempts, default: 0 # Provides for retries, but still fail eventually.
  562. t.text :handler # YAML-encoded string of the object that will do work
  563. t.text :last_error # reason for last failure (See Note below)
  564. t.datetime :run_at # When to run. Could be Time.zone.now for immediately, or sometime in the future.
  565. t.datetime :locked_at # Set when a client is working on this object
  566. t.datetime :failed_at # Set when all retries have failed (actually, by default, the record is deleted instead)
  567. t.string :locked_by # Who is working on this object (if locked)
  568. t.string :queue # The name of the queue this job is in
  569. t.timestamps limit: 3, null: false
  570. end
  571. add_index :delayed_jobs, %i[priority run_at], name: 'delayed_jobs_priority'
  572. create_table :external_syncs do |t|
  573. t.string :source, limit: 100, null: false
  574. t.string :source_id, limit: 200, null: false
  575. t.string :object, limit: 100, null: false
  576. t.integer :o_id, null: false
  577. t.text :last_payload, limit: 500.kilobytes + 1, null: true
  578. t.timestamps limit: 3, null: false
  579. end
  580. add_index :external_syncs, %i[source source_id], unique: true
  581. add_index :external_syncs, %i[source source_id object o_id], name: 'index_external_syncs_on_source_and_source_id_and_object_o_id'
  582. add_index :external_syncs, %i[object o_id]
  583. create_table :import_jobs do |t|
  584. t.string :name, limit: 250, null: false
  585. t.boolean :dry_run, default: false
  586. t.text :payload, limit: 80_000
  587. t.text :result, limit: 80_000
  588. t.datetime :started_at
  589. t.datetime :finished_at
  590. t.timestamps null: false
  591. end
  592. create_table :cti_logs do |t|
  593. t.string :direction, limit: 20, null: false
  594. t.string :state, limit: 20, null: false
  595. t.string :from, limit: 100, null: false
  596. t.string :from_comment, limit: 250, null: true
  597. t.string :to, limit: 100, null: false
  598. t.string :to_comment, limit: 250, null: true
  599. t.string :queue, limit: 250, null: true
  600. t.string :call_id, limit: 250, null: false
  601. t.string :comment, limit: 500, null: true
  602. t.timestamp :initialized_at, limit: 3, null: true
  603. t.timestamp :start_at, limit: 3, null: true
  604. t.timestamp :end_at, limit: 3, null: true
  605. t.integer :duration_waiting_time, null: true
  606. t.integer :duration_talking_time, null: true
  607. t.boolean :done, null: false, default: true
  608. t.text :preferences, limit: 500.kilobytes + 1, null: true
  609. t.timestamps limit: 3, null: false
  610. end
  611. add_index :cti_logs, [:call_id], unique: true
  612. add_index :cti_logs, [:direction]
  613. add_index :cti_logs, [:from]
  614. create_table :cti_caller_ids do |t|
  615. t.string :caller_id, limit: 100, null: false
  616. t.string :comment, limit: 500, null: true
  617. t.string :level, limit: 100, null: false
  618. t.string :object, limit: 100, null: false
  619. t.integer :o_id, null: false
  620. t.references :user, null: true
  621. t.text :preferences, limit: 500.kilobytes + 1, null: true
  622. t.timestamps limit: 3, null: false
  623. end
  624. add_index :cti_caller_ids, [:caller_id]
  625. add_index :cti_caller_ids, %i[caller_id level]
  626. add_index :cti_caller_ids, %i[caller_id user_id]
  627. add_index :cti_caller_ids, %i[object o_id]
  628. 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'
  629. add_foreign_key :cti_caller_ids, :users
  630. create_table :stats_stores do |t|
  631. t.references :stats_store_object, null: false
  632. t.integer :o_id, null: false
  633. t.string :key, limit: 250, null: true
  634. t.integer :related_stats_store_object_id, null: true
  635. t.string :data, limit: 5000, null: true
  636. t.integer :created_by_id, null: false
  637. t.timestamps limit: 3, null: false
  638. end
  639. add_index :stats_stores, [:o_id]
  640. add_index :stats_stores, [:key]
  641. add_index :stats_stores, [:stats_store_object_id]
  642. add_index :stats_stores, [:created_by_id]
  643. add_index :stats_stores, [:created_at]
  644. add_foreign_key :stats_stores, :users, column: :created_by_id
  645. create_table :http_logs do |t|
  646. t.column :direction, :string, limit: 20, null: false
  647. t.column :facility, :string, limit: 100, null: false
  648. t.column :method, :string, limit: 100, null: false
  649. t.column :url, :string, limit: 255, null: false
  650. t.column :status, :string, limit: 20, null: true
  651. t.column :ip, :string, limit: 50, null: true
  652. t.column :request, :string, limit: 10_000, null: false
  653. t.column :response, :string, limit: 10_000, null: false
  654. t.column :updated_by_id, :integer, null: true
  655. t.column :created_by_id, :integer, null: true
  656. t.timestamps limit: 3, null: false
  657. end
  658. add_index :http_logs, [:facility]
  659. add_index :http_logs, [:created_by_id]
  660. add_index :http_logs, [:created_at]
  661. add_foreign_key :http_logs, :users, column: :created_by_id
  662. add_foreign_key :http_logs, :users, column: :updated_by_id
  663. create_table :active_job_locks do |t|
  664. t.string :lock_key
  665. t.string :active_job_id
  666. t.timestamps
  667. end
  668. add_index :active_job_locks, :lock_key, unique: true
  669. add_index :active_job_locks, :active_job_id, unique: true
  670. create_table :smime_certificates do |t|
  671. t.string :subject, limit: 500, null: false
  672. t.string :doc_hash, limit: 250, null: false
  673. t.string :fingerprint, limit: 250, null: false
  674. t.string :modulus, limit: 1024, null: false
  675. t.datetime :not_before_at, null: true
  676. t.datetime :not_after_at, null: true
  677. t.binary :raw, limit: 10.megabytes, null: false
  678. t.binary :private_key, limit: 10.megabytes, null: true
  679. t.string :private_key_secret, limit: 500, null: true
  680. t.timestamps limit: 3, null: false
  681. end
  682. add_index :smime_certificates, [:fingerprint], unique: true
  683. add_index :smime_certificates, [:modulus]
  684. add_index :smime_certificates, [:subject]
  685. create_table :data_privacy_tasks do |t|
  686. t.column :state, :string, limit: 150, default: 'in process', null: true
  687. t.references :deletable, polymorphic: true
  688. t.string :preferences, limit: 8000, null: true
  689. t.column :updated_by_id, :integer, null: false
  690. t.column :created_by_id, :integer, null: false
  691. t.timestamps limit: 3, null: false
  692. end
  693. add_index :data_privacy_tasks, [:state]
  694. end
  695. end