fastapi 0.1.14 → 0.1.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/fastapi.rb +66 -37
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a6ce23d8deee325849253771c6e3d086fc39198
|
4
|
+
data.tar.gz: 5f19315c1ae01f124a089c67878a31106e821b57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76b3a8277e2973aacd8bcb43c025cdd5feb386b86f4c0b259fcc827d24111d8ae70d49f50ebd1c672f66e844c353e69679e4df69951072d57c4ceb566f03154b
|
7
|
+
data.tar.gz: b3374e4f49364f4d5878e9cc605be36d2510a7bd5f6f8c97b3b32a9bea232baf7de099b74623f8d822d0080d9c98b5b3b9e8b87bec0a97003c6cf9e97d330242
|
data/lib/fastapi.rb
CHANGED
@@ -543,7 +543,7 @@ class FastAPI
|
|
543
543
|
self_obj = model.nil? ? @model : model
|
544
544
|
self_string_table = model.nil? ? @model.to_s.tableize : '__' + model.to_s.tableize
|
545
545
|
|
546
|
-
filters = filters.clone()
|
546
|
+
filters = filters.clone().symbolize_keys
|
547
547
|
# if we're at the top level...
|
548
548
|
if model.nil?
|
549
549
|
|
@@ -579,9 +579,9 @@ class FastAPI
|
|
579
579
|
found_index = key.to_s.rindex('__')
|
580
580
|
key_root = found_index.nil? ? key : key.to_s[0...found_index].to_sym
|
581
581
|
if not self_obj.column_names.include? key_root.to_s
|
582
|
-
if not model.nil? or (
|
583
|
-
|
584
|
-
|
582
|
+
if not model.nil? or not (
|
583
|
+
@model.reflect_on_all_associations(:has_many).map(&:name).include? key_root or
|
584
|
+
@model.reflect_on_all_associations(:belongs_to).map(&:name).include? key_root
|
585
585
|
)
|
586
586
|
raise 'Filter "' + key.to_s + '" not supported'
|
587
587
|
end
|
@@ -591,9 +591,11 @@ class FastAPI
|
|
591
591
|
|
592
592
|
filter_array = []
|
593
593
|
filter_has_many = {}
|
594
|
+
filter_belongs_to = {}
|
594
595
|
|
595
596
|
order = nil
|
596
597
|
order_has_many = {}
|
598
|
+
order_belongs_to = {}
|
597
599
|
|
598
600
|
if filters.size > 0
|
599
601
|
|
@@ -652,52 +654,77 @@ class FastAPI
|
|
652
654
|
|
653
655
|
end
|
654
656
|
|
655
|
-
if model.nil?
|
657
|
+
if model.nil?
|
656
658
|
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
order_has_many[key] = filter_result[:main_order]
|
659
|
+
puts 'What the Fuck'
|
660
|
+
puts key
|
661
|
+
puts self_obj
|
661
662
|
|
662
|
-
|
663
|
+
if self_obj.reflect_on_all_associations(:has_many).map(&:name).include? key
|
663
664
|
|
664
|
-
|
665
|
+
filter_result = parse_filters(value, safe, field.singularize.classify.constantize)
|
666
|
+
# puts filter_result
|
667
|
+
filter_has_many[key] = filter_result[:main]
|
668
|
+
order_has_many[key] = filter_result[:main_order]
|
665
669
|
|
666
|
-
|
667
|
-
value = ({
|
668
|
-
't' => true,
|
669
|
-
'f' => false,
|
670
|
-
'true' => true,
|
671
|
-
'false' => false
|
672
|
-
}[value] or true)
|
673
|
-
end
|
670
|
+
elsif self_obj.reflect_on_all_associations(:belongs_to).map(&:name).include? key
|
674
671
|
|
675
|
-
|
672
|
+
filter_result = parse_filters(value, safe, field.singularize.classify.constantize)
|
673
|
+
# puts filter_result
|
674
|
+
filter_belongs_to[key] = filter_result[:main]
|
675
|
+
order_belongs_to[key] = filter_result[:main_order]
|
676
|
+
|
677
|
+
elsif self_obj.column_names.include? field
|
678
|
+
|
679
|
+
if self_obj.columns_hash[field].type == :boolean
|
680
|
+
|
681
|
+
if !!value != value
|
682
|
+
|
683
|
+
bool_lookup = {
|
684
|
+
't' => true,
|
685
|
+
'f' => false,
|
686
|
+
'true' => true,
|
687
|
+
'false' => false
|
688
|
+
}
|
689
|
+
|
690
|
+
value = value.to_s.downcase
|
691
|
+
|
692
|
+
if bool_lookup.has_key? value
|
693
|
+
value = bool_lookup[value]
|
694
|
+
else
|
695
|
+
value = true
|
696
|
+
end
|
676
697
|
|
677
|
-
if comparator == 'is'
|
678
|
-
filter_array << self_string_table + '.' + field + ' IS ' + value.to_s.upcase
|
679
|
-
elsif comparator == 'not'
|
680
|
-
filter_array << self_string_table + '.' + field + ' IS NOT ' + value.to_s.upcase
|
681
698
|
end
|
682
699
|
|
683
|
-
|
700
|
+
if !!value == value
|
684
701
|
|
685
|
-
|
702
|
+
if comparator == 'is'
|
703
|
+
filter_array << self_string_table + '.' + field + ' IS ' + value.to_s.upcase
|
704
|
+
elsif comparator == 'not'
|
705
|
+
filter_array << self_string_table + '.' + field + ' IS NOT ' + value.to_s.upcase
|
706
|
+
end
|
686
707
|
|
687
|
-
|
688
|
-
|
689
|
-
elsif
|
690
|
-
|
691
|
-
|
708
|
+
end
|
709
|
+
|
710
|
+
elsif value == nil and comparator != 'is_null' and comparator != 'not_null'
|
711
|
+
|
712
|
+
if comparator == 'is'
|
713
|
+
filter_array << self_string_table + '.' + field + ' IS NULL'
|
714
|
+
elsif comparator == 'not'
|
715
|
+
filter_array << self_string_table + '.' + field + ' IS NOT NULL'
|
716
|
+
end
|
692
717
|
|
693
|
-
|
718
|
+
elsif value.is_a? Range and comparator == 'is'
|
694
719
|
|
695
|
-
|
696
|
-
|
720
|
+
filter_array << self_string_table + '.' + field + ' >= ' + ActiveRecord::Base.connection.quote(value.first.to_s)
|
721
|
+
filter_array << self_string_table + '.' + field + ' <= ' + ActiveRecord::Base.connection.quote(value.last.to_s)
|
697
722
|
|
698
|
-
|
723
|
+
else
|
699
724
|
|
700
|
-
|
725
|
+
filter_array << self_string_table + '.' + field + api_comparison(comparator, value)
|
726
|
+
|
727
|
+
end
|
701
728
|
|
702
729
|
end
|
703
730
|
|
@@ -713,7 +740,9 @@ class FastAPI
|
|
713
740
|
main: filter_array,
|
714
741
|
main_order: order,
|
715
742
|
has_many: filter_has_many,
|
716
|
-
has_many_order: order_has_many
|
743
|
+
has_many_order: order_has_many,
|
744
|
+
belongs_to: filter_belongs_to,
|
745
|
+
belongs_to_order: order_belongs_to
|
717
746
|
}
|
718
747
|
|
719
748
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keith Horwood
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oj
|