parse-stack 1.0.10 → 1.1.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/Changes.md +8 -0
 - data/Gemfile.lock +4 -4
 - data/README.md +40 -18
 - data/lib/parse/query.rb +10 -1
 - data/lib/parse/query/constraint.rb +7 -1
 - data/lib/parse/query/constraints.rb +15 -6
 - data/lib/parse/stack/version.rb +1 -1
 - 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: a1138b12b68494580dd0ca427544dc4780a52ddd
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: f077b1ab3767c747c2257ab5f35539fbab5aa7a7
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 0c21522c5712cc64b2d7ec0c7842fb42e5514ef86460a8aee92e61238a926bad5f2cc0e9b27545de98fda0f5dfb700a596fad6847fa6b981cdd0e7b49a55c5f0
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: ab980694c184fb24ed72ad8a9440703d189e98f9cef6c8d6c0ca7dba6760fbc8fcddf5846ebe4aeac0915aa0743d0a95e6a527c5519d503236713db8c1a8b22f
         
     | 
    
        data/Changes.md
    CHANGED
    
    | 
         @@ -1,5 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Parse-Stack Changes
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            1.1
         
     | 
| 
      
 4 
     | 
    
         
            +
            -----------
         
     | 
| 
      
 5 
     | 
    
         
            +
            - In Query `join` has been renamed to `matches`.
         
     | 
| 
      
 6 
     | 
    
         
            +
            - Not In Query `exclude` has been renamed to `excludes` for consistency.
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Parse::Query now has a `:key` operation to be usd when passing sub-queries to `select` and `matches`
         
     | 
| 
      
 8 
     | 
    
         
            +
            - Improves query supporting `select`, `matches`, `matches` and `excludes`.
         
     | 
| 
      
 9 
     | 
    
         
            +
            - Regular expression queries for `like` now send regex options
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
       3 
11 
     | 
    
         
             
            1.0.10
         
     | 
| 
       4 
12 
     | 
    
         
             
            -----------
         
     | 
| 
       5 
13 
     | 
    
         
             
            - Fixes issues with setting default values as dirty when using the builder or before_save hook.
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            PATH
         
     | 
| 
       2 
2 
     | 
    
         
             
              remote: .
         
     | 
| 
       3 
3 
     | 
    
         
             
              specs:
         
     | 
