fossil 0.3.45 → 0.3.46

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.45
1
+ 0.3.46
data/fossil.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{fossil}
8
- s.version = "0.3.45"
8
+ s.version = "0.3.46"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Patrick Lardin, Daniel Sudol"]
12
- s.date = %q{2010-04-25}
12
+ s.date = %q{2010-04-29}
13
13
  s.description = %q{Access FOS/betrieve db with this Sequel based orm wrapper}
14
14
  s.email = %q{plardin@xojet.com}
15
15
  s.files = [
@@ -121,10 +121,12 @@ Gem::Specification.new do |s|
121
121
  "lib/sequel/fos_dates.rb",
122
122
  "lib/sequel/metaprogramming.rb",
123
123
  "lib/sequel/model_patch.rb",
124
+ "lib/sequel/mysql_pervasive_adapter.rb",
124
125
  "lib/sequel/pervasive_adapter.rb",
125
126
  "lib/sequel/serializer/json_serializer.rb",
126
127
  "lib/sequel/serializer/serializer.rb",
127
128
  "lib/sequel/serializer/xml_serializer.rb",
129
+ "lib/sequel/sqlite_pervasive_adapter.rb",
128
130
  "lib/serial_number.rb",
129
131
  "spec/be_model_with_values_matcher.rb",
130
132
  "spec/be_model_with_values_matcher_spec.rb",
@@ -18,9 +18,7 @@ class TripLeg < Sequel::Model(:'trip legs')
18
18
  n_to_o :catering, :class=>:AirportService, :prefix=>'catering'
19
19
  n_to_o :crew_limo, :class=>:AirportService, :prefix=>'crewlimo'
20
20
  n_to_o :arrival_fbo, :class=>:AirportFbo, :prefix=>'fbo'
21
- # alias :arrival_fbo :airport_fbo # TODO replace assoc name airport_fbo with arrival_fbo
22
21
  n_to_o :departure_fbo, :class=>:AirportFbo, :prefix=>'fueler'
23
- # alias :departure_fbo :fueler # TODO replace assoc name fueler with departure_fbo
24
22
  n_to_o :leg_rate, :class=>:AircraftRate, :prefix=>'leg rate'
25
23
  n_to_o :leg_requestor, :class=>:Passenger, :prefix=>'leg req'
26
24
  n_to_o :pax_limo, :class=>:AirportService, :prefix=>'limo'
@@ -0,0 +1,62 @@
1
+ module MySql
2
+ module Pervasive
3
+ module DatabaseMethods
4
+
5
+ def dataset(opts = nil)
6
+ ds = super
7
+ ds.extend(DatasetMethods)
8
+ ds
9
+ end
10
+
11
+ def select_fields(table, *fields)
12
+ dataset.select_fields(table, *fields)
13
+ end
14
+
15
+ # if its not windows/linux where pervasive db is running in tests
16
+ # modify the pervasive adapter to act more like mysql for certain things
17
+ def auto_increment_sql;"AUTO_INCREMENT"; end
18
+ def begin_transaction_sql; "BEGIN" end
19
+ def commit_transaction_sql; "COMMIT" end
20
+ def rollback_transaction_sql; "ROLLBACK" end
21
+
22
+ def get_column_type(column_name)
23
+ if model and model.respond_to?(:datatypes) and model.datatypes and model.datatypes[column_name]
24
+ return model.datatypes[column_name][:type]
25
+ end
26
+ nil
27
+ end
28
+
29
+ end
30
+
31
+ module DatasetMethods
32
+
33
+ def select_clause_methods
34
+ super
35
+ end
36
+
37
+ def select_limit_sql(sql)
38
+ super(sql)
39
+ end
40
+
41
+ def quoted_identifier(name, convert=true)
42
+ convert ? "`#{convert_aliased_col_to_real_col(name)}`" : "`#{name}`"
43
+ end
44
+
45
+ def convert_aliased_col_to_real_col(col_name)
46
+ if respond_to?(:model) and model.respond_to?(:aliases) and model.aliases
47
+ sym_name = col_name.to_s.downcase.to_sym
48
+ col_name = model.aliases[sym_name].to_s.upcase if model.aliases.include? sym_name
49
+ end
50
+ col_name
51
+ end
52
+
53
+ def convert_aliased_col_to_real_col_with_model(col_name, model)
54
+ if model.respond_to?(:aliases) and model.aliases
55
+ sym_name = col_name.to_s.downcase.to_sym
56
+ col_name = model.aliases[sym_name].to_s.upcase if model.aliases.include? sym_name
57
+ end
58
+ col_name
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,106 @@
1
+ module Sqlite
2
+ module Pervasive
3
+ module DatabaseMethods
4
+
5
+ def dataset(opts = nil)
6
+ ds = super
7
+ ds.extend(DatasetMethods)
8
+ ds
9
+ end
10
+
11
+ def select_fields(table, *fields)
12
+ dataset.select_fields(table, *fields)
13
+ end
14
+
15
+ end
16
+
17
+ module DatasetMethods
18
+
19
+ def get_column_type(column_name)
20
+ if model and model.respond_to?(:datatypes) and model.datatypes and model.datatypes[column_name]
21
+ return model.datatypes[column_name][:type]
22
+ end
23
+ nil
24
+ end
25
+
26
+ def quoted_identifier(name, convert=true)
27
+ convert ? "\"#{convert_aliased_col_to_real_col(name)}\"" : "\"#{name}\""
28
+ end
29
+
30
+ # Take a table name and write out the field names for that table in this style:
31
+ # "`DUDES`.`KID - DATE`".lit where the table name is :dudes,
32
+ # and fields are [:kid_date]
33
+ def select_fields(hash)
34
+ new_hash = Hash.new{|k, v| k[v]= {}}
35
+
36
+ hash.each do |association, fields|
37
+ new_hash[association][:fields] = fields
38
+
39
+ if association == :self
40
+ new_hash[association][:model] = self.model
41
+ new_hash[association][:association_name] = self.model.table_name
42
+ elsif association.to_s.match /(\w+)__(\w+)/ # crew_legs__position_code
43
+ # not an assocation on the current model .. but another one
44
+ new_hash[association][:association_name] = $2.to_s.upcase
45
+ new_hash[association][:model] = model.association_reflection($1.to_sym)[:class].association_reflection($2.to_sym)[:class]
46
+ else
47
+ raise(Sequel::Error, "Invalid #{model} association: #{association}") unless model.association_reflection(association)
48
+ new_hash[association][:association_name] = association.to_s.upcase
49
+ new_hash[association][:model] = model.association_reflection(association)[:class]
50
+ end
51
+ fields = fields + new_hash[association][:model].primary_key unless fields[0] == :*
52
+ new_hash[association][:fields] = fields
53
+ end
54
+
55
+ s = []
56
+ new_hash.each do |association, hash|
57
+ if hash[:fields].size == 1 and hash[:fields][0] == :*
58
+ s << "#{quoted_identifier(hash[:association_name], false)}.*".lit
59
+ else
60
+ s << hash[:fields].collect do |field|
61
+ raw_field_name = convert_aliased_col_to_real_col_with_model(field, hash[:model])
62
+ as_alias = ''
63
+ raw_field_name
64
+
65
+ if association != :self and ( hash[:model].primary_key.include? field or field_duplicate(new_hash, association, field) )
66
+ as_field_name = "#{hash[:association_name]}_#{raw_field_name}"
67
+ as_alias = "AS #{quoted_identifier(as_field_name, false)}"
68
+ end
69
+ "#{quoted_identifier(hash[:association_name], false)}.#{quoted_identifier(raw_field_name, false)} #{as_alias}".lit
70
+ end
71
+ end
72
+ end
73
+
74
+ clone(:select => s.flatten)
75
+ end
76
+
77
+ private
78
+
79
+ # is the field name found in the fields of any other association besides the one you passed in
80
+ def field_duplicate(hash, association, field)
81
+ hash.each do |association_key, hash_values|
82
+ next if association_key == association
83
+ return true if hash_values[:fields].include? field
84
+ end
85
+ return false
86
+ end
87
+
88
+ def convert_aliased_col_to_real_col(col_name)
89
+ if respond_to?(:model) and model.respond_to?(:aliases) and model.aliases
90
+ sym_name = col_name.to_s.downcase.to_sym
91
+ col_name = model.aliases[sym_name].to_s.upcase if model.aliases.include? sym_name
92
+ end
93
+ col_name
94
+ end
95
+
96
+ def convert_aliased_col_to_real_col_with_model(col_name, model)
97
+ if model.respond_to?(:aliases) and model.aliases
98
+ sym_name = col_name.to_s.downcase.to_sym
99
+ col_name = model.aliases[sym_name].to_s.upcase if model.aliases.include? sym_name
100
+ end
101
+ col_name
102
+ end
103
+ end
104
+ end
105
+ end
106
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fossil
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.45
4
+ version: 0.3.46
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Lardin, Daniel Sudol
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-04-25 00:00:00 -07:00
12
+ date: 2010-04-29 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -159,10 +159,12 @@ files:
159
159
  - lib/sequel/fos_dates.rb
160
160
  - lib/sequel/metaprogramming.rb
161
161
  - lib/sequel/model_patch.rb
162
+ - lib/sequel/mysql_pervasive_adapter.rb
162
163
  - lib/sequel/pervasive_adapter.rb
163
164
  - lib/sequel/serializer/json_serializer.rb
164
165
  - lib/sequel/serializer/serializer.rb
165
166
  - lib/sequel/serializer/xml_serializer.rb
167
+ - lib/sequel/sqlite_pervasive_adapter.rb
166
168
  - lib/serial_number.rb
167
169
  - spec/be_model_with_values_matcher.rb
168
170
  - spec/be_model_with_values_matcher_spec.rb