quickbase_record 0.1.0 → 0.2.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 +8 -8
- data/README.md +17 -16
- data/lib/quickbase_record/queries.rb +4 -2
- data/lib/quickbase_record/version.rb +1 -1
- data/quickbase_record-0.1.0.gem +0 -0
- data/spec/queries_spec.rb +4 -4
- metadata +3 -3
- data/quickbase_record-0.0.2.gem +0 -0
    
        checksums.yaml
    CHANGED
    
    | @@ -1,15 +1,15 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            !binary "U0hBMQ==":
         | 
| 3 3 | 
             
              metadata.gz: !binary |-
         | 
| 4 | 
            -
                 | 
| 4 | 
            +
                ZWUzNzIwNjc3YjY3NjllMjcyODVmZWIyYzFjNWNjY2MxZjc2Zjg4NA==
         | 
| 5 5 | 
             
              data.tar.gz: !binary |-
         | 
| 6 | 
            -
                 | 
| 6 | 
            +
                OTQ4MmNiNzE3M2JlNzRhYTFmN2Q0MmU3YmJhODE4YjBjNzFmYTg3Nw==
         | 
| 7 7 | 
             
            SHA512:
         | 
| 8 8 | 
             
              metadata.gz: !binary |-
         | 
| 9 | 
            -
                 | 
| 10 | 
            -
                 | 
| 11 | 
            -
                 | 
| 9 | 
            +
                NDdiYmEwMjZmYWFmOWQzNTNjYWY2ZjU2ZDQyYWNhMTM3N2JmMTQwYjQwYWQ3
         | 
| 10 | 
            +
                M2I4NTNiYjhjYjE5NjM2M2NjN2FkY2U2NjUyNzk5ZmQ1ZjY5NDQyYWEyN2Nk
         | 
| 11 | 
            +
                ODJhYmUyZWJkYzhkN2U2MGE3OWU1MzUzYTdjZDYyZWZhODlkYjQ=
         | 
| 12 12 | 
             
              data.tar.gz: !binary |-
         | 
| 13 | 
            -
                 | 
| 14 | 
            -
                 | 
| 15 | 
            -
                 | 
| 13 | 
            +
                Mzk2MDkzNWJjZmUxOGJiNDNlYWEwZTczYWQ3MmQwMjNiNDk1YzdjODBlNmJh
         | 
| 14 | 
            +
                NmEyMTY0MzU0ZDUwMDQ4NjIxNzRjMDIwZjJhYzhiZjYxYWI2N2E1ODA5ZWMz
         | 