| 
       4 
     | 
    
         
            -
                parse-stack (1.0 
     | 
| 
      
 4 
     | 
    
         
            +
                parse-stack (1.1.0)
         
     | 
| 
       5 
5 
     | 
    
         
             
                  active_model_serializers (>= 0.9, < 1)
         
     | 
| 
       6 
6 
     | 
    
         
             
                  activemodel (>= 4, < 5)
         
     | 
| 
       7 
7 
     | 
    
         
             
                  activesupport (>= 4, < 5)
         
     | 
| 
         @@ -14,7 +14,7 @@ PATH 
     | 
|
| 
       14 
14 
     | 
    
         
             
            GEM
         
     | 
| 
       15 
15 
     | 
    
         
             
              remote: https://rubygems.org/
         
     | 
| 
       16 
16 
     | 
    
         
             
              specs:
         
     | 
| 
       17 
     | 
    
         
            -
                active_model_serializers (0.9. 
     | 
| 
      
 17 
     | 
    
         
            +
                active_model_serializers (0.9.5)
         
     | 
| 
       18 
18 
     | 
    
         
             
                  activemodel (>= 3.2)
         
     | 
| 
       19 
19 
     | 
    
         
             
                activemodel (4.2.6)
         
     | 
| 
       20 
20 
     | 
    
         
             
                  activesupport (= 4.2.6)
         
     | 
| 
         @@ -30,7 +30,7 @@ GEM 
     | 
|
| 
       30 
30 
     | 
    
         
             
                builder (3.2.2)
         
     | 
| 
       31 
31 
     | 
    
         
             
                coderay (1.1.1)
         
     | 
| 
       32 
32 
     | 
    
         
             
                debug_inspector (0.0.2)
         
     | 
| 
       33 
     | 
    
         
            -
                dotenv (2.1. 
     | 
| 
      
 33 
     | 
    
         
            +
                dotenv (2.1.1)
         
     | 
| 
       34 
34 
     | 
    
         
             
                faraday (0.9.2)
         
     | 
| 
       35 
35 
     | 
    
         
             
                  multipart-post (>= 1.2, < 3)
         
     | 
| 
       36 
36 
     | 
    
         
             
                faraday_middleware (0.10.0)
         
     | 
| 
         @@ -41,7 +41,7 @@ GEM 
     | 
|
| 
       41 
41 
     | 
    
         
             
                minitest (5.8.4)
         
     | 
| 
       42 
42 
     | 
    
         
             
                moneta (0.8.0)
         
     | 
| 
       43 
43 
     | 
    
         
             
                multipart-post (2.0.0)
         
     | 
| 
       44 
     | 
    
         
            -
                parallel (1. 
     | 
| 
      
 44 
     | 
    
         
            +
                parallel (1.8.0)
         
     | 
| 
       45 
45 
     | 
    
         
             
                pry (0.10.3)
         
     | 
| 
       46 
46 
     | 
    
         
             
                  coderay (~> 1.1.0)
         
     | 
| 
       47 
47 
     | 
    
         
             
                  method_source (~> 0.8.1)
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -302,7 +302,11 @@ class Post < Parse::Object 
     | 
|
| 
       302 
302 
     | 
    
         
             
            	property :comment_count, :integer, default: 0
         
     | 
| 
       303 
303 
     | 
    
         | 
| 
       304 
304 
     | 
    
         
             
            	# the published date. Maps to "publishDate"
         
     | 
| 
       305 
     | 
    
         
            -
            	property :publish_date, :date, ->{ DateTime.now }
         
     | 
| 
      
 305 
     | 
    
         
            +
            	property :publish_date, :date, default: ->{ DateTime.now }
         
     | 
| 
      
 306 
     | 
    
         
            +
             
     | 
| 
      
 307 
     | 
    
         
            +
              # use lambda to access the instance object.
         
     | 
| 
      
 308 
     | 
    
         
            +
              # Set draft_date to the created_at date if empty.
         
     | 
| 
      
 309 
     | 
    
         
            +
              property :draft_date, :date, default: lambda { |x| x.created_at }
         
     | 
| 
       306 
310 
     | 
    
         | 
| 
       307 
311 
     | 
    
         
             
            	# maybe whether it is currently visible
         
     | 
| 
       308 
312 
     | 
    
         
             
            	property :visible, :boolean
         
     | 
| 
         @@ -823,11 +827,11 @@ If you only need to know the result count for a query, provide count a non-zero 
     | 
|
| 
       823 
827 
     | 
    
         | 
| 
       824 
828 
     | 
    
         
             
            ```ruby
         
     | 
| 
       825 
829 
     | 
    
         
             
             # get number of songs with a play_count > 10
         
     | 
| 
       826 
     | 
    
         
            -
             Song.count 
     | 
| 
      
 830 
     | 
    
         
            +
             Song.count :play_count.gt => 10
         
     | 
| 
       827 
831 
     | 
    
         | 
| 
       828 
832 
     | 
    
         
             
             # same
         
     | 
| 
       829 
833 
     | 
    
         
             
             query = Parse::Query.new("Song")
         
     | 
| 
       830 
     | 
    
         
            -
             query.where play_count.gt => 10
         
     | 
| 
      
 834 
     | 
    
         
            +
             query.where :play_count.gt => 10
         
     | 
| 
       831 
835 
     | 
    
         
             
             query.count
         
     | 
| 
       832 
836 
     | 
    
         | 
| 
       833 
837 
     | 
    
         
             
            ```
         
     | 
| 
         @@ -862,7 +866,6 @@ When a query API is made, the results are cached in the query object in case you 
     | 
|
| 
       862 
866 
     | 
    
         | 
| 
       863 
867 
     | 
    
         
             
            ```
         
     | 
| 
       864 
868 
     | 
    
         | 
| 
       865 
     | 
    
         
            -
             
     | 
| 
       866 
869 
     | 
    
         
             
            ### Expressions
         
     | 
| 
       867 
870 
     | 
    
         
             
            The set of supported expressions based on what is available through the Parse REST API. _For those who don't prefer the DataMapper style syntax, we have provided method accessors for each of the expressions._
         
     | 
| 
       868 
871 
     | 
    
         | 
| 
         @@ -871,11 +874,11 @@ Specify a field to sort by. 
     | 
|
| 
       871 
874 
     | 
    
         | 
| 
       872 
875 
     | 
    
         
             
            ```ruby
         
     | 
| 
       873 
876 
     | 
    
         
             
             # order updated_at ascending order
         
     | 
| 
       874 
     | 
    
         
            -
             Song.all 
     | 
| 
      
 877 
     | 
    
         
            +
             Song.all :order => :updated_at
         
     | 
| 
       875 
878 
     | 
    
         | 
| 
       876 
879 
     | 
    
         
             
             # first order by highest like_count, then by ascending name.
         
     | 
| 
       877 
880 
     | 
    
         
             
             # Note that ascending is the default if not specified (ex. `:name.asc`)
         
     | 
| 
       878 
     | 
    
         
            -
             Song.all 
     | 
| 
      
 881 
     | 
    
         
            +
             Song.all :order => [:like_count.desc, :name]
         
     | 
| 
       879 
882 
     | 
    
         
             
            ```
         
     | 
| 
       880 
883 
     | 
    
         | 
| 
       881 
884 
     | 
    
         
             
            ##### :keys
         
     | 
| 
         @@ -883,10 +886,10 @@ Restrict the fields returned by the query. This is useful for larger query resul 
     | 
|
| 
       883 
886 
     | 
    
         | 
| 
       884 
887 
     | 
    
         
             
            ```ruby
         
     | 
| 
       885 
888 
     | 
    
         
             
             # results only contain :name field
         
     | 
| 
       886 
     | 
    
         
            -
             Song.all 
     | 
| 
      
 889 
     | 
    
         
            +
             Song.all :keys => :name
         
     | 
| 
       887 
890 
     | 
    
         | 
| 
       888 
891 
     | 
    
         
             
             # multiple keys
         
     | 
| 
       889 
     | 
    
         
            -
             Song.all 
     | 
| 
      
 892 
     | 
    
         
            +
             Song.all :keys => [:name,:artist]
         
     | 
| 
       890 
893 
     | 
    
         
             
            ```
         
     | 
| 
       891 
894 
     | 
    
         | 
| 
       892 
895 
     | 
    
         
             
            ##### :includes
         
     | 
| 
         @@ -900,7 +903,7 @@ Use on Pointer columns to return the full object. You may chain multiple columns 
     | 
|
| 
       900 
903 
     | 
    
         
             
             Song.all(:includes => :artist)
         
     | 
| 
       901 
904 
     | 
    
         | 
| 
       902 
905 
     | 
    
         
             
             # Chaining
         
     | 
| 
       903 
     | 
    
         
            -
             Song.all 
     | 
| 
      
 906 
     | 
    
         
            +
             Song.all :includes => [:artist, 'artist.manager']
         
     | 
| 
       904 
907 
     | 
    
         | 
| 
       905 
908 
     | 
    
         
             
            ```
         
     | 
| 
       906 
909 
     | 
    
         | 
| 
         @@ -908,9 +911,9 @@ Use on Pointer columns to return the full object. You may chain multiple columns 
     | 
|
| 
       908 
911 
     | 
    
         
             
            Limit the number of objects returned by the query. The default is 100, with Parse allowing a maximum of 1000. The framework also allows a value of `:max`. Utilizing this will have the framework continually intelligently utilize `:skip` to continue to paginate through results until an empty result set is received or the `:skip` limit is reached (10,000). When utilizing `all()`, `:max` is the default option for `:limit`.
         
     | 
| 
       909 
912 
     | 
    
         | 
| 
       910 
913 
     | 
    
         
             
            ```ruby
         
     | 
| 
       911 
     | 
    
         
            -
             Song.all 
     | 
| 
       912 
     | 
    
         
            -
             Song.all 
     | 
| 
       913 
     | 
    
         
            -
             Song.all 
     | 
| 
      
 914 
     | 
    
         
            +
             Song.all :limit => 1 # same as Song.first
         
     | 
| 
      
 915 
     | 
    
         
            +
             Song.all :limit => 1000 # maximum allowed by Parse
         
     | 
| 
      
 916 
     | 
    
         
            +
             Song.all :limit => :max # up to 11,000 records (theoretical).
         
     | 
| 
       914 
917 
     | 
    
         
             
            ```
         
     | 
| 
       915 
918 
     | 
    
         | 
| 
       916 
919 
     | 
    
         
             
            ##### :skip
         
     | 
| 
         @@ -918,7 +921,7 @@ Use with limit to paginate through results. Default is 0 with maximum value bein 
     | 
|
| 
       918 
921 
     | 
    
         | 
| 
       919 
922 
     | 
    
         
             
            ```ruby
         
     | 
| 
       920 
923 
     | 
    
         
             
             # get the next 3 songs after the first 10
         
     | 
| 
       921 
     | 
    
         
            -
             Song.all 
     | 
| 
      
 924 
     | 
    
         
            +
             Song.all :limit => 3, :skip => 10
         
     | 
| 
       922 
925 
     | 
    
         
             
            ```
         
     | 
| 
       923 
926 
     | 
    
         | 
| 
       924 
927 
     | 
    
         
             
            ##### :where
         
     | 
| 
         @@ -975,18 +978,20 @@ Most of the constraints supported by Parse are available to `Parse::Query`. Assu 
     | 
|
| 
       975 
978 
     | 
    
         
             
             q.where :field.like => /ruby_regex/
         
     | 
| 
       976 
979 
     | 
    
         
             
             q.where :field.regex => /abc/ # alias
         
     | 
| 
       977 
980 
     | 
    
         | 
| 
       978 
     | 
    
         
            -
             # select 
     | 
| 
       979 
     | 
    
         
            -
             q.where :field.select => query
         
     | 
| 
      
 981 
     | 
    
         
            +
             # select
         
     | 
| 
      
 982 
     | 
    
         
            +
             q.where :field.select => query #with key
         
     | 
| 
      
 983 
     | 
    
         
            +
             # ex. q.where :city.select => Artist.where(:total_plays.gt => 50, :key => "city")
         
     | 
| 
       980 
984 
     | 
    
         | 
| 
       981 
     | 
    
         
            -
             # don't select 
     | 
| 
      
 985 
     | 
    
         
            +
             # don't select
         
     | 
| 
       982 
986 
     | 
    
         
             
             q.where :field.reject => query
         
     | 
| 
       983 
987 
     | 
    
         | 
| 
       984 
     | 
    
         
            -
             # matches inQuery 
     | 
| 
       985 
     | 
    
         
            -
             q.where :field. 
     | 
| 
      
 988 
     | 
    
         
            +
             # matches inQuery
         
     | 
| 
      
 989 
     | 
    
         
            +
             q.where :field.matches => query
         
     | 
| 
       986 
990 
     | 
    
         
             
             q.where :field.in_query => query # alias
         
     | 
| 
       987 
991 
     | 
    
         | 
| 
       988 
992 
     | 
    
         
             
             # notInQuery (inverse of `join`)
         
     | 
| 
       989 
993 
     | 
    
         
             
             q.where :field.excludes => query
         
     | 
| 
      
 994 
     | 
    
         
            +
             q.where :field.not_in_query => query # alias
         
     | 
| 
       990 
995 
     | 
    
         | 
| 
       991 
996 
     | 
    
         
             
             # near GeoPoint
         
     | 
| 
       992 
997 
     | 
    
         
             
             q.where :field.near => geopoint
         
     | 
| 
         @@ -1004,6 +1009,23 @@ Most of the constraints supported by Parse are available to `Parse::Query`. Assu 
     | 
|
| 
       1004 
1009 
     | 
    
         
             
             or_query = query1 | query2 | query3 ...
         
     | 
| 
       1005 
1010 
     | 
    
         
             
            ```
         
     | 
| 
       1006 
1011 
     | 
    
         | 
| 
      
 1012 
     | 
    
         
            +
            ## Select and Matching Queries
         
     | 
| 
      
 1013 
     | 
    
         
            +
            Parse-Stack supports sub-select queries. These are referred to in Parse as `$select` and `$dontSelect` for columns that contain values. These are mapped to `select` and `reject` respectively in Parse-Stack. For creating sub-queries where the column field is an object or a pointer, Parse provides `$inQuery` and `$notInQuery`. These are mapped to `matches` and `excludes` respectively in Parse-Stack. To perform these types of sub-query constraints, you pass a different `Parse::Query` instance to the value of the query constraint. Using the example for `$select` from the Parse documentation where you have a class containing sports teams and you store a user's hometown in the user class, you can issue one query to find the list of users whose hometown teams have winning records as follows:
         
     | 
| 
      
 1014 
     | 
    
         
            +
             
     | 
| 
      
 1015 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 1016 
     | 
    
         
            +
            # assume Team class with column of `city`
         
     | 
| 
      
 1017 
     | 
    
         
            +
            users = Parse::User.all :hometown.select => Team.where(:win_pct.gt => 0.5, :key => :city )
         
     | 
| 
      
 1018 
     | 
    
         
            +
            # where={"hometown":{"$select":{"query":{"className":"Team", "limit":100, "where":{"winPct":{"$gt":0.5}}},"key":"city"}}}
         
     | 
| 
      
 1019 
     | 
    
         
            +
            # for https://api.parse.com/1/classes/_User
         
     | 
| 
      
 1020 
     | 
    
         
            +
            ```
         
     | 
| 
      
 1021 
     | 
    
         
            +
             
     | 
| 
      
 1022 
     | 
    
         
            +
            Using the `matches` and `excludes`, is similar, but are used when the field is a pointer or object. If you wanted to find all `Song` objects where the song's artist has a `city` of `San Diego` and is `approved`, you could use a `matches` query as follows:
         
     | 
| 
      
 1023 
     | 
    
         
            +
             
     | 
| 
      
 1024 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 1025 
     | 
    
         
            +
            songs = Song.all :artist.matches => Artist.where(approved: true, city: "San Diego", limit: 1000)
         
     | 
| 
      
 1026 
     | 
    
         
            +
            # where={"artist": {"$inQuery": {"className":"Team", "limit":1000, "where": {"winPct": {"$gt" :0.5 }}}}}
         
     | 
| 
      
 1027 
     | 
    
         
            +
            ```
         
     | 
| 
      
 1028 
     | 
    
         
            +
             
     | 
| 
       1007 
1029 
     | 
    
         
             
            ## Hooks and Callbacks
         
     | 
| 
       1008 
1030 
     | 
    
         
             
            All `Parse::Object` subclasses extend [`ActiveModel::Callbacks`](http://api.rubyonrails.org/classes/ActiveModel/Callbacks.html) for `#save` and `#destroy` operations. You can setup internal hooks for `before`, `during` and `after`. See
         
     | 
| 
       1009 
1031 
     | 
    
         | 
    
        data/lib/parse/query.rb
    CHANGED
    
    | 
         @@ -23,7 +23,7 @@ module Parse 
     | 
|
| 
       23 
23 
     | 
    
         
             
                # You can modify the default client being used by all Parse::Query objects by setting
         
     | 
| 
       24 
24 
     | 
    
         
             
                # Parse::Query.client. You can override individual Parse::Query object clients
         
     | 
| 
       25 
25 
     | 
    
         
             
                # by changing their client variable to a different Parse::Client object.
         
     | 
| 
       26 
     | 
    
         
            -
                attr_accessor :table, :client
         
     | 
| 
      
 26 
     | 
    
         
            +
                attr_accessor :table, :client, :key
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
                # We have a special class method to handle field formatting. This turns
         
     | 
| 
       29 
29 
     | 
    
         
             
                # the symbol keys in an operand from one key to another. For example, we can
         
     | 
| 
         @@ -109,6 +109,8 @@ module Parse 
     | 
|
| 
       109 
109 
     | 
    
         
             
                      order value
         
     | 
| 
       110 
110 
     | 
    
         
             
                    elsif expression == :keys
         
     | 
| 
       111 
111 
     | 
    
         
             
                      keys value
         
     | 
| 
      
 112 
     | 
    
         
            +
                    elsif expression == :key
         
     | 
| 
      
 113 
     | 
    
         
            +
                      @key = value
         
     | 
| 
       112 
114 
     | 
    
         
             
                    elsif expression == :skip
         
     | 
| 
       113 
115 
     | 
    
         
             
                      skip value
         
     | 
| 
       114 
116 
     | 
    
         
             
                    elsif expression == :limit
         
     | 
| 
         @@ -197,6 +199,13 @@ module Parse 
     | 
|
| 
       197 
199 
     | 
    
         
             
                  @where ||= []
         
     | 
| 
       198 
200 
     | 
    
         
             
                  constraint = Parse::Constraint.create operator, value
         
     | 
| 
       199 
201 
     | 
    
         
             
                  return unless constraint.is_a?(Parse::Constraint)
         
     | 
| 
      
 202 
     | 
    
         
            +
                  # to support select queries where you have to pass a `key` parameter for matching
         
     | 
| 
      
 203 
     | 
    
         
            +
                  # different tables.
         
     | 
| 
      
 204 
     | 
    
         
            +
                  if constraint.operand == :key || constraint.operand == "key"
         
     | 
| 
      
 205 
     | 
    
         
            +
                    @key = constraint.value
         
     | 
| 
      
 206 
     | 
    
         
            +
                    return
         
     | 
| 
      
 207 
     | 
    
         
            +
                  end
         
     | 
| 
      
 208 
     | 
    
         
            +
             
     | 
| 
       200 
209 
     | 
    
         
             
                  unless opts[:filter] == false
         
     | 
| 
       201 
210 
     | 
    
         
             
                    constraint.operand = Query.format_field(constraint.operand)
         
     | 
| 
       202 
211 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -118,8 +118,14 @@ module Parse 
     | 
|
| 
       118 
118 
     | 
    
         
             
                  d = @value
         
     | 
| 
       119 
119 
     | 
    
         
             
                  d = { __type: "Date", iso: d.iso8601(3) } if d.respond_to?(:iso8601)
         
     | 
| 
       120 
120 
     | 
    
         
             
                  d = d.pointer if d.respond_to?(:pointer) #simplified query object
         
     | 
| 
      
 121 
     | 
    
         
            +
                  d = d.to_s if d.is_a?(Regexp)
         
     | 
| 
       121 
122 
     | 
    
         
             
                  #d = d.pointer if d.is_a?(Parse::Object) #simplified query object
         
     | 
| 
       122 
     | 
    
         
            -
                  d = d. 
     | 
| 
      
 123 
     | 
    
         
            +
                  #  d = d.compile
         
     | 
| 
      
 124 
     | 
    
         
            +
                  if d.is_a?(Parse::Query)
         
     | 
| 
      
 125 
     | 
    
         
            +
                    compiled = d.compile(false)
         
     | 
| 
      
 126 
     | 
    
         
            +
                    compiled["className"] = d.table
         
     | 
| 
      
 127 
     | 
    
         
            +
                    d = compiled
         
     | 
| 
      
 128 
     | 
    
         
            +
                  end
         
     | 
| 
       123 
129 
     | 
    
         
             
                  d
         
     | 
| 
       124 
130 
     | 
    
         
             
                end
         
     | 
| 
       125 
131 
     | 
    
         | 
| 
         @@ -109,13 +109,23 @@ module Parse 
     | 
|
| 
       109 
109 
     | 
    
         
             
                #This matches a value for a key in the result of a different query
         
     | 
| 
       110 
110 
     | 
    
         
             
                contraint_keyword :$select
         
     | 
| 
       111 
111 
     | 
    
         
             
                register :select
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
                def build
         
     | 
| 
      
 114 
     | 
    
         
            +
                  select_key = @value.key.present? ? @value.key : @operation.operand
         
     | 
| 
      
 115 
     | 
    
         
            +
                  select_query = formatted_value
         
     | 
| 
      
 116 
     | 
    
         
            +
                  { @operation.operand => { key => { query: select_query, key: select_key } } }
         
     | 
| 
      
 117 
     | 
    
         
            +
                end
         
     | 
| 
       112 
118 
     | 
    
         
             
              end
         
     | 
| 
       113 
119 
     | 
    
         | 
| 
       114 
120 
     | 
    
         
             
              class RejectionConstraint < Constraint
         
     | 
| 
       115 
121 
     | 
    
         
             
                #requires that a key's value not match a value for a key in the result of a different query
         
     | 
| 
       116 
122 
     | 
    
         
             
                contraint_keyword :$dontSelect
         
     | 
| 
       117 
123 
     | 
    
         
             
                register :reject
         
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
      
 124 
     | 
    
         
            +
                def build
         
     | 
| 
      
 125 
     | 
    
         
            +
                  reject_key = @value.key.present? ? @value.key : @operation.operand
         
     | 
| 
      
 126 
     | 
    
         
            +
                  reject_query = formatted_value
         
     | 
| 
      
 127 
     | 
    
         
            +
                  { @operation.operand => { key => { query: reject_query, key: reject_key } } }
         
     | 
| 
      
 128 
     | 
    
         
            +
                end
         
     | 
| 
       119 
129 
     | 
    
         
             
              end
         
     | 
| 
       120 
130 
     | 
    
         | 
| 
       121 
131 
     | 
    
         
             
              class RegularExpressionConstraint < Constraint
         
     | 
| 
         @@ -140,16 +150,15 @@ module Parse 
     | 
|
| 
       140 
150 
     | 
    
         
             
                end
         
     | 
| 
       141 
151 
     | 
    
         
             
              end
         
     | 
| 
       142 
152 
     | 
    
         | 
| 
       143 
     | 
    
         
            -
              class  
     | 
| 
      
 153 
     | 
    
         
            +
              class InQueryConstraint < Constraint
         
     | 
| 
       144 
154 
     | 
    
         
             
                contraint_keyword :$inQuery
         
     | 
| 
       145 
     | 
    
         
            -
                register : 
     | 
| 
      
 155 
     | 
    
         
            +
                register :matches
         
     | 
| 
       146 
156 
     | 
    
         
             
                register :in_query
         
     | 
| 
       147 
     | 
    
         
            -
             
     | 
| 
       148 
157 
     | 
    
         
             
              end
         
     | 
| 
       149 
158 
     | 
    
         | 
| 
       150 
     | 
    
         
            -
              class  
     | 
| 
      
 159 
     | 
    
         
            +
              class NotInQueryConstraint < Constraint
         
     | 
| 
       151 
160 
     | 
    
         
             
                contraint_keyword :$notInQuery
         
     | 
| 
       152 
     | 
    
         
            -
                register : 
     | 
| 
      
 161 
     | 
    
         
            +
                register :excludes
         
     | 
| 
       153 
162 
     | 
    
         
             
                register :not_in_query
         
     | 
| 
       154 
163 
     | 
    
         | 
| 
       155 
164 
     | 
    
         
             
              end
         
     | 
    
        data/lib/parse/stack/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: parse-stack
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1.0 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.1.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Anthony Persaud
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2016- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2016-04-12 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: activemodel
         
     |