· 7 years ago · Jan 21, 2018, 10:50 PM
1class CreateDb < ActiveRecord::Migration
2 def self.up
3 create_table :users do |t|
4 t.primary_key :id
5 t.integer :twitter_id, :limit => 8, :null => false
6 t.string :screen_name, :limit => 20, :null => false
7 t.string :description, :limit => 160
8 t.string :profile_img_url, :limit => 255
9 t.string :oauth_token, :limit => 255
10 t.string :oauth_token_secret, :limit => 255
11 t.timestamp :last_login
12 t.integer :last_since_id, :limit => 8
13 end
14
15 create_table :links do |t|
16 t.primary_key :id
17 t.integer :user_id, :limit => 8
18 t.string :short_url, :limit => 128
19 t.string :long_url, :limit => 512
20 t.string :title, :limit => 100
21 t.timestamp :created
22 t.boolean :clicked
23 end
24
25 create_table :authors do |t|
26 t.primary_key :id
27 t.integer :user_id, :limit => 8
28 t.string :screen_name, :limit => 20
29 end
30
31 create_table :authors_links do |t|
32 t.primary_key :id
33 t.integer :author_id, :limit => 8
34 t.integer :link_id, :limit => 8
35 end
36
37 execute("alter table links add foreign key (user_id) references users(id)")
38 execute("alter table authors add foreign key (user_id) references users(id)")
39 execute("alter table authors_links add foreign key (author_id) references authors(id)")
40 execute("alter table authors_links add foreign key (link_id) references links(id)")
41 end
42
43 def self.down
44 drop_table :authors_links
45 drop_table :authors
46 drop_table :links
47 drop_table :users
48 end
49end