sheets_db 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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