activefacts-examples 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rspec +1 -0
  4. data/.travis.yml +4 -0
  5. data/Gemfile +10 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +22 -0
  8. data/Rakefile +6 -0
  9. data/activefacts-examples.gemspec +26 -0
  10. data/cql/Address.cql +44 -0
  11. data/cql/Astronomy.cql +35 -0
  12. data/cql/Blog.cql +54 -0
  13. data/cql/CinemaBookings.cql +64 -0
  14. data/cql/CinemaTickets.cql +127 -0
  15. data/cql/CompanyDirectorEmployee.cql +56 -0
  16. data/cql/Death.cql +17 -0
  17. data/cql/Diplomacy.cql +48 -0
  18. data/cql/Genealogy.cql +98 -0
  19. data/cql/Health.cql +78 -0
  20. data/cql/Insurance.cql +320 -0
  21. data/cql/Marriage.cql +18 -0
  22. data/cql/Metamodel.cql +567 -0
  23. data/cql/Monogamy.cql +24 -0
  24. data/cql/MultiInheritance.cql +22 -0
  25. data/cql/MultipleSubtyping.cql +30 -0
  26. data/cql/NonRoleId.cql +14 -0
  27. data/cql/OddIdentifier.cql +18 -0
  28. data/cql/OilSupply.cql +53 -0
  29. data/cql/OneRoleNesting.cql +38 -0
  30. data/cql/OneToOnes.cql +17 -0
  31. data/cql/Orienteering.cql +111 -0
  32. data/cql/PartyModel.cql +38 -0
  33. data/cql/PersonPlaysGame.cql +18 -0
  34. data/cql/RedundantDependency.cql +34 -0
  35. data/cql/SchoolActivities.cql +33 -0
  36. data/cql/SeparateSubtype.cql +30 -0
  37. data/cql/ServiceDirector.cql +276 -0
  38. data/cql/SimplestUnary.cql +12 -0
  39. data/cql/Supervision.cql +34 -0
  40. data/cql/VenueSeating.cql +45 -0
  41. data/cql/WaiterTips.cql +33 -0
  42. data/cql/Warehousing.cql +101 -0
  43. data/cql/WindowInRoomInBldg.cql +28 -0
  44. data/cql/unit.cql +474 -0
  45. data/diagrams/json/Address.json +41 -0
  46. data/diagrams/json/Astronomy.json +31 -0
  47. data/diagrams/json/Blog.json +46 -0
  48. data/diagrams/json/CinemaBookings.json +53 -0
  49. data/diagrams/json/CinemaTickets.json +101 -0
  50. data/diagrams/json/CompanyDirectorEmployee.json +44 -0
  51. data/diagrams/json/Death.json +20 -0
  52. data/diagrams/json/Diplomacy.json +34 -0
  53. data/diagrams/json/Genealogy.json +78 -0
  54. data/diagrams/json/Insurance.json +259 -0
  55. data/diagrams/json/Marriage.json +21 -0
  56. data/diagrams/json/Metamodel.json +318 -0
  57. data/diagrams/json/Monogamy.json +22 -0
  58. data/diagrams/json/MultiInheritance.json +25 -0
  59. data/diagrams/json/MultipleSubtyping.json +22 -0
  60. data/diagrams/json/OilSupply.json +49 -0
  61. data/diagrams/json/OneRoleNesting.json +37 -0
  62. data/diagrams/json/Orienteering.json +94 -0
  63. data/diagrams/json/PersonPlaysGame.json +22 -0
  64. data/diagrams/json/RedundantDependency.json +33 -0
  65. data/diagrams/json/SchoolActivities.json +28 -0
  66. data/diagrams/json/SeparateSubtype.json +29 -0
  67. data/diagrams/json/SimplestUnary.json +15 -0
  68. data/diagrams/json/Supervision.json +27 -0
  69. data/diagrams/json/VenueSeating.json +40 -0
  70. data/diagrams/json/WaiterTips.json +29 -0
  71. data/diagrams/json/Warehousing.json +86 -0
  72. data/diagrams/json/WindowInRoomInBldg.json +31 -0
  73. data/images/Address.SQL.png +0 -0
  74. data/images/Address.png +0 -0
  75. data/images/Blog.png +0 -0
  76. data/images/CinemaBookings.png +0 -0
  77. data/images/CinemaTickets.png +0 -0
  78. data/images/CompanyDirectorEmployee.png +0 -0
  79. data/images/Death.png +0 -0
  80. data/images/Diplomacy.png +0 -0
  81. data/images/DumpMetamodel.bat +2 -0
  82. data/images/Genealogy.png +0 -0
  83. data/images/Insurance/Claim.png +0 -0
  84. data/images/Insurance/Insurance.png +0 -0
  85. data/images/Insurance/Person.png +0 -0
  86. data/images/Insurance/Policy.png +0 -0
  87. data/images/Insurance/Related.png +0 -0
  88. data/images/Insurance/VehicleIncident.png +0 -0
  89. data/images/Marriage.png +0 -0
  90. data/images/Metamodel/Concepts.png +0 -0
  91. data/images/Metamodel/Constraints.png +0 -0
  92. data/images/Metamodel/ContextNote.png +0 -0
  93. data/images/Metamodel/Diagrams.png +0 -0
  94. data/images/Metamodel/Language.png +0 -0
  95. data/images/Metamodel/Legacy.png +0 -0
  96. data/images/Metamodel/Objects.png +0 -0
  97. data/images/Metamodel/Populations.png +0 -0
  98. data/images/Metamodel/Query.png +0 -0
  99. data/images/Metamodel/Units.png +0 -0
  100. data/images/Metamodel/ValueConstraints.png +0 -0
  101. data/images/Metamodel/ValueTypes.png +0 -0
  102. data/images/MetamodelER.bcp +1 -0
  103. data/images/MetamodelER.pdf +0 -0
  104. data/images/MultiInheritance.png +0 -0
  105. data/images/NorthwindER.png +0 -0
  106. data/images/OilSupply.png +0 -0
  107. data/images/Orienteering/Administration.png +0 -0
  108. data/images/Orienteering/Registration.png +0 -0
  109. data/images/Orienteering/Scoring.png +0 -0
  110. data/images/PersonPlaysGame.png +0 -0
  111. data/images/RedundantDependency.png +0 -0
  112. data/images/SchoolActivities.png +0 -0
  113. data/images/SeparateSubtype.png +0 -0
  114. data/images/SimplestUnary.png +0 -0
  115. data/images/Supervision.png +0 -0
  116. data/images/VenueSeating.png +0 -0
  117. data/images/WaiterTips.png +0 -0
  118. data/images/Warehousing.png +0 -0
  119. data/images/WindowInRoomInBldg.png +0 -0
  120. data/metadata/json/Astronomy.json +175 -0
  121. data/metadata/json/CinemaBookings.json +354 -0
  122. data/metadata/json/CinemaTickets.json +768 -0
  123. data/metadata/json/CompanyDirectorEmployee.json +270 -0
  124. data/metadata/json/Diplomacy.json +186 -0
  125. data/metadata/json/Metamodel.json +3214 -0
  126. data/metadata/json/OilSupply.json +411 -0
  127. data/metadata/json/SeparateSubtype.json +157 -0
  128. data/metadata/json/Supervision.json +128 -0
  129. data/metadata/json/VenueSeating.json +209 -0
  130. data/orm/.gitignore +11 -0
  131. data/orm/Address.orm +1268 -0
  132. data/orm/Astronomy.orm +925 -0
  133. data/orm/Blog.orm +1711 -0
  134. data/orm/CinemaBookings.orm +1998 -0
  135. data/orm/CinemaTickets.orm +5060 -0
  136. data/orm/CompanyDirectorEmployee.orm +2094 -0
  137. data/orm/Death.orm +386 -0
  138. data/orm/Diplomacy.orm +1478 -0
  139. data/orm/ExampleModels2010.csproj +764 -0
  140. data/orm/ExampleModels2010.sln +16 -0
  141. data/orm/Genealogy.orm +3209 -0
  142. data/orm/Health.orm +2407 -0
  143. data/orm/Insurance.orm +12727 -0
  144. data/orm/Marriage.orm +493 -0
  145. data/orm/Metamodel.orm +20998 -0
  146. data/orm/Monogamy.orm +328 -0
  147. data/orm/MultiInheritance.orm +537 -0
  148. data/orm/MultipleSubtyping.orm +347 -0
  149. data/orm/OilSupply.orm +2533 -0
  150. data/orm/OneRoleNesting.orm +1237 -0
  151. data/orm/Orienteering.orm +3976 -0
  152. data/orm/PersonPlaysGame.orm +426 -0
  153. data/orm/RedundantDependency.orm +844 -0
  154. data/orm/SchoolActivities.orm +961 -0
  155. data/orm/SeparateSubtype.orm +821 -0
  156. data/orm/SimplestUnary.orm +172 -0
  157. data/orm/Supervision.orm +734 -0
  158. data/orm/VenueSeating.orm +1289 -0
  159. data/orm/WaiterTips.orm +789 -0
  160. data/orm/Warehousing.orm +3792 -0
  161. data/orm/WindowInRoomInBldg.orm +772 -0
  162. data/rails/models/Astronomy.models +17 -0
  163. data/rails/models/CinemaBookings.models +123 -0
  164. data/rails/models/CinemaTickets.models +192 -0
  165. data/rails/models/Diplomacy.models +126 -0
  166. data/rails/models/Metamodel.models +894 -0
  167. data/rails/models/OneRoleNesting.models +18 -0
  168. data/rails/models/SeparateSubtype.models +49 -0
  169. data/rails/models/VenueSeating.models +70 -0
  170. data/rails/schema/Astronomy.schema.rb +25 -0
  171. data/rails/schema/CinemaBookings.schema.rb +78 -0
  172. data/rails/schema/CinemaTickets.schema.rb +132 -0
  173. data/rails/schema/Diplomacy.schema.rb +74 -0
  174. data/rails/schema/Metamodel.schema.rb +538 -0
  175. data/rails/schema/OneRoleNesting.rb +20 -0
  176. data/rails/schema/SeparateSubtype.schema.rb +35 -0
  177. data/rails/schema/VenueSeating.schema.rb +46 -0
  178. data/rails/schema/Warehousing.schema.rb +145 -0
  179. data/ruby/Address.rb +68 -0
  180. data/ruby/Astronomy.rb +55 -0
  181. data/ruby/Blog.rb +84 -0
  182. data/ruby/CinemaBookings.rb +109 -0
  183. data/ruby/CinemaTickets.rb +218 -0
  184. data/ruby/CompanyDirectorEmployee.rb +73 -0
  185. data/ruby/Death.rb +26 -0
  186. data/ruby/Diplomacy.rb +59 -0
  187. data/ruby/Genealogy.rb +173 -0
  188. data/ruby/Insurance.rb +562 -0
  189. data/ruby/Marriage.rb +21 -0
  190. data/ruby/Metamodel.rb +621 -0
  191. data/ruby/Monogamy.rb +27 -0
  192. data/ruby/MultiInheritance.rb +38 -0
  193. data/ruby/OilSupply.rb +112 -0
  194. data/ruby/OneRoleNesting.rb +66 -0
  195. data/ruby/Orienteering.rb +216 -0
  196. data/ruby/PersonPlaysGame.rb +31 -0
  197. data/ruby/RedundantDependency.rb +53 -0
  198. data/ruby/SchoolActivities.rb +49 -0
  199. data/ruby/SeparateSubtype.rb +46 -0
  200. data/ruby/SimplestUnary.rb +10 -0
  201. data/ruby/Supervision.rb +33 -0
  202. data/ruby/TwoValues.rb +14 -0
  203. data/ruby/VenueSeating.rb +64 -0
  204. data/ruby/WaiterTips.rb +49 -0
  205. data/ruby/Warehousing.rb +167 -0
  206. data/ruby/WindowInRoomInBldg.rb +45 -0
  207. data/sql/server/Address.sql +40 -0
  208. data/sql/server/Astronomy.sql +36 -0
  209. data/sql/server/Blog.sql +78 -0
  210. data/sql/server/CinemaBookings.sql +95 -0
  211. data/sql/server/CinemaTickets.sql +191 -0
  212. data/sql/server/CompanyDirectorEmployee.sql +104 -0
  213. data/sql/server/Death.sql +11 -0
  214. data/sql/server/Diplomacy.sql +66 -0
  215. data/sql/server/Genealogy.sql +138 -0
  216. data/sql/server/Health.sql +169 -0
  217. data/sql/server/Insurance.sql +484 -0
  218. data/sql/server/Marriage.sql +30 -0
  219. data/sql/server/Metamodel.sql +1000 -0
  220. data/sql/server/Monogamy.sql +20 -0
  221. data/sql/server/MultiInheritance.sql +27 -0
  222. data/sql/server/OilSupply.sql +105 -0
  223. data/sql/server/OneRoleNesting.sql +29 -0
  224. data/sql/server/Orienteering.sql +186 -0
  225. data/sql/server/PersonPlaysGame.sql +9 -0
  226. data/sql/server/RedundantDependency.sql +54 -0
  227. data/sql/server/SchoolActivities.sql +30 -0
  228. data/sql/server/SeparateSubtype.sql +33 -0
  229. data/sql/server/SimplestUnary.sql +9 -0
  230. data/sql/server/Supervision.sql +30 -0
  231. data/sql/server/VenueSeating.sql +54 -0
  232. data/sql/server/WaiterTips.sql +31 -0
  233. data/sql/server/Warehousing.sql +203 -0
  234. data/sql/server/WindowInRoomInBldg.sql +13 -0
  235. data/transform/surrogate/Address.absorption +2 -0
  236. data/transform/surrogate/Blog.absorption +5 -0
  237. data/transform/surrogate/CinemaBookings.absorption +7 -0
  238. data/transform/surrogate/CompanyDirectorEmployee.absorption +7 -0
  239. data/transform/surrogate/Death.absorption +1 -0
  240. data/transform/surrogate/Diplomacy-revised.absorption +6 -0
  241. data/transform/surrogate/Diplomacy.absorption +6 -0
  242. data/transform/surrogate/Genealogy.absorption +8 -0
  243. data/transform/surrogate/Insurance.absorption +18 -0
  244. data/transform/surrogate/Marriage.absorption +2 -0
  245. data/transform/surrogate/Metamodel.absorption +25 -0
  246. data/transform/surrogate/Monogamy.absorption +1 -0
  247. data/transform/surrogate/MultiInheritance.absorption +1 -0
  248. data/transform/surrogate/MultipleSubtyping.absorption +1 -0
  249. data/transform/surrogate/OilSupply.absorption +8 -0
  250. data/transform/surrogate/OneRoleNesting.absorption +1 -0
  251. data/transform/surrogate/Orienteering.absorption +11 -0
  252. data/transform/surrogate/PersonPlaysGame.absorption +1 -0
  253. data/transform/surrogate/RedundantDependency.absorption +3 -0
  254. data/transform/surrogate/SchoolActivities.absorption +3 -0
  255. data/transform/surrogate/SeparateSubtype.absorption +3 -0
  256. data/transform/surrogate/SimplestUnary.absorption +1 -0
  257. data/transform/surrogate/Supervision.absorption +2 -0
  258. data/transform/surrogate/WaiterTips.absorption +3 -0
  259. data/transform/surrogate/Warehousing.absorption +12 -0
  260. data/transform/surrogate/WindowInRoomInBldg.absorption +1 -0
  261. data/transform/surrogate/unit.absorption +0 -0
  262. metadata +374 -0
