schema.rb 10.4 KB
Newer Older
1 2
ActiveRecord::Schema.define do

3 4 5 6
  # adapter name is checked because we are under a transition of
  # moving the sql files under activerecord/test/fixtures/db_definitions
  # to this file, schema.rb.
  if adapter_name == "MySQL"
J
Jeremy Kemper 已提交
7

8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
    # Please keep these create table statements in alphabetical order
    # unless the ordering matters.  In which case, define them below
    create_table :accounts, :force => true do |t|
      t.integer :firm_id
      t.integer :credit_limit
    end

    create_table :authors, :force => true do |t|
      t.string :name, :null => false
    end

    create_table :auto_id_tests, :force => true, :id => false do |t|
      t.primary_key :auto_id
      t.integer     :value
    end
J
Jeremy Kemper 已提交
23

24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
    create_table :binaries, :force => true do |t|
      t.binary :data
    end

    create_table :booleantests, :force => true do |t|
      t.integer :value
    end

    create_table :categories, :force => true do |t|
      t.string :name, :null => false
      t.string :type
    end

    create_table :categories_posts, :force => true, :id => false do |t|
      t.integer :category_id, :null => false
      t.integer :post_id, :null => false
    end

    create_table :colnametests, :force => true do |t|
      t.integer :references, :null => false
    end
J
Jeremy Kemper 已提交
45

46 47 48 49 50 51 52 53 54 55 56 57 58 59
    create_table :comments, :force => true do |t|
      t.integer :post_id, :null => false
      t.text    :body, :null => false
      t.string  :type
    end

    create_table :companies, :force => true do |t|
      t.string  :type
      t.string  :ruby_type
      t.integer :firm_id
      t.string  :name
      t.integer :client_of
      t.integer :rating, :default => 1
    end
J
Jeremy Kemper 已提交
60

61 62 63 64
    create_table :computers, :force => true do |t|
      t.integer :developer, :null => false
      t.integer :extendedWarranty, :null => false
    end
J
Jeremy Kemper 已提交
65

66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97

    create_table :customers, :force => true do |t|
      t.string  :name
      t.integer :balance, :default => 0
      t.string  :address_street
      t.string  :address_city
      t.string  :address_country
      t.string  :gps_location
    end

    create_table :developers, :force => true do |t|
      t.string   :name
      t.integer  :salary, :default => 70000
      t.datetime :created_at
      t.datetime :updated_at
    end

    create_table :developers_projects, :force => true, :id => false do |t|
      t.integer :developer_id, :null => false
      t.integer :project_id, :null => false
      t.date    :joined_on
      t.integer :access_level, :default => 1
    end

    create_table :entrants, :force => true do |t|
      t.string  :name, :null => false
      t.integer :course_id, :null => false
    end

    create_table :funny_jokes, :force => true do |t|
      t.string :name
    end
J
Jeremy Kemper 已提交
98

99 100 101 102
    create_table :keyboards, :force => true, :id  => false do |t|
      t.primary_key :key_number
      t.string      :name
    end
J
Jeremy Kemper 已提交
103

104 105 106 107
    create_table :legacy_things, :force => true do |t|
      t.integer :tps_report_number
      t.integer :version, :null => false, :default => 0
    end
J
Jeremy Kemper 已提交
108

109 110
    create_table :minimalistics, :force => true do |t|
    end
J
Jeremy Kemper 已提交
111

112 113 114 115
    create_table :mixed_case_monkeys, :force => true, :id => false do |t|
      t.primary_key :monkeyID
      t.integer     :fleaCount
    end
J
Jeremy Kemper 已提交
116

117 118 119 120 121 122 123 124 125 126
    create_table :mixins, :force => true do |t|
      t.integer  :parent_id
      t.integer  :pos
      t.datetime :created_at
      t.datetime :updated_at
      t.integer  :lft
      t.integer  :rgt
      t.integer  :root_id
      t.string   :type
    end
J
Jeremy Kemper 已提交
127

128 129 130 131
    create_table :movies, :force => true, :id => false do |t|
      t.primary_key :movieid
      t.string      :name
    end