| 15 | 
            +
                OWUwMjIwOWFiNmM0Nzg0MzgwZTU3OTg2MzM1OGFmZDgwNTQwZDg=
         | 
    
        data/README.md
    CHANGED
    
    | @@ -30,6 +30,7 @@ QuickbaseRecord is built on top of the [Advantage Quickbase](https://github.com/ | |
| 30 30 | 
             
                config.realm = "your_apps_realm_name"
         | 
| 31 31 | 
             
                config.username = "valid_username" (or something like ENV["QB_USERNAME"])
         | 
| 32 32 | 
             
                config.password = "valid_password" (or something like ENV["QB_PASSWORD"])
         | 
| 33 | 
            +
                config.token = "your_app_token_if_applicable"
         | 
| 33 34 | 
             
              end
         | 
| 34 35 | 
             
            ```
         | 
| 35 36 |  | 
| @@ -37,9 +38,9 @@ QuickbaseRecord is built on top of the [Advantage Quickbase](https://github.com/ | |
| 37 38 | 
             
            Simply `include QuickbaseRecord::Model` in your class and use the `.define_fields` method to supply the table's DBID and a mapping of desired field names => QuickBase FIDs
         | 
| 38 39 |  | 
| 39 40 | 
             
            ```
         | 
| 40 | 
            -
              # app/models/ | 
| 41 | 
            +
              # app/models/post.rb
         | 
| 41 42 |  | 
| 42 | 
            -
              class  | 
| 43 | 
            +
              class Post
         | 
| 43 44 | 
             
                include QuickbaseRecord::Model
         | 
| 44 45 |  | 
| 45 46 | 
             
                define_fields ({
         | 
| @@ -58,7 +59,7 @@ Simply `include QuickbaseRecord::Model` in your class and use the `.define_field | |
| 58 59 | 
             
            Classes that include QuickbaseRecord::Model and define their fields will have a handful of class and instance methods for interacting with your QuickBase application similar to ActiveRecord. The goal is to be able to use QuickBase as a database and treat your models the same way you would with a traditional database.
         | 
| 59 60 |  | 
| 60 61 | 
             
            ```
         | 
| 61 | 
            -
            @post =  | 
| 62 | 
            +
            @post = Post.find(1) => <Post: @id=1, @content="Amazing post content", @author: 'Cullen Jett'>
         | 
| 62 63 |  | 
| 63 64 | 
             
            --
         | 
| 64 65 |  | 
| @@ -88,38 +89,38 @@ Database callbacks (i.e. `before_save :create_token!`) are not fully functional | |
| 88 89 | 
             
                - Intantiate *and* save a new object with the given attributes
         | 
| 89 90 | 
             
                - Assigns the returned object it's new ID
         | 
| 90 91 | 
             
                ```
         | 
| 91 | 
            -
                   | 
| 92 | 
            +
                  Post.create(content: 'Amazing post content', author: 'Cullen Jett')
         | 
| 92 93 | 
             
                ```
         | 
| 93 94 |  | 
| 94 95 | 
             
              * **.find(id)**
         | 
| 95 96 | 
             
                - Query for a specific QuickBase record by it's ID
         | 
| 96 97 | 
             
                - Returns a single object
         | 
| 97 98 | 
             
                ```
         | 
| 98 | 
            -
                   | 
| 99 | 
            +
                  Post.find(params[:id])
         | 
| 99 100 | 
             
                ```
         | 
| 100 101 |  | 
| 101 102 | 
             
              * **.where(attributes_hash)**
         | 
| 102 103 | 
             
                - Query QuickBase by any field name defined in your class' field mapping
         | 
| 103 104 | 
             
                - Returns an array of objects
         | 
| 104 105 | 
             
                ```
         | 
| 105 | 
            -
                   | 
| 106 | 
            +
                  Post.where(author: 'Cullen Jett').first
         | 
| 106 107 | 
             
                ```
         | 
| 107 108 |  | 
| 108 109 | 
             
                - Multiple field_name/value pairs are joined with 'AND'
         | 
| 109 110 | 
             
                ```
         | 
| 110 | 
            -
                   | 
| 111 | 
            +
                  Post.where(id: 1, author: 'Cullen Jett')
         | 
| 111 112 | 
             
                  # {'3'.EX.'1'}AND{'8'.EX.'Cullen Jett'}
         | 
| 112 113 | 
             
                ```
         | 
| 113 114 |  | 
| 114 115 | 
             
                - Values in an array are joined with 'OR'
         | 
| 115 116 | 
             
                ```
         | 
| 116 | 
            -
                   | 
| 117 | 
            +
                  Post.where(author: ['Cullen Jett', 'Socrates')
         | 
| 117 118 | 
             
                  # {'8'.EX.'Socrates'}OR{'8'.EX.'Socrates'}
         | 
| 118 119 | 
             
                ```
         | 
| 119 120 |  | 
| 120 121 | 
             
                - To use a comparitor other than 'EX' pass the value as another hash with the key as the comparitor
         | 
| 121 122 | 
             
                ```
         | 
| 122 | 
            -
                   | 
| 123 | 
            +
                  Post.where(author: {XEX: 'Cullen Jett'})
         | 
| 123 124 | 
             
                  # {'8'.XEX.'Cullen Jett'}
         | 
| 124 125 | 
             
                ```
         | 
| 125 126 |  | 
| @@ -128,15 +129,15 @@ Database callbacks (i.e. `before_save :create_token!`) are not fully functional | |
| 128 129 | 
             
                - Returns an array of objects
         | 
| 129 130 | 
             
                - Works with field names or FIDs
         | 
| 130 131 | 
             
                ```
         | 
| 131 | 
            -
                   | 
| 132 | 
            -
                   | 
| 132 | 
            +
                  Post.query("{'3'.EX.'1'}")
         | 
| 133 | 
            +
                  Post.query("{author.XEX.'Cullen Jett'}")
         | 
| 133 134 | 
             
                ```
         | 
| 134 135 |  | 
| 135 136 | 
             
              * **.qid(id)**
         | 
| 136 137 | 
             
                - Accepts a QID (QuickBase report ID)
         | 
| 137 138 | 
             
                - Returns an array of objects
         | 
| 138 139 | 
             
                ```
         | 
| 139 | 
            -
                   | 
| 140 | 
            +
                  Post.qid(1)
         | 
| 140 141 | 
             
                ```
         | 
| 141 142 |  | 
| 142 143 | 
             
              * **#save**
         | 
| @@ -144,7 +145,7 @@ Database callbacks (i.e. `before_save :create_token!`) are not fully functional | |
| 144 145 | 
             
                - Returns the object (if #save created a record in QuickBase the the returned object will now have an ID)
         | 
| 145 146 | 
             
                - Uses API_ImportFromCSV under the hood.
         | 
| 146 147 | 
             
                ```
         | 
| 147 | 
            -
                  @post =  | 
| 148 | 
            +
                  @post = Post.new(content: 'Amazing post content', author: 'Cullen Jett')
         | 
| 148 149 | 
             
                  @post.save # => <Post: @id: 1, @content: 'Amazing post content', @author: 'Cullen Jett'
         | 
| 149 150 |  | 
| 150 151 | 
             
                  @post.author = 'Socrates'
         | 
| @@ -160,10 +161,10 @@ Database callbacks (i.e. `before_save :create_token!`) are not fully functional | |
| 160 161 | 
             
                ```
         | 
| 161 162 |  | 
| 162 163 | 
             
              * **#update_attributes(attributes_hash)**
         | 
| 163 | 
            -
                - Updates *and* saves the object with the new attributes
         | 
| 164 | 
            +
                - ** IMPORTANT: Updates *and* saves the object with the new attributes**
         | 
| 164 165 | 
             
                - Returns the object
         | 
| 165 166 | 
             
                ```
         | 
| 166 | 
            -
                  @post =  | 
| 167 | 
            +
                  @post = Post.where(author: 'Cullen Jett').first
         | 
| 167 168 | 
             
                  @post.update_attributes(author: 'Socrates', content: 'Something enlightening...') # => <Post: @id: 1, @author: 'Socrates', @content: 'Something enlightening...'
         | 
| 168 169 | 
             
                ```
         | 
| 169 170 |  | 
| @@ -172,7 +173,7 @@ Database callbacks (i.e. `before_save :create_token!`) are not fully functional | |
| 172 173 | 
             
                - Useful for assigning multiple attributes at once, otherwise you could use the field name's attr_accessor to change a single attribute.
         | 
| 173 174 | 
             
                - Returns the object
         | 
| 174 175 | 
             
                ```
         | 
| 175 | 
            -
                  @post =  | 
| 176 | 
            +
                  @post = Post.where(author: 'Cullen Jett').first
         | 
| 176 177 | 
             
                  @post.assign_attributes(author: 'Socrates', content: 'Something enlightening...')
         | 
| 177 178 | 
             
                  @post.save
         | 
| 178 179 | 
             
                ```
         | 
| @@ -20,7 +20,7 @@ module QuickbaseRecord | |
| 20 20 | 
             
                    query_options = { query: build_query(id: id), clist: clist }
         | 
| 21 21 | 
             
                    query_response = qb_client.do_query(dbid, query_options).first
         | 
| 22 22 |  | 
| 23 | 
            -
                    return  | 
| 23 | 
            +
                    return nil if query_response.nil?
         | 
| 24 24 |  | 
| 25 25 | 
             
                    converted_response = convert_quickbase_response(query_response)
         | 
| 26 26 | 
             
                    new(converted_response)
         | 
| @@ -30,7 +30,7 @@ module QuickbaseRecord | |
| 30 30 | 
             
                    query_options = { query: build_query(query_hash), clist: clist }
         | 
| 31 31 | 
             
                    query_response = qb_client.do_query(dbid, query_options)
         | 
| 32 32 |  | 
| 33 | 
            -
                    return  | 
| 33 | 
            +
                    return [] if query_response.first.nil?
         | 
| 34 34 |  | 
| 35 35 | 
             
                    build_array_of_new_objects(query_response)
         | 
| 36 36 | 
             
                  end
         | 
| @@ -46,6 +46,8 @@ module QuickbaseRecord | |
| 46 46 | 
             
                    query_options = { qid: id, clist: clist }
         | 
| 47 47 | 
             
                    query_response = qb_client.do_query(dbid, query_options)
         | 
| 48 48 |  | 
| 49 | 
            +
                    return [] if query_response.first.nil?
         | 
| 50 | 
            +
             | 
| 49 51 | 
             
                    build_array_of_new_objects(query_response)
         | 
| 50 52 | 
             
                  end
         | 
| 51 53 |  | 
| Binary file | 
    
        data/spec/queries_spec.rb
    CHANGED
    
    | @@ -12,9 +12,9 @@ RSpec.describe QuickbaseRecord::Queries do | |
| 12 12 | 
             
                  expect(teacher).to be_a TeacherFake
         | 
| 13 13 | 
             
                end
         | 
| 14 14 |  | 
| 15 | 
            -
                it "returns  | 
| 15 | 
            +
                it "returns nil if no QuickBase records are found" do
         | 
| 16 16 | 
             
                  teacher = TeacherFake.find(999999)
         | 
| 17 | 
            -
                  expect(teacher).to  | 
| 17 | 
            +
                  expect(teacher).to eq(nil)
         | 
| 18 18 | 
             
                end
         | 
| 19 19 | 
             
              end
         | 
| 20 20 |  | 
| @@ -39,9 +39,9 @@ RSpec.describe QuickbaseRecord::Queries do | |
| 39 39 | 
             
                  expect(teachers.first.id).to eq('1')
         | 
| 40 40 | 
             
                end
         | 
| 41 41 |  | 
| 42 | 
            -
                it "returns  | 
| 42 | 
            +
                it "returns an empty array if no QuickBase records are found" do
         | 
| 43 43 | 
             
                  teachers = TeacherFake.where(name: 'Not a real TeacherFake name...')
         | 
| 44 | 
            -
                  expect(teachers).to  | 
| 44 | 
            +
                  expect(teachers).to eq([])
         | 
| 45 45 | 
             
                end
         | 
| 46 46 | 
             
              end
         | 
| 47 47 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: quickbase_record
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Cullen Jett
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015-06- | 
| 11 | 
            +
            date: 2015-06-13 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -129,7 +129,7 @@ files: | |
| 129 129 | 
             
            - lib/quickbase_record/model.rb
         | 
| 130 130 | 
             
            - lib/quickbase_record/queries.rb
         | 
| 131 131 | 
             
            - lib/quickbase_record/version.rb
         | 
| 132 | 
            -
            - quickbase_record-0.0. | 
| 132 | 
            +
            - quickbase_record-0.1.0.gem
         | 
| 133 133 | 
             
            - quickbase_record.gemspec
         | 
| 134 134 | 
             
            - spec/fakes/student_fake.rb
         | 
| 135 135 | 
             
            - spec/fakes/teacher_fake.rb
         | 
    
        data/quickbase_record-0.0.2.gem
    DELETED
    
    | Binary file |