@@ -0,0 +1,18 @@
1
+
2
+ module Concernz
3
+ module Party
4
+ extend ActiveSupport::Concern
5
+ included do
6
+ self.primary_key = 'party_id'
7
+
8
+ # maybe Party is a Person and Person is involved in Birth and maybe Birth was assisted by attending-Doctor and Doctor is a kind of Person and Person is a kind of Party
9
+ belongs_to :party_via_person_birth_doctor_person, :class_name => 'Party', :foreign_key => :person_attending_doctor_id
10
+
11
+ # Party is a Person and Person is a Doctor and maybe Doctor attended Birth and Birth involves Person and maybe Person is a kind of Party
12
+ has_many :parties_via_person_birth_doctor_person, :class_name => 'Party', :foreign_key => :person_attending_doctor_id, :dependent => :destroy
13
+
14
+ validates :party_moniker_accuracy_level, :presence => true
15
+ validates :party_moniker_party_name, :presence => true
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,49 @@
1
+
2
+ module Concernz
3
+ module Claim
4
+ extend ActiveSupport::Concern
5
+ included do
6
+ self.primary_key = 'claim_id'
7
+
8
+ # maybe Claim concerns Incident and maybe Incident was independently witnessed by Witness and Witness is a kind of Person
9
+ belongs_to :person_via_incident_witness, :class_name => 'Person', :foreign_key => :incident_witness_id
10
+
11
+ # Claim concerns Incident and Incident is a Vehicle Incident
12
+ has_one :vehicle_incident_via_incident, :class_name => 'VehicleIncident', :foreign_key => :incident_claim_id, :dependent => :destroy
13
+ end
14
+ end
15
+ end
16
+
17
+ module Concernz
18
+ module Person
19
+ extend ActiveSupport::Concern
20
+ included do
21
+ self.primary_key = 'person_id'
22
+
23
+ # Person is a Witness and maybe Witness saw Incident and maybe Incident resulted in Claim
24
+ has_many :claims_via_incident_witness, :class_name => 'Claim', :foreign_key => :incident_witness_id, :dependent => :destroy
25
+
26
+ # Person is a Driver and maybe Vehicle Incident occurred while Driver was in charge
27
+ has_many :vehicle_incidents_via_driver, :class_name => 'VehicleIncident', :foreign_key => :driver_id, :dependent => :destroy
28
+
29
+ validates :person_name, :presence => true
30
+ end
31
+ end
32
+ end
33
+
34
+ module Concernz
35
+ module VehicleIncident
36
+ extend ActiveSupport::Concern
37
+ included do
38
+ self.primary_key = 'incident_claim_id'
39
+
40
+ # Vehicle Incident is a kind of Incident and Incident resulted in Claim
41
+ belongs_to :claim_via_incident, :class_name => 'Claim', :foreign_key => :incident_claim_id
42
+
43
+ # maybe Vehicle Incident occurred while Driver was in charge and Driver is a kind of Person
44
+ belongs_to :person_via_driver, :class_name => 'Person', :foreign_key => :driver_id
45
+
46
+ validates :incident_claim_id, :presence => true
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,70 @@
1
+
2
+ module Concernz
3
+ module Event
4
+ extend ActiveSupport::Concern
5
+ included do
6
+ self.primary_key = 'event_id'
7
+
8
+ # Event is held at Venue
9
+ belongs_to :venue, :foreign_key => :venue_id
10
+
11
+ # Event issued Ticket
12
+ has_many :tickets, :class_name => 'Ticket', :foreign_key => :event_id, :dependent => :destroy
13
+ has_many :seats, :through => :tickets
14
+
15
+ validates :venue_id, :presence => true
16
+ end
17
+ end
18
+ end
19
+
20
+ module Concernz
21
+ module Seat
22
+ extend ActiveSupport::Concern
23
+ included do
24
+ self.primary_key = 'seat_id'
25
+
26
+ # Seat is at Venue
27
+ belongs_to :venue, :foreign_key => :venue_id
28
+
29
+ # Ticket is for Seat
30
+ has_many :tickets, :class_name => 'Ticket', :foreign_key => :seat_id, :dependent => :destroy
31
+ has_many :events, :through => :tickets
32
+
33
+ validates :number, :presence => true
34
+ validates :reserve_name, :presence => true
35
+ validates :row_code, :presence => true
36
+ validates :venue_id, :presence => true
37
+ end
38
+ end
39
+ end
40
+
41
+ module Concernz
42
+ module Ticket
43
+ extend ActiveSupport::Concern
44
+ included do
45
+ # Ticket is for Event
46
+ belongs_to :event, :foreign_key => :event_id
47
+
48
+ # Ticket is for Seat
49
+ belongs_to :seat, :foreign_key => :seat_id
50
+
51
+ validates :event_id, :presence => true
52
+ validates :seat_id, :presence => true
53
+ end
54
+ end
55
+ end
56
+
57
+ module Concernz
58
+ module Venue
59
+ extend ActiveSupport::Concern
60
+ included do
61
+ self.primary_key = 'venue_id'
62
+
63
+ # Venue hosts Event
64
+ has_many :events, :class_name => 'Event', :foreign_key => :venue_id, :dependent => :destroy
65
+
66
+ # Venue has Seat
67
+ has_many :seats, :class_name => 'Seat', :foreign_key => :venue_id, :dependent => :destroy
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,25 @@
1
+ #
2
+ # schema.rb auto-generated using ActiveFacts for Astronomy on 2015-07-08
3
+ #
4
+
5
+ ActiveRecord::Base.logger = Logger.new(STDOUT)
6
+ ActiveRecord::Schema.define(:version => 20150708011545) do
7
+ enable_extension 'pgcrypto' unless extension_enabled?('pgcrypto')
8
+ create_table "astronomical_objects", :id => false, :force => true do |t|
9
+ t.column "astronomical_object_id", :primary_key, :null => false
10
+ t.column "astronomical_object_code", :string, :limit => 12, :null => false
11
+ t.column "is_in_orbit", :boolean, :null => true
12
+ t.column "mass", :float, :limit => 32, :null => true
13
+ t.column "moon_name", :string, :limit => 256, :null => true
14
+ t.column "orbit_center_astronomical_object_id", :integer, :null => true
15
+ t.column "orbit_nr_days", :float, :limit => 32, :null => true
16
+ t.column "planet_name", :string, :limit => 256, :null => true
17
+ end
18
+
19
+ add_index "astronomical_objects", ["astronomical_object_code"], :name => :index_astronomical_objects_on_astronomical_object_code, :unique => true
20
+
21
+ unless ENV["EXCLUDE_FKS"]
22
+ add_foreign_key :astronomical_objects, :astronomical_objects, :column => :orbit_center_astronomical_object_id, :primary_key => :astronomical_object_id, :on_delete => :cascade
23
+ add_index :astronomical_objects, [:orbit_center_astronomical_object_id], :unique => false, :name => :index_astronomical_objects_on_orbit_center_astronomic__575580d6
24
+ end
25
+ end
@@ -0,0 +1,78 @@
1
+ #
2
+ # schema.rb auto-generated using ActiveFacts for CinemaBookings on 2015-07-08
3
+ #
4
+
5
+ ActiveRecord::Base.logger = Logger.new(STDOUT)
6
+ ActiveRecord::Schema.define(:version => 20150708011546) do
7
+ enable_extension 'pgcrypto' unless extension_enabled?('pgcrypto')
8
+ create_table "bookings", :id => false, :force => true do |t|
9
+ t.column "booking_id", :primary_key, :null => false
10
+ t.column "person_id", :integer, :null => false
11
+ t.column "session_id", :integer, :null => false
12
+ t.column "is_confirmed", :boolean, :null => true
13
+ t.column "number", :integer, :limit => 16, :null => false
14
+ end
15
+
16
+ add_index "bookings", ["person_id", "session_id"], :name => :index_bookings_on_person_id_session_id, :unique => true
17
+
18
+ create_table "cinemas", :id => false, :force => true do |t|
19
+ t.column "cinema_id", :primary_key, :null => false
20
+ end
21
+
22
+
23
+ create_table "films", :id => false, :force => true do |t|
24
+ t.column "film_id", :primary_key, :null => false
25
+ t.column "name", :string, :null => true
26
+ end
27
+
28
+
29
+ create_table "people", :id => false, :force => true do |t|
30
+ t.column "person_id", :primary_key, :null => false
31
+ t.column "login_name", :string, :null => false
32
+ end
33
+
34
+ add_index "people", ["login_name"], :name => :index_people_on_login_name, :unique => true
35
+
36
+ create_table "seats", :id => false, :force => true do |t|
37
+ t.column "seat_id", :primary_key, :null => false
38
+ t.column "row_cinema_id", :integer, :null => false
39
+ t.column "row_nr", :string, :limit => 2, :null => false
40
+ t.column "seat_number", :integer, :limit => 16, :null => false
41
+ t.column "section_name", :string, :null => true
42
+ end
43
+
44
+ add_index "seats", ["row_cinema_id", "row_nr", "seat_number"], :name => :index_seats_on_row_cinema_id_row_nr_seat_number, :unique => true
45
+
46
+ create_table "seat_allocations", :id => false, :force => true do |t|
47
+ t.column "booking_id", :integer, :null => false
48
+ t.column "allocated_seat_id", :integer, :null => false
49
+ end
50
+
51
+ add_index "seat_allocations", ["booking_id", "allocated_seat_id"], :name => :index_seat_allocations_on_booking_id_allocated_seat_id, :unique => true
52
+
53
+ create_table "sessions", :id => false, :force => true do |t|
54
+ t.column "session_id", :primary_key, :null => false
55
+ t.column "cinema_id", :integer, :null => false
56
+ t.column "film_id", :integer, :null => false
57
+ t.column "date_time_value", :datetime, :null => false
58
+ end
59
+
60
+ add_index "sessions", ["cinema_id", "date_time_value"], :name => :index_sessions_on_cinema_id_date_time_value, :unique => true
61
+
62
+ unless ENV["EXCLUDE_FKS"]
63
+ add_foreign_key :bookings, :people, :column => :person_id, :primary_key => :person_id, :on_delete => :cascade
64
+ add_index :bookings, [:person_id], :unique => false, :name => :index_bookings_on_person_id
65
+ add_foreign_key :bookings, :sessions, :column => :session_id, :primary_key => :session_id, :on_delete => :cascade
66
+ add_index :bookings, [:session_id], :unique => false, :name => :index_bookings_on_session_id
67
+ add_foreign_key :seats, :cinemas, :column => :row_cinema_id, :primary_key => :cinema_id, :on_delete => :cascade
68
+ add_index :seats, [:row_cinema_id], :unique => false, :name => :index_seats_on_row_cinema_id
69
+ add_foreign_key :seat_allocations, :bookings, :column => :booking_id, :primary_key => :booking_id, :on_delete => :cascade
70
+ add_index :seat_allocations, [:booking_id], :unique => false, :name => :index_seat_allocations_on_booking_id
71
+ add_foreign_key :seat_allocations, :seats, :column => :allocated_seat_id, :primary_key => :seat_id, :on_delete => :cascade
72
+ add_index :seat_allocations, [:allocated_seat_id], :unique => false, :name => :index_seat_allocations_on_allocated_seat_id
73
+ add_foreign_key :sessions, :cinemas, :column => :cinema_id, :primary_key => :cinema_id, :on_delete => :cascade
74
+ add_index :sessions, [:cinema_id], :unique => false, :name => :index_sessions_on_cinema_id
75
+ add_foreign_key :sessions, :films, :column => :film_id, :primary_key => :film_id, :on_delete => :cascade
76
+ add_index :sessions, [:film_id], :unique => false, :name => :index_sessions_on_film_id
77
+ end
78
+ end
@@ -0,0 +1,132 @@
1
+ #
2
+ # schema.rb auto-generated using ActiveFacts for CinemaTickets on 2015-07-08
3
+ #
4
+
5
+ ActiveRecord::Base.logger = Logger.new(STDOUT)
6
+ ActiveRecord::Schema.define(:version => 20150708011547) do
7
+ enable_extension 'pgcrypto' unless extension_enabled?('pgcrypto')
8
+ create_table "allocatable_cinema_sections", :id => false, :force => true do |t|
9
+ t.column "allocatable_cinema_section_id", :primary_key, :null => false
10
+ t.column "cinema_id", :integer, :null => false
11
+ t.column "section_name", :string, :null => false
12
+ end
13
+
14
+ add_index "allocatable_cinema_sections", ["cinema_id", "section_name"], :name => :index_allocatable_cinema_sections_on_cinema_id_section_name, :unique => true
15
+
16
+ create_table "bookings", :id => false, :force => true do |t|
17
+ t.column "booking_id", :primary_key, :null => false
18
+ t.column "person_id", :integer, :null => false
19
+ t.column "session_id", :integer, :null => false
20
+ t.column "address_text", :text, :null => true
21
+ t.column "booking_nr", :integer, :limit => 32, :null => false
22
+ t.column "collection_code", :integer, :limit => 32, :null => true
23
+ t.column "number", :integer, :limit => 16, :null => false
24
+ t.column "section_name", :string, :null => true
25
+ t.column "tickets_for_have_been_issued", :boolean, :null => true
26
+ end
27
+
28
+ add_index "bookings", ["booking_nr"], :name => :index_bookings_on_booking_nr, :unique => true
29
+ add_index "bookings", ["person_id", "session_id"], :name => :index_bookings_on_person_id_session_id, :unique => true
30
+
31
+ create_table "cinemas", :id => false, :force => true do |t|
32
+ t.column "cinema_id", :primary_key, :null => false
33
+ t.column "name", :string, :null => false
34
+ end
35
+
36
+ add_index "cinemas", ["name"], :name => :index_cinemas_on_name, :unique => true
37
+
38
+ create_table "films", :id => false, :force => true do |t|
39
+ t.column "film_id", :primary_key, :null => false
40
+ t.column "name", :string, :null => false
41
+ t.column "year_nr", :integer, :limit => 32, :null => true
42
+ end
43
+
44
+ add_index "films", ["name", "year_nr"], :name => :index_films_on_name_year_nr
45
+
46
+ create_table "people", :id => false, :force => true do |t|
47
+ t.column "person_id", :primary_key, :null => false
48
+ t.column "encrypted_password", :string, :null => true
49
+ t.column "login_name", :string, :null => true
50
+ end
51
+
52
+ add_index "people", ["login_name"], :name => :index_people_on_login_name
53
+
54
+ create_table "places_paids", :id => false, :force => true do |t|
55
+ t.column "places_paid_id", :primary_key, :null => false
56
+ t.column "booking_id", :integer, :null => false
57
+ t.column "number", :integer, :limit => 16, :null => false
58
+ t.column "payment_method_code", :string, :null => false
59
+ end
60
+
61
+ add_index "places_paids", ["booking_id", "payment_method_code"], :name => :index_places_paids_on_booking_id_payment_method_code, :unique => true
62
+
63
+ create_table "seats", :id => false, :force => true do |t|
64
+ t.column "seat_id", :primary_key, :null => false
65
+ t.column "row_cinema_id", :integer, :null => false
66
+ t.column "row_nr", :string, :limit => 2, :null => false
67
+ t.column "seat_number", :integer, :limit => 16, :null => false
68
+ t.column "section_name", :string, :null => true
69
+ end
70
+
71
+ add_index "seats", ["row_cinema_id", "row_nr", "seat_number"], :name => :index_seats_on_row_cinema_id_row_nr_seat_number, :unique => true
72
+
73
+ create_table "seat_allocations", :id => false, :force => true do |t|
74
+ t.column "booking_id", :integer, :null => false
75
+ t.column "allocated_seat_id", :integer, :null => false
76
+ end
77
+
78
+ add_index "seat_allocations", ["booking_id", "allocated_seat_id"], :name => :index_seat_allocations_on_booking_id_allocated_seat_id, :unique => true
79
+
80
+ create_table "sessions", :id => false, :force => true do |t|
81
+ t.column "session_id", :primary_key, :null => false
82
+ t.column "cinema_id", :integer, :null => false
83
+ t.column "film_id", :integer, :null => false
84
+ t.column "is_high_demand", :boolean, :null => true
85
+ t.column "session_time_day", :integer, :limit => 32, :null => false
86
+ t.column "session_time_hour", :integer, :limit => 32, :null => false
87
+ t.column "session_time_minute", :integer, :limit => 32, :null => false
88
+ t.column "session_time_month_nr", :integer, :limit => 32, :null => false
89
+ t.column "session_time_year_nr", :integer, :limit => 32, :null => false
90
+ t.column "uses_allocated_seating", :boolean, :null => true
91
+ end
92
+
93
+ add_index "sessions", ["cinema_id", "session_time_year_nr", "session_time_month_nr", "session_time_day", "session_time_hour", "session_time_minute"], :name => :index_sessions_on_cinema_id_session_time_year_nr_sess__7a05f3be, :unique => true
94
+
95
+ create_table "ticket_pricings", :id => false, :force => true do |t|
96
+ t.column "ticket_pricing_id", :primary_key, :null => false
97
+ t.column "cinema_id", :integer, :null => false
98
+ t.column "high_demand", :boolean, :null => false
99
+ t.column "price", :decimal, :null => false
100
+ t.column "section_name", :string, :null => false
101
+ t.column "session_time_day", :integer, :limit => 32, :null => false
102
+ t.column "session_time_hour", :integer, :limit => 32, :null => false
103
+ t.column "session_time_minute", :integer, :limit => 32, :null => false
104
+ t.column "session_time_month_nr", :integer, :limit => 32, :null => false
105
+ t.column "session_time_year_nr", :integer, :limit => 32, :null => false
106
+ end
107
+
108
+ add_index "ticket_pricings", ["session_time_year_nr", "session_time_month_nr", "session_time_day", "session_time_hour", "session_time_minute", "cinema_id", "section_name", "high_demand"], :name => :index_ticket_pricings_on_session_time_year_nr_session__181a38a0, :unique => true
109
+
110
+ unless ENV["EXCLUDE_FKS"]
111
+ add_foreign_key :allocatable_cinema_sections, :cinemas, :column => :cinema_id, :primary_key => :cinema_id, :on_delete => :cascade
112
+ add_index :allocatable_cinema_sections, [:cinema_id], :unique => false, :name => :index_allocatable_cinema_sections_on_cinema_id
113
+ add_foreign_key :bookings, :people, :column => :person_id, :primary_key => :person_id, :on_delete => :cascade
114
+ add_index :bookings, [:person_id], :unique => false, :name => :index_bookings_on_person_id
115
+ add_foreign_key :bookings, :sessions, :column => :session_id, :primary_key => :session_id, :on_delete => :cascade
116
+ add_index :bookings, [:session_id], :unique => false, :name => :index_bookings_on_session_id
117
+ add_foreign_key :places_paids, :bookings, :column => :booking_id, :primary_key => :booking_id, :on_delete => :cascade
118
+ add_index :places_paids, [:booking_id], :unique => false, :name => :index_places_paids_on_booking_id
119
+ add_foreign_key :seats, :cinemas, :column => :row_cinema_id, :primary_key => :cinema_id, :on_delete => :cascade
120
+ add_index :seats, [:row_cinema_id], :unique => false, :name => :index_seats_on_row_cinema_id
121
+ add_foreign_key :seat_allocations, :bookings, :column => :booking_id, :primary_key => :booking_id, :on_delete => :cascade
122
+ add_index :seat_allocations, [:booking_id], :unique => false, :name => :index_seat_allocations_on_booking_id
123
+ add_foreign_key :seat_allocations, :seats, :column => :allocated_seat_id, :primary_key => :seat_id, :on_delete => :cascade
124
+ add_index :seat_allocations, [:allocated_seat_id], :unique => false, :name => :index_seat_allocations_on_allocated_seat_id
125
+ add_foreign_key :sessions, :cinemas, :column => :cinema_id, :primary_key => :cinema_id, :on_delete => :cascade
126
+ add_index :sessions, [:cinema_id], :unique => false, :name => :index_sessions_on_cinema_id
127
+ add_foreign_key :sessions, :films, :column => :film_id, :primary_key => :film_id, :on_delete => :cascade
128
+ add_index :sessions, [:film_id], :unique => false, :name => :index_sessions_on_film_id
129
+ add_foreign_key :ticket_pricings, :cinemas, :column => :cinema_id, :primary_key => :cinema_id, :on_delete => :cascade
130
+ add_index :ticket_pricings, [:cinema_id], :unique => false, :name => :index_ticket_pricings_on_cinema_id
131
+ end
132
+ end
@@ -0,0 +1,74 @@
1
+ #
2
+ # schema.rb auto-generated using ActiveFacts for Diplomacy on 2015-07-08
3
+ #
4
+
5
+ ActiveRecord::Base.logger = Logger.new(STDOUT)
6
+ ActiveRecord::Schema.define(:version => 20150708011557) do
7
+ enable_extension 'pgcrypto' unless extension_enabled?('pgcrypto')
8
+ create_table "countries", :id => false, :force => true do |t|
9
+ t.column "country_id", :primary_key, :null => false
10
+ t.column "country_name", :string, :null => false
11
+ end
12
+
13
+ add_index "countries", ["country_name"], :name => :index_countries_on_country_name, :unique => true
14
+
15
+ create_table "diplomats", :id => false, :force => true do |t|
16
+ t.column "diplomat_id", :primary_key, :null => false
17
+ t.column "represented_country_id", :integer, :null => false
18
+ t.column "served_country_id", :integer, :null => false
19
+ t.column "diplomat_name", :string, :null => false
20
+ end
21
+
22
+ add_index "diplomats", ["diplomat_name"], :name => :index_diplomats_on_diplomat_name, :unique => true
23
+
24
+ create_table "fluencies", :id => false, :force => true do |t|
25
+ t.column "diplomat_id", :integer, :null => false
26
+ t.column "language_id", :integer, :null => false
27
+ end
28
+
29
+ add_index "fluencies", ["diplomat_id", "language_id"], :name => :index_fluencies_on_diplomat_id_language_id, :unique => true
30
+
31
+ create_table "languages", :id => false, :force => true do |t|
32
+ t.column "language_id", :primary_key, :null => false
33
+ t.column "language_name", :string, :null => false
34
+ end
35
+
36
+ add_index "languages", ["language_name"], :name => :index_languages_on_language_name, :unique => true
37
+
38
+ create_table "language_uses", :id => false, :force => true do |t|
39
+ t.column "language_id", :integer, :null => false
40
+ t.column "country_id", :integer, :null => false
41
+ end
42
+
43
+ add_index "language_uses", ["language_id", "country_id"], :name => :index_language_uses_on_language_id_country_id, :unique => true
44
+
45
+ create_table "representations", :id => false, :force => true do |t|
46
+ t.column "representation_id", :primary_key, :null => false
47
+ t.column "ambassador_id", :integer, :null => false
48
+ t.column "country_id", :integer, :null => false
49
+ t.column "represented_country_id", :integer, :null => false
50
+ end
51
+
52
+ add_index "representations", ["represented_country_id", "country_id"], :name => :index_representations_on_represented_country_id_country_id, :unique => true
53
+
54
+ unless ENV["EXCLUDE_FKS"]
55
+ add_foreign_key :diplomats, :countries, :column => :represented_country_id, :primary_key => :country_id, :on_delete => :cascade
56
+ add_index :diplomats, [:represented_country_id], :unique => false, :name => :index_diplomats_on_represented_country_id
57
+ add_foreign_key :diplomats, :countries, :column => :served_country_id, :primary_key => :country_id, :on_delete => :cascade
58
+ add_index :diplomats, [:served_country_id], :unique => false, :name => :index_diplomats_on_served_country_id
59
+ add_foreign_key :fluencies, :diplomats, :column => :diplomat_id, :primary_key => :diplomat_id, :on_delete => :cascade
60
+ add_index :fluencies, [:diplomat_id], :unique => false, :name => :index_fluencies_on_diplomat_id
61
+ add_foreign_key :fluencies, :languages, :column => :language_id, :primary_key => :language_id, :on_delete => :cascade
62
+ add_index :fluencies, [:language_id], :unique => false, :name => :index_fluencies_on_language_id
63
+ add_foreign_key :language_uses, :countries, :column => :country_id, :primary_key => :country_id, :on_delete => :cascade
64
+ add_index :language_uses, [:country_id], :unique => false, :name => :index_language_uses_on_country_id
65
+ add_foreign_key :language_uses, :languages, :column => :language_id, :primary_key => :language_id, :on_delete => :cascade
66
+ add_index :language_uses, [:language_id], :unique => false, :name => :index_language_uses_on_language_id
67
+ add_foreign_key :representations, :countries, :column => :country_id, :primary_key => :country_id, :on_delete => :cascade
68
+ add_index :representations, [:country_id], :unique => false, :name => :index_representations_on_country_id
69
+ add_foreign_key :representations, :countries, :column => :represented_country_id, :primary_key => :country_id, :on_delete => :cascade
70
+ add_index :representations, [:represented_country_id], :unique => false, :name => :index_representations_on_represented_country_id
71
+ add_foreign_key :representations, :diplomats, :column => :ambassador_id, :primary_key => :diplomat_id, :on_delete => :cascade
72
+ add_index :representations, [:ambassador_id], :unique => false, :name => :index_representations_on_ambassador_id
73
+ end
74
+ end