J
Jeremy Kemper 已提交
132

133 134 135 136 137 138 139
    create_table :numeric_data, :force => true do |t|
      t.decimal :bank_balance, :precision => 10, :scale => 2
      t.decimal :big_bank_balance, :precision => 15, :scale => 2
      t.decimal :world_population, :precision => 10, :scale => 0
      t.decimal :my_house_population, :precision => 2, :scale => 0
      t.decimal :decimal_number_with_default, :precision => 3, :scale => 2, :default => 2.78
    end
J
Jeremy Kemper 已提交
140

141 142 143 144 145 146 147 148 149 150
    create_table :orders, :force => true do |t|
      t.string  :name
      t.integer :billing_customer_id
      t.integer :shipping_customer_id
    end

    create_table :people, :force => true do |t|
      t.string  :first_name, :null => false
      t.integer :lock_version, :null => false, :default => 0
    end
J
Jeremy Kemper 已提交
151

152 153 154 155 156
    create_table :posts, :force => true do |t|
      t.integer :author_id
      t.string  :title, :null => false
      t.text    :body, :null => false
      t.string  :type
157
      t.integer :comments_count, :default => 0
158 159 160 161 162 163
    end

    create_table :projects, :force => true do |t|
      t.string :name
      t.string :type
    end
J
Jeremy Kemper 已提交
164

165 166 167 168
    create_table :readers, :force => true do |t|
      t.integer :post_id, :null => false
      t.integer :person_id, :null => false
    end
J
Jeremy Kemper 已提交
169

170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210
    create_table :subscribers, :force => true, :id => false do |t|
      t.string :nick, :null => false
      t.string :name
    end
    add_index :subscribers, :nick, :unique => true

    create_table :tasks, :force => true do |t|
      t.datetime :starting
      t.datetime :ending
    end

    create_table :topics, :force => true do |t|
      t.string   :title
      t.string   :author_name
      t.string   :author_email_address
      t.datetime :written_on
      t.time     :bonus_time
      t.date     :last_read
      t.text     :content
      t.boolean  :approved, :default => true
      t.integer  :replies_count, :default => 0
      t.integer  :parent_id
      t.string   :type
    end



    ### These tables are created last as the order is significant

    # fk_test_has_fk should be before fk_test_has_pk
    create_table :fk_test_has_fk, :force => true do |t|
      t.integer :fk_id, :null => false
    end

    create_table :fk_test_has_pk, :force => true do |t|
    end

    execute 'alter table fk_test_has_fk
               add FOREIGN KEY (`fk_id`) REFERENCES `fk_test_has_pk`(`id`)'


211 212
  else
    add_column :posts, :comments_count, :integer, :default => 0
213 214
  end

215 216 217 218 219 220 221 222 223 224
  # For Firebird, set the sequence values 10000 when create_table is called;
  # this prevents primary key collisions between "normally" created records
  # and fixture-based (YAML) records.
  if adapter_name == "Firebird"
    def create_table(*args, &block)
      ActiveRecord::Base.connection.create_table(*args, &block)
      ActiveRecord::Base.connection.execute "SET GENERATOR #{args.first}_seq TO 10000"
    end
  end

225 226
  create_table :taggings, :force => true do |t|
    t.column :tag_id, :integer
227
    t.column :super_tag_id, :integer
228 229
    t.column :taggable_type, :string
    t.column :taggable_id, :integer
230 231
  end

232 233
  create_table :tags, :force => true do |t|
    t.column :name, :string
234
    t.column :taggings_count, :integer, :default => 0
235 236
  end

237 238 239 240
  create_table :categorizations, :force => true do |t|
    t.column :category_id, :integer
    t.column :post_id, :integer
    t.column :author_id, :integer
241 242
  end

243
  add_column :posts, :taggings_count, :integer, :default => 0
244
  add_column :authors, :author_address_id, :integer
245
  add_column :authors, :author_address_extra_id, :integer
246 247 248

  create_table :author_addresses, :force => true do |t|
  end
249

250 251 252 253
  create_table :author_favorites, :force => true do |t|
    t.column :author_id, :integer
    t.column :favorite_author_id, :integer
  end
