1
+ require 'active_record'
2
+
3
+ ActiveRecord ::Schema . verbose = false
4
+
5
+ ### DATABASE
6
+ ActiveRecord ::Schema . define do
7
+ create_table :people , force : true do |t |
8
+ t . string :name
9
+ t . string :email
10
+ t . datetime :date_joined
11
+ t . belongs_to :preferences
12
+ t . integer :hair_cut_id , index : true
13
+ t . boolean :book_admin , default : false
14
+ t . boolean :special , default : false
15
+ t . timestamps null : false
16
+ end
17
+
18
+ create_table :author_details , force : true do |t |
19
+ t . integer :person_id
20
+ t . string :author_stuff
21
+ end
22
+
23
+ create_table :posts , force : true do |t |
24
+ t . string :title , length : 255
25
+ t . text :body
26
+ t . integer :author_id
27
+ t . integer :parent_post_id
28
+ t . belongs_to :section , index : true
29
+ t . timestamps null : false
30
+ end
31
+
32
+ create_table :comments , force : true do |t |
33
+ t . text :body
34
+ t . belongs_to :post , index : true
35
+ t . integer :author_id
36
+ t . timestamps null : false
37
+ end
38
+
39
+ create_table :companies , force : true do |t |
40
+ t . string :type
41
+ t . string :name
42
+ t . string :address
43
+ t . timestamps null : false
44
+ end
45
+
46
+ create_table :tags , force : true do |t |
47
+ t . string :name
48
+ t . timestamps null : false
49
+ end
50
+
51
+ create_table :sections , force : true do |t |
52
+ t . string :name
53
+ t . timestamps null : false
54
+ end
55
+
56
+ create_table :posts_tags , force : true do |t |
57
+ t . references :post , :tag , index : true
58
+ end
59
+ add_index :posts_tags , [ :post_id , :tag_id ] , unique : true
60
+
61
+ create_table :special_post_tags , force : true do |t |
62
+ t . references :post , :tag , index : true
63
+ end
64
+ add_index :special_post_tags , [ :post_id , :tag_id ] , unique : true
65
+
66
+ create_table :comments_tags , force : true do |t |
67
+ t . references :comment , :tag , index : true
68
+ end
69
+
70
+ create_table :iso_currencies , id : false , force : true do |t |
71
+ t . string :code , limit : 3 , null : false
72
+ t . string :name
73
+ t . string :country_name
74
+ t . string :minor_unit
75
+ t . timestamps null : false
76
+ end
77
+ add_index :iso_currencies , :code , unique : true
78
+
79
+ create_table :expense_entries , force : true do |t |
80
+ t . string :currency_code , limit : 3 , null : false
81
+ t . integer :employee_id , null : false
82
+ t . decimal :cost , precision : 12 , scale : 4 , null : false
83
+ t . date :transaction_date
84
+ t . timestamps null : false
85
+ end
86
+
87
+ create_table :planets , force : true do |t |
88
+ t . string :name
89
+ t . string :description
90
+ t . integer :planet_type_id
91
+ end
92
+
93
+ create_table :planets_tags , force : true do |t |
94
+ t . references :planet , :tag , index : true
95
+ end
96
+ add_index :planets_tags , [ :planet_id , :tag_id ] , unique : true
97
+
98
+ create_table :planet_types , force : true do |t |
99
+ t . string :name
100
+ end
101
+
102
+ create_table :moons , force : true do |t |
103
+ t . string :name
104
+ t . string :description
105
+ t . integer :planet_id
106
+ t . timestamps null : false
107
+ end
108
+
109
+ create_table :craters , id : false , force : true do |t |
110
+ t . string :code
111
+ t . string :description
112
+ t . integer :moon_id
113
+ t . timestamps null : false
114
+ end
115
+
116
+ create_table :preferences , force : true do |t |
117
+ t . integer :person_id
118
+ t . boolean :advanced_mode , default : false
119
+ t . timestamps null : false
120
+ end
121
+
122
+ create_table :facts , force : true do |t |
123
+ t . integer :person_id
124
+ t . string :spouse_name
125
+ t . text :bio
126
+ t . float :quality_rating
127
+ t . decimal :salary , precision : 12 , scale : 2
128
+ t . datetime :date_time_joined
129
+ t . date :birthday
130
+ t . time :bedtime
131
+ t . binary :photo , limit : 1 . kilobyte
132
+ t . boolean :cool
133
+ t . timestamps null : false
134
+ end
135
+
136
+ create_table :books , force : true do |t |
137
+ t . string :title
138
+ t . string :isbn
139
+ t . boolean :banned , default : false
140
+ t . timestamps null : false
141
+ end
142
+
143
+ create_table :book_authors , force : true do |t |
144
+ t . integer :book_id
145
+ t . integer :person_id
146
+ end
147
+
148
+ create_table :book_comments , force : true do |t |
149
+ t . text :body
150
+ t . belongs_to :book , index : true
151
+ t . integer :author_id
152
+ t . boolean :approved , default : true
153
+ t . timestamps null : false
154
+ end
155
+
156
+ create_table :customers , force : true do |t |
157
+ t . string :name
158
+ t . timestamps null : false
159
+ end
160
+
161
+ create_table :purchase_orders , force : true do |t |
162
+ t . date :order_date
163
+ t . date :requested_delivery_date
164
+ t . date :delivery_date
165
+ t . integer :customer_id
166
+ t . string :delivery_name
167
+ t . string :delivery_address_1
168
+ t . string :delivery_address_2
169
+ t . string :delivery_city
170
+ t . string :delivery_state
171
+ t . string :delivery_postal_code
172
+ t . float :delivery_fee
173
+ t . float :tax
174
+ t . float :total
175
+ t . timestamps null : false
176
+ end
177
+
178
+ create_table :order_flags , force : true do |t |
179
+ t . string :name
180
+ end
181
+
182
+ create_table :purchase_orders_order_flags , force : true do |t |
183
+ t . references :purchase_order , :order_flag , index : true
184
+ end
185
+ add_index :purchase_orders_order_flags , [ :purchase_order_id , :order_flag_id ] , unique : true , name : "po_flags_idx"
186
+
187
+ create_table :line_items , force : true do |t |
188
+ t . integer :purchase_order_id
189
+ t . string :part_number
190
+ t . string :quantity
191
+ t . float :item_cost
192
+ t . timestamps null : false
193
+ end
194
+
195
+ create_table :hair_cuts , force : true do |t |
196
+ t . string :style
197
+ end
198
+
199
+ create_table :numeros_telefone , force : true do |t |
200
+ t . string :numero_telefone
201
+ t . timestamps null : false
202
+ end
203
+
204
+ create_table :categories , force : true do |t |
205
+ t . string :name
206
+ t . string :status , limit : 10
207
+ t . timestamps null : false
208
+ end
209
+
210
+ create_table :pictures , force : true do |t |
211
+ t . string :name
212
+ t . integer :imageable_id
213
+ t . string :imageable_type
214
+ t . timestamps null : false
215
+ end
216
+
217
+ create_table :documents , force : true do |t |
218
+ t . string :name
219
+ t . timestamps null : false
220
+ end
221
+
222
+ create_table :products , force : true do |t |
223
+ t . string :name
224
+ t . timestamps null : false
225
+ end
226
+
227
+ create_table :vehicles , force : true do |t |
228
+ t . string :type
229
+ t . string :make
230
+ t . string :model
231
+ t . string :length_at_water_line
232
+ t . string :drive_layout
233
+ t . string :serial_number
234
+ t . integer :person_id
235
+ t . timestamps null : false
236
+ end
237
+
238
+ create_table :makes , force : true do |t |
239
+ t . string :model
240
+ t . timestamps null : false
241
+ end
242
+
243
+ # special cases - fields that look like they should be reserved names
244
+ create_table :hrefs , force : true do |t |
245
+ t . string :name
246
+ t . timestamps null : false
247
+ end
248
+
249
+ create_table :links , force : true do |t |
250
+ t . string :name
251
+ t . timestamps null : false
252
+ end
253
+
254
+ create_table :web_pages , force : true do |t |
255
+ t . string :href
256
+ t . string :link
257
+ t . timestamps null : false
258
+ end
259
+
260
+ create_table :questionables , force : true do |t |
261
+ t . timestamps null : false
262
+ end
263
+
264
+ create_table :boxes , force : true do |t |
265
+ t . string :name
266
+ t . timestamps null : false
267
+ end
268
+
269
+ create_table :things , force : true do |t |
270
+ t . string :name
271
+ t . references :user
272
+ t . references :box
273
+
274
+ t . timestamps null : false
275
+ end
276
+
277
+ create_table :users , force : true do |t |
278
+ t . string :name
279
+ t . timestamps null : false
280
+ end
281
+
282
+ create_table :related_things , force : true do |t |
283
+ t . string :name
284
+ t . references :from , references : :thing
285
+ t . references :to , references : :thing
286
+
287
+ t . timestamps null : false
288
+ end
289
+
290
+ create_table :questions , force : true do |t |
291
+ t . string :text
292
+ end
293
+
294
+ create_table :answers , force : true do |t |
295
+ t . references :question
296
+ t . integer :respondent_id
297
+ t . string :respondent_type
298
+ t . string :text
299
+ end
300
+
301
+ create_table :patients , force : true do |t |
302
+ t . string :name
303
+ end
304
+
305
+ create_table :doctors , force : true do |t |
306
+ t . string :name
307
+ end
308
+
309
+ # special cases
310
+ end
0 commit comments