activecube 0.1.29 → 0.1.30
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/Gemfile.lock +1 -1
- data/lib/activecube/definition_methods.rb +2 -1
- data/lib/activecube/query/cube_query.rb +7 -0
- data/lib/activecube/query/limit_by.rb +19 -0
- data/lib/activecube/query/slice.rb +12 -3
- data/lib/activecube/version.rb +1 -1
- metadata +3 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 663ae546f63257569c7692d59478ffef3c954f2c9a74f53c78ae6ee31bdf093c
         | 
| 4 | 
            +
              data.tar.gz: df61b6a95415e4879d62b0eada8abcf732d9d7aeca882c72fa28ca929c567db1
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: e25d8a4f05d9880c4c3acbf6854393556902e0339976701949ab5b56bc3d627f20a9790144c19f00903786fa0abd947c2cb866bdc5d41856483cd8e030a281d1
         | 
| 7 | 
            +
              data.tar.gz: 418d88e3f5d6249de2781faa1f27cfc42d219538eac7c2d68611735771cf8d2413ac2a1e626559d7b8f0d0248852358a58ea5400af2a561248cb1a591126e49a
         | 
    
        data/Gemfile.lock
    CHANGED
    
    
| @@ -31,13 +31,14 @@ module Activecube | |
| 31 31 |  | 
| 32 32 | 
             
                include DefinitionMethods
         | 
| 33 33 |  | 
| 34 | 
            -
                attr_reader :identity, :fields
         | 
| 34 | 
            +
                attr_reader :identity, :identity_expression, :fields
         | 
| 35 35 |  | 
| 36 36 | 
             
                private
         | 
| 37 37 |  | 
| 38 38 | 
             
                def identity_column *args
         | 
| 39 39 | 
             
                  raise "Identity already defined as #{identity} for #{self.name}" if @identity
         | 
| 40 40 | 
             
                  @identity = args.first
         | 
| 41 | 
            +
                  @identity_expression = args.second
         | 
| 41 42 | 
             
                end
         | 
| 42 43 |  | 
| 43 44 | 
             
                def field *args
         | 
| @@ -1,6 +1,7 @@ | |
| 1 1 | 
             
            require 'activecube/query/chain_appender'
         | 
| 2 2 | 
             
            require 'activecube/query/item'
         | 
| 3 3 | 
             
            require 'activecube/query/limit'
         | 
| 4 | 
            +
            require 'activecube/query/limit_by'
         | 
| 4 5 | 
             
            require 'activecube/query/measure'
         | 
| 5 6 | 
             
            require 'activecube/query/ordering'
         | 
| 6 7 | 
             
            require 'activecube/query/option'
         | 
| @@ -82,6 +83,12 @@ module Activecube::Query | |
| 82 83 | 
             
                  self
         | 
| 83 84 | 
             
                end
         | 
| 84 85 |  | 
| 86 | 
            +
                def limit_by *args
         | 
| 87 | 
            +
                  clear_sql
         | 
| 88 | 
            +
                  options << LimitBy.new(args)
         | 
| 89 | 
            +
                  self
         | 
| 90 | 
            +
                end
         | 
| 91 | 
            +
             | 
| 85 92 |  | 
| 86 93 | 
             
                def query
         | 
| 87 94 | 
             
                  sql = to_query.to_sql
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            module Activecube
         | 
| 2 | 
            +
              module Query
         | 
| 3 | 
            +
                class LimitBy
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                  attr_reader :each, :limit, :offset
         | 
| 6 | 
            +
                  def initialize arguments
         | 
| 7 | 
            +
                    map = Hash[arguments]
         | 
| 8 | 
            +
                    @each = map[:each]
         | 
| 9 | 
            +
                    @limit = map[:limit]
         | 
| 10 | 
            +
                    @offset = map[:offset] || 0
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  def append_query _model, _cube_query, _table, query
         | 
| 14 | 
            +
                    query.limit_by each, limit, offset
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
            end
         | 
| @@ -68,11 +68,20 @@ module Activecube::Query | |
| 68 68 | 
             
                  query = query.project(expr.as(attr_alias))
         | 
| 69 69 |  | 
| 70 70 | 
             
                  if dimension.class.identity
         | 
| 71 | 
            +
                    expr = dimension.class.identity_expression
         | 
| 71 72 | 
             
                    group_by_columns.each do |column|
         | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 73 | 
            +
             | 
| 74 | 
            +
                      node =  if column==dimension.class.identity && expr
         | 
| 75 | 
            +
                                Arel.sql(expr).as(column)
         | 
| 76 | 
            +
                              else
         | 
| 77 | 
            +
                                table[column]
         | 
| 78 | 
            +
                              end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                      unless query.projections.include?(node)
         | 
| 81 | 
            +
                        query = query.project(node)
         | 
| 74 82 | 
             
                      end
         | 
| 75 | 
            -
             | 
| 83 | 
            +
             | 
| 84 | 
            +
                      query = query.group( expr ? column : table[column])
         | 
| 76 85 | 
             
                    end
         | 
| 77 86 | 
             
                  else
         | 
| 78 87 | 
             
                    query = query.group(attr_alias)
         | 
    
        data/lib/activecube/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: activecube
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.30
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Aleksey Studnev
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2020-11- | 
| 11 | 
            +
            date: 2020-11-30 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activerecord
         | 
| @@ -108,6 +108,7 @@ files: | |
| 108 108 | 
             
            - lib/activecube/query/cube_query.rb
         | 
| 109 109 | 
             
            - lib/activecube/query/item.rb
         | 
| 110 110 | 
             
            - lib/activecube/query/limit.rb
         | 
| 111 | 
            +
            - lib/activecube/query/limit_by.rb
         | 
| 111 112 | 
             
            - lib/activecube/query/measure.rb
         | 
| 112 113 | 
             
            - lib/activecube/query/measure_nothing.rb
         | 
| 113 114 | 
             
            - lib/activecube/query/modification.rb
         |