J
Jeremy Kemper 已提交
254 255 256 257 258 259 260 261 262

  create_table :vertices, :force => true do |t|
    t.column :label, :string
  end

  create_table :edges, :force => true do |t|
    t.column :source_id, :integer, :null => false
    t.column :sink_id,   :integer, :null => false
  end
J
Jeremy Kemper 已提交
263
  add_index :edges, [:source_id, :sink_id], :unique => true, :name => 'unique_edge_index'
264 265 266 267

  create_table :lock_without_defaults, :force => true do |t|
    t.column :lock_version, :integer
  end
J
Jeremy Kemper 已提交
268

269
  create_table :lock_without_defaults_cust, :force => true do |t|
270 271
    t.column :custom_lock_version, :integer
  end
J
Jeremy Kemper 已提交
272

273 274 275
  create_table :items, :force => true do |t|
    t.column :name, :integer
  end
276 277 278 279 280 281 282

  # For sqlite 3.1.0+, make a table with a autoincrement column
  if adapter_name == 'SQLite' and supports_autoincrement?
    create_table :table_with_autoincrement, :force => true do |t|
      t.column :name, :string
    end
  end
J
Jeremy Kemper 已提交
283

284 285 286 287 288 289
  # For sqlserver 2000+, ensure real columns can be used
  if adapter_name.starts_with?("SQLServer")
    create_table :table_with_real_columns, :force => true do |t|
      t.column :real_number, :real
    end
  end
290 291 292 293 294

  create_table :audit_logs, :force => true do |t|
    t.column :message, :string, :null=>false
    t.column :developer_id, :integer, :null=>false
  end
295

296 297 298 299 300 301 302 303 304
  create_table :books, :force => true do |t|
    t.column :name, :string
  end

  create_table :citations, :force => true do |t|
    t.column :book1_id, :integer
    t.column :book2_id, :integer
  end

305 306 307 308 309
  create_table :inept_wizards, :force => true do |t|
    t.column :name, :string, :null => false
    t.column :city, :string, :null => false
    t.column :type, :string
  end
310 311 312

  create_table :parrots, :force => true do |t|
    t.column :name, :string
313 314
    t.column :parrot_sti_class, :string
    t.column :killer_id, :integer
315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334
    t.column :created_at, :datetime
    t.column :created_on, :datetime
    t.column :updated_at, :datetime
    t.column :updated_on, :datetime
  end

  create_table :pirates, :force => true do |t|
    t.column :catchphrase, :string
    t.column :parrot_id, :integer
    t.column :created_on, :datetime
    t.column :updated_on, :datetime
  end

  create_table :parrots_pirates, :id => false, :force => true do |t|
    t.column :parrot_id, :integer
    t.column :pirate_id, :integer
  end

  create_table :treasures, :force => true do |t|
    t.column :name, :string
335 336
    t.column :looter_id, :integer
    t.column :looter_type, :string
337 338 339 340 341 342
  end

  create_table :parrots_treasures, :id => false, :force => true do |t|
    t.column :parrot_id, :integer
    t.column :treasure_id, :integer
  end
343

344 345 346 347 348
  create_table :mateys, :id => false, :force => true do |t|
    t.column :pirate_id, :integer
    t.column :target_id, :integer
    t.column :weight, :integer
  end
349 350 351 352 353 354 355 356

  create_table :ships, :force => true do |t|
    t.string :name
    t.datetime :created_at
    t.datetime :created_on
    t.datetime :updated_at
    t.datetime :updated_on
  end
357 358 359 360

  create_table 'warehouse-things', :force => true do |t|
    t.integer :value
  end
361 362 363 364 365 366 367 368 369

  create_table :owners, :primary_key => :owner_id ,:force => true do |t|
    t.string :name
  end

  create_table :pets, :primary_key => :pet_id ,:force => true do |t|
    t.string :name
    t.integer :owner_id, :integer
  end
370 371 372 373 374 375

  create_table :price_estimates, :force => true do |t|
    t.string :estimate_of_type
    t.integer :estimate_of_id
    t.integer :price
  end
376
end