uddf 0.3.0 → 0.4.0
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -4
- data/.rubocop_todo.yml +2 -7
- data/Gemfile.lock +1 -1
- data/README.md +36 -6
- data/lib/uddf/base/models/deco.rb +102 -0
- data/lib/uddf/base/models/dive_computer.rb +193 -0
- data/lib/uddf/base/models/generic.rb +787 -0
- data/lib/uddf/base/models/media.rb +66 -0
- data/lib/uddf/base/models.rb +6 -69
- data/lib/uddf/v300/models.rb +563 -0
- data/lib/uddf/v301/models.rb +564 -0
- data/lib/uddf/v310/models.rb +611 -0
- data/lib/uddf/v320/models.rb +632 -0
- data/lib/uddf/v321/models.rb +10 -0
- data/lib/uddf/v322/models.rb +636 -0
- data/lib/uddf/v323/models.rb +113 -1087
- data/lib/uddf/v330/models.rb +122 -1083
- data/lib/uddf/v331/models.rb +124 -1085
- data/lib/uddf/version.rb +1 -1
- data/lib/uddf.rb +7 -12
- metadata +11 -1
@@ -0,0 +1,787 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module UDDF
|
4
|
+
module Base
|
5
|
+
module Models
|
6
|
+
##
|
7
|
+
# Inside <address> the own (<owner> element) address data,
|
8
|
+
# or that of dive buddies (<buddy> element),
|
9
|
+
# or that of a shop (<shop> element) etc., are given.
|
10
|
+
class Address
|
11
|
+
include HappyMapper
|
12
|
+
|
13
|
+
tag "address"
|
14
|
+
|
15
|
+
has_one :street, String
|
16
|
+
has_one :city, String
|
17
|
+
has_one :postcode, String
|
18
|
+
has_one :country, String
|
19
|
+
has_one :province, String
|
20
|
+
end
|
21
|
+
|
22
|
+
##
|
23
|
+
# Inside <contact> data concerning getting in touch with some one are
|
24
|
+
# given, like phone number, email address, language etc.
|
25
|
+
class Contact
|
26
|
+
include HappyMapper
|
27
|
+
|
28
|
+
tag "contact"
|
29
|
+
|
30
|
+
has_many :emails, String, tag: "email"
|
31
|
+
has_many :faxes, String, tag: "fax"
|
32
|
+
has_many :homepages, String, tag: "homepage"
|
33
|
+
has_many :languages, String, tag: "language"
|
34
|
+
has_many :mobile_phones, String, tag: "mobilephone"
|
35
|
+
has_many :phones, String, tag: "phone"
|
36
|
+
end
|
37
|
+
|
38
|
+
class DateTimeField
|
39
|
+
include HappyMapper
|
40
|
+
|
41
|
+
element :raw, String, tag: "datetime"
|
42
|
+
|
43
|
+
# Lazily parse on first access; memoize in @date_time
|
44
|
+
def date_time
|
45
|
+
return @date_time if @date_time
|
46
|
+
|
47
|
+
content = raw.to_s.strip
|
48
|
+
return nil if content.empty?
|
49
|
+
|
50
|
+
@date_time =
|
51
|
+
case content
|
52
|
+
when /^\d{4}$/ # "YYYY"
|
53
|
+
DateTime.new(content.to_i, 1, 1)
|
54
|
+
when /^\d{4}-\d{2}$/ # "YYYY-MM"
|
55
|
+
y, m = content.split("-").map!(&:to_i)
|
56
|
+
DateTime.new(y, m, 1)
|
57
|
+
else
|
58
|
+
begin
|
59
|
+
DateTime.iso8601(content)
|
60
|
+
rescue ArgumentError, DateError
|
61
|
+
begin
|
62
|
+
DateTime.rfc3339(content)
|
63
|
+
rescue ArgumentError, DateError
|
64
|
+
DateTime.parse(content)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
# Allow manual assignment if you ever need it
|
71
|
+
attr_writer :date_time
|
72
|
+
end
|
73
|
+
|
74
|
+
class Manufacturer
|
75
|
+
include HappyMapper
|
76
|
+
|
77
|
+
tag "manufacturer"
|
78
|
+
|
79
|
+
attribute :id, String
|
80
|
+
has_one :address, Address
|
81
|
+
has_many :alias_names, String, tag: "aliasname"
|
82
|
+
has_one :contact, Contact
|
83
|
+
has_one :name, String
|
84
|
+
end
|
85
|
+
|
86
|
+
class Link
|
87
|
+
include HappyMapper
|
88
|
+
|
89
|
+
tag "link"
|
90
|
+
|
91
|
+
attribute :ref, String
|
92
|
+
end
|
93
|
+
|
94
|
+
class Generator
|
95
|
+
include HappyMapper
|
96
|
+
|
97
|
+
tag "generator"
|
98
|
+
|
99
|
+
has_many :alias_names, String, tag: "aliasname"
|
100
|
+
has_one :datetime, DateTime
|
101
|
+
has_many :links, Link, tag: "link"
|
102
|
+
has_one :name, String
|
103
|
+
has_one :type, String
|
104
|
+
has_one :version, String
|
105
|
+
end
|
106
|
+
|
107
|
+
class Notes
|
108
|
+
include HappyMapper
|
109
|
+
|
110
|
+
tag "notes"
|
111
|
+
|
112
|
+
has_many :paras, String, tag: "para"
|
113
|
+
has_many :links, Link, tag: "link"
|
114
|
+
end
|
115
|
+
|
116
|
+
class Price
|
117
|
+
include HappyMapper
|
118
|
+
|
119
|
+
tag "price"
|
120
|
+
|
121
|
+
attribute :currency, String
|
122
|
+
content :value, Float
|
123
|
+
end
|
124
|
+
|
125
|
+
class Shop
|
126
|
+
include HappyMapper
|
127
|
+
|
128
|
+
tag "shop"
|
129
|
+
|
130
|
+
has_many :alias_names, String, tag: "aliasname"
|
131
|
+
has_one :address, Address
|
132
|
+
has_one :contact, Contact
|
133
|
+
has_one :name, String
|
134
|
+
has_one :notes, Notes
|
135
|
+
end
|
136
|
+
|
137
|
+
class Purchase
|
138
|
+
include HappyMapper
|
139
|
+
|
140
|
+
tag "purchase"
|
141
|
+
|
142
|
+
has_one :datetime, DateTime
|
143
|
+
has_one :link, Link
|
144
|
+
has_one :price, Price
|
145
|
+
has_one :shop, Shop
|
146
|
+
end
|
147
|
+
|
148
|
+
class Mix
|
149
|
+
include HappyMapper
|
150
|
+
|
151
|
+
tag "mix"
|
152
|
+
|
153
|
+
attribute :id, String
|
154
|
+
has_many :alias_names, String, tag: "aliasname"
|
155
|
+
has_one :ar, Float
|
156
|
+
has_one :equivalent_air_depth, Float, tag: "equivalentairdepth"
|
157
|
+
has_one :h2, Float
|
158
|
+
has_one :he, Float
|
159
|
+
has_one :maximum_operation_depth, Float, tag: "maximumoperationdepth"
|
160
|
+
has_one :maximum_po2, Float, tag: "maximumpo2"
|
161
|
+
has_one :n2, Float
|
162
|
+
has_one :name, String
|
163
|
+
has_one :o2, Float
|
164
|
+
has_one :price_per_litre, Price, tag: "priceperlitre"
|
165
|
+
end
|
166
|
+
|
167
|
+
class GasDefinitions
|
168
|
+
include HappyMapper
|
169
|
+
|
170
|
+
tag "gasdefinitions"
|
171
|
+
|
172
|
+
has_many :mixes, Mix, tag: "mix"
|
173
|
+
end
|
174
|
+
|
175
|
+
class Medicine
|
176
|
+
include HappyMapper
|
177
|
+
|
178
|
+
tag "medicine"
|
179
|
+
|
180
|
+
has_many :alias_names, String, tag: "aliasname"
|
181
|
+
has_one :name, String
|
182
|
+
has_one :notes, Notes
|
183
|
+
has_one :periodically_taken, String, tag: "periodicallytaken"
|
184
|
+
has_one :timespan_before_dive, Float, tag: "timespanbeforedive"
|
185
|
+
end
|
186
|
+
|
187
|
+
class MedicationBeforeDive
|
188
|
+
include HappyMapper
|
189
|
+
|
190
|
+
tag "medicationbeforedive"
|
191
|
+
|
192
|
+
has_many :medicines, Medicine, tag: "medicine"
|
193
|
+
end
|
194
|
+
|
195
|
+
class Drink
|
196
|
+
include HappyMapper
|
197
|
+
|
198
|
+
tag "drink"
|
199
|
+
|
200
|
+
has_many :alias_names, String, tag: "aliasname"
|
201
|
+
has_one :name, String
|
202
|
+
has_one :notes, Notes
|
203
|
+
has_one :periodically_taken, String, tag: "periodicallytaken"
|
204
|
+
has_one :timespan_before_dive, Float, tag: "timespanbeforedive"
|
205
|
+
end
|
206
|
+
|
207
|
+
class AlcoholBeforeDive
|
208
|
+
include HappyMapper
|
209
|
+
|
210
|
+
tag "alcoholbeforedive"
|
211
|
+
|
212
|
+
has_many :drinks, Drink, tag: "drink"
|
213
|
+
end
|
214
|
+
|
215
|
+
class AnySymptoms
|
216
|
+
include HappyMapper
|
217
|
+
|
218
|
+
tag "anysymptoms"
|
219
|
+
|
220
|
+
has_one :notes, Notes
|
221
|
+
end
|
222
|
+
|
223
|
+
class Abundance
|
224
|
+
include HappyMapper
|
225
|
+
|
226
|
+
tag "abundance"
|
227
|
+
|
228
|
+
attribute :quality, String
|
229
|
+
attribute :occurrence, String
|
230
|
+
content :value, Integer
|
231
|
+
end
|
232
|
+
|
233
|
+
class Species
|
234
|
+
include HappyMapper
|
235
|
+
|
236
|
+
tag "species"
|
237
|
+
|
238
|
+
attribute :id, String
|
239
|
+
has_one :abundance, Abundance
|
240
|
+
has_one :age, Integer
|
241
|
+
has_one :dominance, String
|
242
|
+
has_one :life_stage, String, tag: "lifestage"
|
243
|
+
has_one :notes, Notes
|
244
|
+
has_one :scientific_name, String, tag: "scientificname"
|
245
|
+
has_one :sex, String
|
246
|
+
has_one :size, Float
|
247
|
+
has_one :trivial_name, String, tag: "trivialname"
|
248
|
+
end
|
249
|
+
|
250
|
+
class WithSpecies
|
251
|
+
include HappyMapper
|
252
|
+
|
253
|
+
has_many :species, Species, tag: "species"
|
254
|
+
end
|
255
|
+
|
256
|
+
class Invertebrata
|
257
|
+
include HappyMapper
|
258
|
+
|
259
|
+
tag "invertebrata"
|
260
|
+
|
261
|
+
has_one :ascidiacea, WithSpecies
|
262
|
+
has_one :bryozoan, WithSpecies
|
263
|
+
has_one :cnidaria, WithSpecies
|
264
|
+
has_one :coelenterata, WithSpecies
|
265
|
+
has_one :crustacea, WithSpecies
|
266
|
+
has_one :ctenophora, WithSpecies
|
267
|
+
has_one :echinodermata, WithSpecies
|
268
|
+
has_one :invertebrata_various, WithSpecies, tag: "invertebratavarious"
|
269
|
+
has_one :mollusca, WithSpecies
|
270
|
+
has_one :phoronidea, WithSpecies
|
271
|
+
has_one :plathelminthes, WithSpecies
|
272
|
+
has_one :porifera, WithSpecies
|
273
|
+
end
|
274
|
+
|
275
|
+
class Vertebrata
|
276
|
+
include HappyMapper
|
277
|
+
|
278
|
+
tag "vertebrata"
|
279
|
+
|
280
|
+
has_one :amphibia, WithSpecies
|
281
|
+
has_one :chondrichthyes, WithSpecies
|
282
|
+
has_one :mammalia, WithSpecies
|
283
|
+
has_one :osteichthyes, WithSpecies
|
284
|
+
has_one :reptilia, WithSpecies
|
285
|
+
has_one :vertebrata_various, WithSpecies, tag: "vertebratavarious"
|
286
|
+
end
|
287
|
+
|
288
|
+
class Fauna
|
289
|
+
include HappyMapper
|
290
|
+
|
291
|
+
tag "fauna"
|
292
|
+
|
293
|
+
has_one :invertebrata, Invertebrata
|
294
|
+
has_one :notes, Notes
|
295
|
+
has_one :vertebrata, Vertebrata
|
296
|
+
end
|
297
|
+
|
298
|
+
class Flora
|
299
|
+
include HappyMapper
|
300
|
+
|
301
|
+
tag "flora"
|
302
|
+
|
303
|
+
has_one :chlorophyceae, WithSpecies
|
304
|
+
has_one :flora_various, WithSpecies, tag: "floravarious"
|
305
|
+
has_one :notes, Notes
|
306
|
+
has_one :phaeophyceae, WithSpecies
|
307
|
+
has_one :rhodophyceae, WithSpecies
|
308
|
+
has_one :spermatophyta, WithSpecies
|
309
|
+
end
|
310
|
+
|
311
|
+
class Observations
|
312
|
+
include HappyMapper
|
313
|
+
|
314
|
+
tag "observations"
|
315
|
+
|
316
|
+
has_one :fauna, Fauna
|
317
|
+
has_one :flora, Flora
|
318
|
+
has_one :notes, Notes
|
319
|
+
end
|
320
|
+
|
321
|
+
class Geography
|
322
|
+
include HappyMapper
|
323
|
+
|
324
|
+
tag "geography"
|
325
|
+
|
326
|
+
has_one :address, Address
|
327
|
+
has_one :altitude, Float
|
328
|
+
has_one :latitude, Float
|
329
|
+
has_one :location, String
|
330
|
+
has_one :longitude, Float
|
331
|
+
has_one :time_zone, Float, tag: "timezone"
|
332
|
+
end
|
333
|
+
|
334
|
+
class Ecology
|
335
|
+
include HappyMapper
|
336
|
+
|
337
|
+
tag "ecology"
|
338
|
+
|
339
|
+
has_one :fauna, Fauna
|
340
|
+
has_one :flora, Flora
|
341
|
+
end
|
342
|
+
|
343
|
+
class Built
|
344
|
+
include HappyMapper
|
345
|
+
|
346
|
+
tag "built"
|
347
|
+
|
348
|
+
has_one :launching_date, DateTimeField, tag: "launchingdate"
|
349
|
+
has_one :ship_yard, String, tag: "shipyard"
|
350
|
+
end
|
351
|
+
|
352
|
+
class ShipDimension
|
353
|
+
include HappyMapper
|
354
|
+
|
355
|
+
tag "shipdimension"
|
356
|
+
|
357
|
+
has_one :beam, Float
|
358
|
+
has_one :displacement, Float
|
359
|
+
has_one :draught, Float
|
360
|
+
has_one :length, Float
|
361
|
+
has_one :tonnage, Float
|
362
|
+
end
|
363
|
+
|
364
|
+
class Wreck
|
365
|
+
include HappyMapper
|
366
|
+
|
367
|
+
tag "wreck"
|
368
|
+
|
369
|
+
has_many :alias_names, String, tag: "aliasname"
|
370
|
+
has_one :built, Built
|
371
|
+
has_one :name, String
|
372
|
+
has_one :nationality, String
|
373
|
+
has_one :ship_dimension, ShipDimension, tag: "shipdimension"
|
374
|
+
has_one :ship_type, String, tag: "shiptype"
|
375
|
+
has_one :sunk, DateTimeField
|
376
|
+
end
|
377
|
+
|
378
|
+
class Shore
|
379
|
+
include HappyMapper
|
380
|
+
|
381
|
+
tag "shore"
|
382
|
+
|
383
|
+
attribute :id, String
|
384
|
+
has_many :alias_names, String, tag: "aliasname"
|
385
|
+
has_one :name, String
|
386
|
+
has_one :notes, Notes
|
387
|
+
end
|
388
|
+
|
389
|
+
class River
|
390
|
+
include HappyMapper
|
391
|
+
|
392
|
+
tag "river"
|
393
|
+
|
394
|
+
attribute :id, String
|
395
|
+
has_many :alias_names, String, tag: "aliasname"
|
396
|
+
has_one :name, String
|
397
|
+
has_one :notes, Notes
|
398
|
+
end
|
399
|
+
|
400
|
+
class Lake
|
401
|
+
include HappyMapper
|
402
|
+
|
403
|
+
tag "lake"
|
404
|
+
|
405
|
+
attribute :id, String
|
406
|
+
has_many :alias_names, String, tag: "aliasname"
|
407
|
+
has_one :name, String
|
408
|
+
has_one :notes, Notes
|
409
|
+
end
|
410
|
+
|
411
|
+
class Indoor
|
412
|
+
include HappyMapper
|
413
|
+
|
414
|
+
tag "indoor"
|
415
|
+
|
416
|
+
has_one :address, Address
|
417
|
+
has_many :alias_names, String, tag: "aliasname"
|
418
|
+
has_one :contact, Contact
|
419
|
+
has_one :name, String
|
420
|
+
has_one :notes, Notes
|
421
|
+
end
|
422
|
+
|
423
|
+
class Cave
|
424
|
+
include HappyMapper
|
425
|
+
|
426
|
+
tag "cave"
|
427
|
+
|
428
|
+
attribute :id, String
|
429
|
+
has_many :alias_names, String, tag: "aliasname"
|
430
|
+
has_one :name, String
|
431
|
+
has_one :notes, Notes
|
432
|
+
end
|
433
|
+
|
434
|
+
class SiteData
|
435
|
+
include HappyMapper
|
436
|
+
|
437
|
+
tag "sidedata"
|
438
|
+
|
439
|
+
has_one :area_length, Float, tag: "arealength"
|
440
|
+
has_one :area_width, Float, tag: "areawidth"
|
441
|
+
has_one :average_visibility, Float, tag: "averagevisibility"
|
442
|
+
has_one :bottom, String
|
443
|
+
has_one :cave, Cave
|
444
|
+
has_one :density, Float
|
445
|
+
has_one :difficulty, Integer
|
446
|
+
has_one :global_light_intensity, String, tag: "globallightintensity"
|
447
|
+
has_one :indoor, Indoor
|
448
|
+
has_one :maximum_depth, Float, tag: "maximumdepth"
|
449
|
+
has_one :maximum_visibility, Float, tag: "maximumvisibility"
|
450
|
+
has_one :minimum_depth, Float, tag: "minimumdepth"
|
451
|
+
has_one :minimum_visibility, Float, tag: "minimumvisibility"
|
452
|
+
has_one :river, River
|
453
|
+
has_one :shore, Shore
|
454
|
+
has_one :terrain, String
|
455
|
+
has_one :wreck, Wreck
|
456
|
+
end
|
457
|
+
|
458
|
+
class Rating
|
459
|
+
include HappyMapper
|
460
|
+
|
461
|
+
tag "rating"
|
462
|
+
|
463
|
+
has_one :datetime, DateTime
|
464
|
+
has_one :rating_value, Integer, tag: "ratingvalue"
|
465
|
+
end
|
466
|
+
|
467
|
+
class Site
|
468
|
+
include HappyMapper
|
469
|
+
|
470
|
+
tag "site"
|
471
|
+
|
472
|
+
attribute :id, String
|
473
|
+
has_many :alias_names, String, tag: "aliasname"
|
474
|
+
has_one :ecology, Ecology
|
475
|
+
has_one :environment, String
|
476
|
+
has_one :geography, Geography
|
477
|
+
has_many :links, Link, tag: "link"
|
478
|
+
has_one :name, String
|
479
|
+
has_one :notes, Notes
|
480
|
+
has_many :ratings, Rating, tag: "rating"
|
481
|
+
has_one :side_data, SiteData, tag: "sitedata"
|
482
|
+
end
|
483
|
+
|
484
|
+
class Membership
|
485
|
+
include HappyMapper
|
486
|
+
|
487
|
+
tag "membership"
|
488
|
+
|
489
|
+
attribute :organisation, String
|
490
|
+
attribute :member_id, String, tag: "memberid"
|
491
|
+
end
|
492
|
+
|
493
|
+
class NumberOfDives
|
494
|
+
include HappyMapper
|
495
|
+
|
496
|
+
tag "numberofdives"
|
497
|
+
|
498
|
+
has_one :start_date, DateTime, tag: "startdate"
|
499
|
+
has_one :end_date, DateTime, tag: "enddate"
|
500
|
+
has_one :dives, Integer
|
501
|
+
end
|
502
|
+
|
503
|
+
class Personal
|
504
|
+
include HappyMapper
|
505
|
+
|
506
|
+
tag "personal"
|
507
|
+
|
508
|
+
has_one :birth_date, DateTimeField, tag: "birthdate"
|
509
|
+
has_one :birth_name, String, tag: "birthname"
|
510
|
+
has_one :blood_group, String, tag: "bloodgroup"
|
511
|
+
has_one :first_name, String, tag: "firstname"
|
512
|
+
has_one :height, Float
|
513
|
+
has_one :honorific, String
|
514
|
+
has_one :last_name, String, tag: "lastname"
|
515
|
+
has_one :membership, Membership
|
516
|
+
has_one :middle_name, String, tag: "middlename"
|
517
|
+
has_one :number_of_dives, NumberOfDives, tag: "numberofdives"
|
518
|
+
has_one :sex, String
|
519
|
+
has_one :smoking, String
|
520
|
+
has_one :weight, Float
|
521
|
+
end
|
522
|
+
|
523
|
+
class Instructor
|
524
|
+
include HappyMapper
|
525
|
+
|
526
|
+
tag "instructor"
|
527
|
+
|
528
|
+
has_one :address, Address
|
529
|
+
has_one :contact, Contact
|
530
|
+
has_one :personal, Personal
|
531
|
+
end
|
532
|
+
|
533
|
+
class Doctor
|
534
|
+
include HappyMapper
|
535
|
+
|
536
|
+
tag "doctor"
|
537
|
+
|
538
|
+
attribute :id, String
|
539
|
+
has_one :address, Address
|
540
|
+
has_one :contact, Contact
|
541
|
+
has_one :personal, Personal
|
542
|
+
end
|
543
|
+
|
544
|
+
class Examination
|
545
|
+
include HappyMapper
|
546
|
+
|
547
|
+
tag "examination"
|
548
|
+
|
549
|
+
has_one :datetime, DateTime
|
550
|
+
has_one :doctor, Doctor
|
551
|
+
has_one :examination_result, String, tag: "examinationresult"
|
552
|
+
has_many :links, Link, tag: "link"
|
553
|
+
has_one :notes, Notes
|
554
|
+
has_one :total_lung_capacity, Float, tag: "totallungcapacity"
|
555
|
+
has_one :vital_capacity, Float, tag: "vitalcapacity"
|
556
|
+
end
|
557
|
+
|
558
|
+
class Medical
|
559
|
+
include HappyMapper
|
560
|
+
|
561
|
+
tag "medical"
|
562
|
+
|
563
|
+
has_one :examination, Examination
|
564
|
+
end
|
565
|
+
|
566
|
+
class Certification
|
567
|
+
include HappyMapper
|
568
|
+
|
569
|
+
tag "certification"
|
570
|
+
|
571
|
+
has_one :instructor, Instructor
|
572
|
+
has_one :issue_date, DateTimeField, tag: "issuedate"
|
573
|
+
has_one :level, String
|
574
|
+
has_one :link, Link
|
575
|
+
has_one :organization, String
|
576
|
+
has_one :specialty, String
|
577
|
+
has_one :valid_date, DateTimeField, tag: "validdate"
|
578
|
+
end
|
579
|
+
|
580
|
+
class CertificationV322 < Certification
|
581
|
+
include HappyMapper
|
582
|
+
|
583
|
+
# Added in v3.2.2
|
584
|
+
has_one :certificate_number, String, tag: "certificatenumber"
|
585
|
+
end
|
586
|
+
|
587
|
+
class Education
|
588
|
+
include HappyMapper
|
589
|
+
|
590
|
+
tag "education"
|
591
|
+
|
592
|
+
has_many :certifications, Certification, tag: "certification"
|
593
|
+
end
|
594
|
+
|
595
|
+
class EducationV322 < Education
|
596
|
+
include HappyMapper
|
597
|
+
|
598
|
+
has_many :certifications, CertificationV322, tag: "certification"
|
599
|
+
end
|
600
|
+
|
601
|
+
class Vessel
|
602
|
+
include HappyMapper
|
603
|
+
|
604
|
+
tag "vessel"
|
605
|
+
|
606
|
+
has_one :address, Address
|
607
|
+
has_many :alias_names, String, tag: "aliasname"
|
608
|
+
has_one :contact, Contact
|
609
|
+
has_one :marina, String
|
610
|
+
has_one :name, String
|
611
|
+
has_one :notes, Notes
|
612
|
+
has_many :ratings, Rating, tag: "rating"
|
613
|
+
has_one :ship_dimension, ShipDimension, tag: "shipdimension"
|
614
|
+
has_one :ship_type, String, tag: "shiptype"
|
615
|
+
end
|
616
|
+
|
617
|
+
class Operator
|
618
|
+
include HappyMapper
|
619
|
+
|
620
|
+
tag "operator"
|
621
|
+
|
622
|
+
has_many :alias_names, String, tag: "aliasname"
|
623
|
+
has_one :address, Address
|
624
|
+
has_one :contact, Contact
|
625
|
+
has_one :name, String
|
626
|
+
has_one :notes, Notes
|
627
|
+
has_many :ratings, Rating, tag: "rating"
|
628
|
+
end
|
629
|
+
|
630
|
+
class DateOfTrip
|
631
|
+
include HappyMapper
|
632
|
+
|
633
|
+
tag "dateoftrip"
|
634
|
+
|
635
|
+
attribute :start_date, DateTime, tag: "startdate"
|
636
|
+
attribute :end_date, DateTime, tag: "enddate"
|
637
|
+
end
|
638
|
+
|
639
|
+
class Accommodation
|
640
|
+
include HappyMapper
|
641
|
+
|
642
|
+
tag "accommodation"
|
643
|
+
|
644
|
+
has_one :address, Address
|
645
|
+
has_many :alias_names, String, tag: "aliasname"
|
646
|
+
has_one :category, String
|
647
|
+
has_one :contact, Contact
|
648
|
+
has_one :name, String
|
649
|
+
has_one :notes, Notes
|
650
|
+
has_many :ratings, Rating, tag: "rating"
|
651
|
+
end
|
652
|
+
|
653
|
+
class PriceDivePackage
|
654
|
+
include HappyMapper
|
655
|
+
|
656
|
+
tag "pricedivepackage"
|
657
|
+
|
658
|
+
attribute :currency, String
|
659
|
+
attribute :no_of_dives, Integer, tag: "noofdives"
|
660
|
+
content :value, Float
|
661
|
+
end
|
662
|
+
|
663
|
+
class RelatedDives
|
664
|
+
include HappyMapper
|
665
|
+
|
666
|
+
tag "relateddives"
|
667
|
+
|
668
|
+
has_many :links, Link, tag: "link"
|
669
|
+
end
|
670
|
+
|
671
|
+
class TripPart
|
672
|
+
include HappyMapper
|
673
|
+
|
674
|
+
tag "trippart"
|
675
|
+
|
676
|
+
attribute :type, String
|
677
|
+
has_one :accommodation, Accommodation
|
678
|
+
has_one :date_of_trip, DateOfTrip, tag: "dateoftrip"
|
679
|
+
has_one :geography, Geography
|
680
|
+
has_many :links, Link, tag: "link"
|
681
|
+
has_one :name, String
|
682
|
+
has_one :notes, Notes
|
683
|
+
has_one :operator, Operator
|
684
|
+
has_one :price_dive_package, PriceDivePackage, tag: "pricedivepackage"
|
685
|
+
has_one :price_per_dive, Price, tag: "priceperdive"
|
686
|
+
has_one :related_dives, RelatedDives, tag: "relateddives"
|
687
|
+
has_one :vessel, Vessel
|
688
|
+
end
|
689
|
+
|
690
|
+
class Trip
|
691
|
+
include HappyMapper
|
692
|
+
|
693
|
+
tag "trip"
|
694
|
+
|
695
|
+
attribute :id, String
|
696
|
+
has_many :alias_names, String, tag: "aliasname"
|
697
|
+
has_one :name, String
|
698
|
+
has_many :ratings, Rating, tag: "rating"
|
699
|
+
has_many :trip_parts, TripPart, tag: "trippart"
|
700
|
+
end
|
701
|
+
|
702
|
+
class DiveTrip
|
703
|
+
include HappyMapper
|
704
|
+
|
705
|
+
tag "divetrip"
|
706
|
+
|
707
|
+
has_many :trips, Trip, tag: "trip"
|
708
|
+
end
|
709
|
+
|
710
|
+
class Guide
|
711
|
+
include HappyMapper
|
712
|
+
|
713
|
+
tag "guide"
|
714
|
+
|
715
|
+
has_many :links, Link, tag: "link"
|
716
|
+
end
|
717
|
+
|
718
|
+
class DiveBase
|
719
|
+
include HappyMapper
|
720
|
+
|
721
|
+
tag "divebase"
|
722
|
+
|
723
|
+
attribute :id, String
|
724
|
+
has_one :address, Address
|
725
|
+
has_many :alias_names, String, tag: "aliasname"
|
726
|
+
has_one :contact, Contact
|
727
|
+
has_many :guides, Guide, tag: "guide"
|
728
|
+
has_many :links, Link, tag: "link"
|
729
|
+
has_one :name, String
|
730
|
+
has_one :notes, Notes
|
731
|
+
has_one :price_dive_package, PriceDivePackage, tag: "pricedivepackage"
|
732
|
+
has_one :price_per_dive, Price, tag: "priceperdive"
|
733
|
+
has_many :ratings, Rating, tag: "rating"
|
734
|
+
end
|
735
|
+
|
736
|
+
class DiveSite
|
737
|
+
include HappyMapper
|
738
|
+
|
739
|
+
tag "divesite"
|
740
|
+
|
741
|
+
has_many :dive_bases, DiveBase, tag: "divebase"
|
742
|
+
has_many :sites, Site, tag: "site"
|
743
|
+
end
|
744
|
+
|
745
|
+
class Insurance
|
746
|
+
include HappyMapper
|
747
|
+
|
748
|
+
tag "insurance"
|
749
|
+
|
750
|
+
has_many :alias_names, String, tag: "aliasname"
|
751
|
+
has_one :issue_date, DateTimeField, tag: "issuedate"
|
752
|
+
has_one :name, String
|
753
|
+
has_one :notes, Notes
|
754
|
+
has_one :valid_date, DateTimeField, tag: "validdate"
|
755
|
+
end
|
756
|
+
|
757
|
+
class DiveInsurances
|
758
|
+
include HappyMapper
|
759
|
+
|
760
|
+
tag "diveinsurances"
|
761
|
+
|
762
|
+
has_many :insurances, Insurance, tag: "insurance"
|
763
|
+
end
|
764
|
+
|
765
|
+
class Permit
|
766
|
+
include HappyMapper
|
767
|
+
|
768
|
+
tag "permit"
|
769
|
+
|
770
|
+
has_many :alias_names, String, tag: "aliasname"
|
771
|
+
has_one :issue_date, DateTimeField, tag: "issuedate"
|
772
|
+
has_one :name, String
|
773
|
+
has_one :notes, Notes
|
774
|
+
has_one :region, String
|
775
|
+
has_one :valid_date, DateTimeField, tag: "validdate"
|
776
|
+
end
|
777
|
+
|
778
|
+
class DivePermissions
|
779
|
+
include HappyMapper
|
780
|
+
|
781
|
+
tag "divepermissions"
|
782
|
+
|
783
|
+
has_many :permits, Permit, tag: "permit"
|
784
|
+
end
|
785
|
+
end
|
786
|
+
end
|
787
|
+
end
|