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