sheets_db 0.4.1 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d2d95893f24d4f412a3b06e88a90a18332f2e933
4
- data.tar.gz: c79d78003dc7a6060c5c99c76b8654fb0aa1dda4
3
+ metadata.gz: c37bce0986d7a7d4519d7c1de690e5ccd8478b0c
4
+ data.tar.gz: 463046931944f6c506cdf0513ea57143a5b1a5f1
5
5
  SHA512:
6
- metadata.gz: 741ac59a7b501a8aaeeaedc19c0c3e0f318a6ff5aebf49a639a3b87b4e7ddf07967ab4b19d9be0a2b0c5f3c23771be507da6ac6a4255ce216fb12f97af6fa759
7
- data.tar.gz: 3b190abe406276197261802e98f0b6b701e157a95ed1d5da0abae5df98e2a9224d64aaa9f31111a2b1fa6baeed25c581b161595cd30a4af664a264b94ef2a0b2
6
+ metadata.gz: 4e20974a3ee065f6ed76aa1aa768f6457bdf609b0841da88ab2a16ae77cc3e255f5bd9c9737c231ba75083d91847f1d4618d1bb5e3bb02e09d75421a25e6ebf9
7
+ data.tar.gz: 7067fd579b021d5378b7e09d0e1ba77060aadce98c63d6a04ed4664395f0a56e64278fb6afec6552f717628d720d54480c69904e3427cb063792bb3fad769296
@@ -1,19 +1,13 @@
1
1
  module SheetsDB
2
2
  class Spreadsheet < Resource
3
3
  class WorksheetAssociationAlreadyRegisteredError < StandardError; end
4
+ class WorksheetNotFoundError < StandardError; end
4
5
 
5
6
  set_resource_type GoogleDrive::Spreadsheet
6
7
 
7
8
  def self.has_many(resource, worksheet_name:, class_name:)
8
9
  register_worksheet_association(resource, worksheet_name: worksheet_name, class_name: class_name)
9
- define_method(resource) do
10
- @worksheets ||= {}
11
- @worksheets[resource] ||= Worksheet.new(
12
- spreadsheet: self,
13
- google_drive_resource: google_drive_resource.worksheet_by_title(worksheet_name),
14
- type: Support.constantize(class_name)
15
- )
16
- end
10
+ create_worksheet_association(resource, worksheet_name: worksheet_name, class_name: class_name)
17
11
  end
18
12
 
19
13
  def self.register_worksheet_association(resource, worksheet_name:, class_name:)
@@ -27,6 +21,21 @@ module SheetsDB
27
21
  }
28
22
  end
29
23
 
24
+ def self.create_worksheet_association(resource, worksheet_name:, class_name:)
25
+ define_method(resource) do
26
+ @worksheets ||= {}
27
+ @worksheets[resource] ||= begin
28
+ google_drive_worksheet = google_drive_resource.worksheet_by_title(worksheet_name)
29
+ raise WorksheetNotFoundError, worksheet_name if google_drive_worksheet.nil?
30
+ Worksheet.new(
31
+ spreadsheet: self,
32
+ google_drive_resource: google_drive_worksheet,
33
+ type: Support.constantize(class_name)
34
+ )
35
+ end
36
+ end
37
+ end
38
+
30
39
  def find_association_by_id(association_name, id)
31
40
  find_associations_by_ids(association_name, [id]).first
32
41
  end
@@ -43,4 +52,4 @@ module SheetsDB
43
52
  send(association_name).select(&block)
44
53
  end
45
54
  end
46
- end
55
+ end
@@ -1,3 +1,3 @@
1
1
  module SheetsDB
2
- VERSION = "0.4.1"
2
+ VERSION = "0.5.0"
3
3
  end
@@ -3,6 +3,8 @@ require_relative "worksheet/row"
3
3
 
4
4
  module SheetsDB
5
5
  class Worksheet
6
+ class ColumnNotFoundError < StandardError; end
7
+
6
8
  include Enumerable
7
9
 
8
10
  attr_reader :spreadsheet, :google_drive_resource, :type
@@ -43,9 +45,11 @@ module SheetsDB
43
45
 
44
46
  def get_definition_and_column(attribute_name)
45
47
  attribute_definition = attribute_definitions.fetch(attribute_name, {})
48
+ column_name = attribute_definition.fetch(:column_name, attribute_name.to_s)
49
+ raise ColumnNotFoundError, column_name if columns[column_name].nil?
46
50
  [
47
51
  attribute_definition,
48
- columns[attribute_definition.fetch(:column_name, attribute_name.to_s)]
52
+ columns[column_name]
49
53
  ]
50
54
  end
51
55
 
@@ -135,4 +139,4 @@ module SheetsDB
135
139
  converted_value
136
140
  end
137
141
  end
138
- end
142
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sheets_db
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ravi Gadad
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-03 00:00:00.000000000 Z
11
+ date: 2017-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google_drive