fastapi 0.1.14 → 0.1.15
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/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
|