beerdb-note 0.0.1 → 0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 82d3fd8d6e06964d99db5cc9f1b56d7d958a668b
4
+ data.tar.gz: 28624f31b0c2a2bae3a2f580cb34df06afdf368d
5
+ SHA512:
6
+ metadata.gz: 2e93708a318684709a252d5336fab3e0d12bd6695bdb1c00651e9c2ca889739dbc3c6043ddda6e6e8dceeecd07ee2cd9202ead7c66340ee5378e5f04a6f93f6e
7
+ data.tar.gz: 54d55e7d0d44b90a03ba818b27a5712ebb87914f68b60953bf81c9c1b5e86b100d2909a5e910a0ecfd72ab97fdd20b5a7d4a6d85ceb0ba03e1ba5e8760e3eb53
@@ -1,6 +1,14 @@
1
- HISTORY.md
2
- Manifest.txt
3
- README.md
4
- Rakefile
5
- lib/beerdb/note.rb
6
- lib/beerdb/note/version.rb
1
+ HISTORY.md
2
+ Manifest.txt
3
+ README.md
4
+ Rakefile
5
+ lib/beerdb/note.rb
6
+ lib/beerdb/note/models/bookmark.rb
7
+ lib/beerdb/note/models/drink.rb
8
+ lib/beerdb/note/models/forward.rb
9
+ lib/beerdb/note/models/note.rb
10
+ lib/beerdb/note/models/user.rb
11
+ lib/beerdb/note/schema.rb
12
+ lib/beerdb/note/version.rb
13
+ test/helper.rb
14
+ test/test_extras.rb
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # beerdb-note - beer.db addon for notes, bookmarks, drinks, etc.
2
2
 
3
- * home :: [github.com/beerkit/beer.db.note.ruby](https://github.com/beerkit/beer.db.note.ruby)
4
- * bugs :: [github.com/beerkit/beer.db.note.ruby/issues](https://github.com/beerkit/beer.db.note.ruby/issues)
3
+ * home :: [github.com/beerkit/beer.db](https://github.com/beerkit/beer.db)
4
+ * bugs :: [github.com/beerkit/beer.db/issues](https://github.com/beerkit/beer.db/issues)
5
5
  * gem :: [rubygems.org/gems/beerdb-note](https://rubygems.org/gems/beerdb-note)
6
6
  * rdoc :: [rubydoc.info/gems/beerdb-note](http://rubydoc.info/gems/beerdb-note)
7
7
  * forum :: [groups.google.com/group/beerdb](https://groups.google.com/group/beerdb)
@@ -21,6 +21,8 @@ Just install the gem:
21
21
 
22
22
  ## License
23
23
 
24
+ ![](https://publicdomainworks.github.io/buttons/zero88x31.png)
25
+
24
26
  The `beerdb-note` scripts are dedicated to the public domain.
25
27
  Use it as you please with no restrictions whatsoever.
26
28
 
@@ -30,4 +32,3 @@ Use it as you please with no restrictions whatsoever.
30
32
  Send them along to the
31
33
  [Open Beer & Brewery Database Forum/Mailing List](http://groups.google.com/group/beerdb).
32
34
  Thanks!
33
-
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ Hoe.spec 'beerdb-note' do
8
8
  self.summary = 'beerdb-note gem - beer.db addon for notes, bookmarks, drinks, etc.'
9
9
  self.description = summary
10
10
 
11
- self.urls = ['https://github.com/beerkit/beer.db.note.ruby']
11
+ self.urls = ['https://github.com/beerkit/beer.db']
12
12
 
13
13
  self.author = 'Gerald Bauer'
14
14
  self.email = 'beerdb@googlegroups.com'
@@ -19,8 +19,12 @@ Hoe.spec 'beerdb-note' do
19
19
 
20
20
  self.licenses = ['Public Domain']
21
21
 
22
+ self.extra_deps = [
23
+ ['beerdb-models', '>= 1.2.0']
24
+ ]
25
+
22
26
  self.spec_extras = {
23
- :required_ruby_version => '>= 1.9.2'
27
+ :required_ruby_version => '>= 2.3'
24
28
  }
25
29
 
26
- end
30
+ end
@@ -1,14 +1,22 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  ###
4
- # note: it's an addon to beerdb (get all libs via beerdb)
5
- require 'beerdb'
4
+ # note: it's an addon to beerdb (get all libs via beerdb-models)
5
+ require 'beerdb/models'
6
6
 
7
7
 
8
8
  # our own code
9
9
 
10
10
  require 'beerdb/note/version' # let it always go first
11
11
 
12
+ require 'beerdb/note/schema'
13
+ require 'beerdb/note/models/forward'
14
+ require 'beerdb/note/models/user'
15
+ require 'beerdb/note/models/drink'
16
+ require 'beerdb/note/models/bookmark'
17
+ require 'beerdb/note/models/note'
18
+
19
+
12
20
 
13
21
 
14
22
  module BeerDbNote
@@ -25,4 +33,3 @@ end # module BeerDbNote
25
33
 
26
34
 
27
35
  puts BeerDbNote.banner # say hello
28
-
@@ -0,0 +1,35 @@
1
+ # encoding: UTF-8
2
+
3
+ ## NB: just use namespace BeerDb::Model (not BeerDbService::Model or something else)
4
+
5
+ module BeerDb
6
+ module Model
7
+
8
+ class Bookmark < ActiveRecord::Base
9
+
10
+ belongs_to :bookmarkable, :polymorphic => true
11
+ belongs_to :user
12
+
13
+
14
+ ### fix - how to do it with has_many macro? use finder_sql?
15
+ def drinks
16
+ ## todo: check/assert bookmarkable_type == BeerDB::Model::Beer
17
+ Drink.where( user_id: user_id, beer_id: bookmarkable_id )
18
+ end
19
+
20
+ def notes
21
+ ## todo: check/assert bookmarkable_type == BeerDB::Model::Beer
22
+ Note.where( user_id: user_id, beer_id: bookmarkable_id )
23
+ end
24
+
25
+
26
+ ## todo: check: how to handle polymorphic best for getting beer for bookmarkable?
27
+ def beer
28
+ ## todo: check/assert bookmarkable_type == BeerDB::Model::Beer
29
+ Beer.find( bookmarkable_id )
30
+ end
31
+
32
+ end # class Bookmark
33
+
34
+ end # module Model
35
+ end # module BeerDb
@@ -0,0 +1,25 @@
1
+ # encoding: UTF-8
2
+
3
+ module BeerDb
4
+ module Model
5
+
6
+ class Drink < ActiveRecord::Base
7
+
8
+ belongs_to :beer, class_name: 'BeerDb::Model::Beer'
9
+ belongs_to :user, class_name: 'BeerDb::Model::User'
10
+
11
+ before_save :on_before_save
12
+
13
+ def on_before_save
14
+ # todo/check: can we use blank? for datetime too or just array,strings,etc.
15
+ # check - can we use/access created_at? already set for new records?
16
+
17
+ self.drunk_at = Time.now if drunk_at.blank?
18
+ end
19
+
20
+
21
+ end # class Drink
22
+
23
+ end # module Model
24
+ end # module BeerDb
25
+
@@ -0,0 +1,17 @@
1
+ # encoding: UTF-8
2
+
3
+
4
+ ### forward references
5
+ ## require first to resolve circular references
6
+
7
+ module BeerDb
8
+ module Model
9
+
10
+ class User < ActiveRecord::Base ; end
11
+ class Bookmark < ActiveRecord::Base ; end
12
+ class Drink < ActiveRecord::Base ; end
13
+ class Note < ActiveRecord::Base ; end
14
+
15
+ end # module Model
16
+ end # module BeerDb
17
+
@@ -0,0 +1,15 @@
1
+ # encoding: UTF-8
2
+
3
+ module BeerDb
4
+ module Model
5
+
6
+ class Note < ActiveRecord::Base
7
+
8
+ belongs_to :beer, class_name: 'BeerDb::Model::Beer'
9
+ belongs_to :user, class_name: 'BeerDb::Model::User'
10
+
11
+ end # class Note
12
+
13
+ end # module Model
14
+ end # module BeerDb
15
+
@@ -0,0 +1,29 @@
1
+ # encoding: UTF-8
2
+
3
+ module BeerDb
4
+ module Model
5
+
6
+ class User < ActiveRecord::Base
7
+
8
+ has_many :notes # beers w/ ratings
9
+ has_many :drinks
10
+
11
+ has_many :bookmarks # bookmarked beers
12
+
13
+
14
+ before_save :on_before_save
15
+
16
+ def on_before_save
17
+ if email.blank?
18
+ self.key = 'xxx'
19
+ else
20
+ # NB: remove whitespace and (.-+_) and downcase
21
+ self.key = email.gsub( /[\s\.\-+_]/, '' ).downcase
22
+ end
23
+ end
24
+
25
+ end # class User
26
+
27
+ end # module Model
28
+ end # module BeerDb
29
+
@@ -0,0 +1,93 @@
1
+ # encoding: UTF-8
2
+
3
+ module BeerDb
4
+
5
+ ### some more optional migrations
6
+ #
7
+ # see beer.db.admin (copied for possible service/api version only)
8
+
9
+
10
+ ####
11
+ # tasting notes (w/ ratings)
12
+ class CreateDbExtrasNotes
13
+
14
+ def up
15
+ ActiveRecord::Schema.define do
16
+ create_table :notes do |t| # join table (user,beer)
17
+ t.references :beer, :null => false
18
+ t.references :user, :null => false
19
+ t.integer :rating, :null => false # 1-10 scala (10 is best)
20
+
21
+ t.text :comments
22
+ t.string :place # location (place) where tasted/drunken
23
+
24
+ ## todo: add flag for bottle, can, draft
25
+
26
+ t.timestamps
27
+ end
28
+ end # Schema.define
29
+ end # method up
30
+ end # class CreateDbExtrasNotes
31
+
32
+
33
+ #################
34
+ # +1 - beer drink log; track beers
35
+ class CreateDbExtrasDrinks
36
+
37
+ def up
38
+ ActiveRecord::Schema.define do
39
+ create_table :drinks do |t| # join table (user,beer)
40
+ t.references :beer, :null => false
41
+ t.references :user, :null => false
42
+ t.datetime :drunk_at ## , :null => false # todo: pre-set if nil to created_at?
43
+
44
+ t.string :place # location (place) where tasted/drunken
45
+
46
+ ## todo: add flag for bottle, can, draft
47
+
48
+ t.timestamps
49
+ end
50
+ end # Schema.define
51
+ end # method up
52
+ end # class CreateDrinks
53
+
54
+
55
+ class CreateDbExtrasBookmarks
56
+
57
+ def up
58
+ ActiveRecord::Schema.define do
59
+ create_table :bookmarks do |t| # join table (user,beer/brewery)
60
+ t.references :bookmarkable, :polymorphic => true # todo: check add :null => false is possible/needed?
61
+ t.references :user, :null => false
62
+
63
+ t.boolean :yes, :null => false, :default => false # like/favorite/top
64
+ t.boolean :no, :null => false, :default => false # dislike/flop/blacklisted
65
+ t.boolean :wish, :null => false, :default => false # e.g wish == false == drunk / wishlist (beer not yet drunken/tasted)
66
+
67
+ t.timestamps
68
+ end
69
+ end # Schema.define
70
+ end # method up
71
+ end # class CreateBookmarks
72
+
73
+
74
+
75
+ class CreateDbExtrasUsers
76
+
77
+ def up
78
+ ActiveRecord::Schema.define do
79
+ create_table :users do |t|
80
+ t.string :key, :null => false # import/export key
81
+ t.string :name, :null => false
82
+ t.string :email, :null => false
83
+ t.boolean :admin, :null => false, :default => false
84
+ t.boolean :guest, :null => false, :default => false
85
+ t.boolean :active, :null => false, :default => true
86
+
87
+ t.timestamps
88
+ end
89
+ end # Schema.define
90
+ end # method up
91
+ end # class CreateUsers
92
+
93
+ end # module BeerDb
@@ -5,6 +5,5 @@
5
5
  # - note is the name of a model(!) - lets avoid confusion
6
6
 
7
7
  module BeerDbNote
8
- VERSION = '0.0.1'
8
+ VERSION = '0.1.0'
9
9
  end
10
-
@@ -0,0 +1,17 @@
1
+
2
+ ## $:.unshift(File.dirname(__FILE__))
3
+
4
+ ## minitest setup
5
+
6
+ require 'minitest/autorun'
7
+
8
+
9
+ # our own code
10
+ require 'beerdb/note'
11
+
12
+ ### setup_in_memory_db
13
+
14
+ ActiveRecord::Base.logger = Logger.new( STDOUT )
15
+
16
+ ActiveRecord::Base.establish_connection( adapter: 'sqlite3',
17
+ database: ':memory:' )
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+
3
+ ###
4
+ # to run use
5
+ # ruby -I ./lib -I ./test test/test_extras.rb
6
+ # or better
7
+ # rake test
8
+
9
+ require 'helper'
10
+
11
+
12
+ class TestExtras < MiniTest::Test
13
+
14
+ def test_create
15
+
16
+ BeerDb::CreateDbExtrasNotes.new.up
17
+ BeerDb::CreateDbExtrasDrinks.new.up
18
+ BeerDb::CreateDbExtrasBookmarks.new.up
19
+ BeerDb::CreateDbExtrasUsers.new.up
20
+
21
+ assert true # for now everything ok if we get here
22
+ end
23
+
24
+ end # class TestExtras
metadata CHANGED
@@ -1,38 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beerdb-note
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 0.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Gerald Bauer
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-10-13 00:00:00.000000000 Z
11
+ date: 2017-08-27 00:00:00.000000000 Z
13
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: beerdb-models
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.2.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.2.0
14
27
  - !ruby/object:Gem::Dependency
15
28
  name: rdoc
16
- requirement: &81551180 !ruby/object:Gem::Requirement
17
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
18
30
  requirements:
19
- - - ~>
31
+ - - "~>"
20
32
  - !ruby/object:Gem::Version
21
33
  version: '4.0'
22
34
  type: :development
23
35
  prerelease: false
24
- version_requirements: *81551180
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '4.0'
25
41
  - !ruby/object:Gem::Dependency
26
42
  name: hoe
27
- requirement: &81550860 !ruby/object:Gem::Requirement
28
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
29
44
  requirements:
30
- - - ~>
45
+ - - "~>"
31
46
  - !ruby/object:Gem::Version
32
- version: '3.12'
47
+ version: '3.16'
33
48
  type: :development
34
49
  prerelease: false
35
- version_requirements: *81550860
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.16'
36
55
  description: beerdb-note gem - beer.db addon for notes, bookmarks, drinks, etc.
37
56
  email: beerdb@googlegroups.com
38
57
  executables: []
@@ -47,32 +66,39 @@ files:
47
66
  - README.md
48
67
  - Rakefile
49
68
  - lib/beerdb/note.rb
69
+ - lib/beerdb/note/models/bookmark.rb
70
+ - lib/beerdb/note/models/drink.rb
71
+ - lib/beerdb/note/models/forward.rb
72
+ - lib/beerdb/note/models/note.rb
73
+ - lib/beerdb/note/models/user.rb
74
+ - lib/beerdb/note/schema.rb
50
75
  - lib/beerdb/note/version.rb
51
- homepage: https://github.com/beerkit/beer.db.note.ruby
76
+ - test/helper.rb
77
+ - test/test_extras.rb
78
+ homepage: https://github.com/beerkit/beer.db
52
79
  licenses:
53
80
  - Public Domain
81
+ metadata: {}
54
82
  post_install_message:
55
83
  rdoc_options:
56
- - --main
84
+ - "--main"
57
85
  - README.md
58
86
  require_paths:
59
87
  - lib
60
88
  required_ruby_version: !ruby/object:Gem::Requirement
61
- none: false
62
89
  requirements:
63
- - - ! '>='
90
+ - - ">="
64
91
  - !ruby/object:Gem::Version
65
- version: 1.9.2
92
+ version: '2.3'
66
93
  required_rubygems_version: !ruby/object:Gem::Requirement
67
- none: false
68
94
  requirements:
69
- - - ! '>='
95
+ - - ">="
70
96
  - !ruby/object:Gem::Version
71
97
  version: '0'
72
98
  requirements: []
73
99
  rubyforge_project:
74
- rubygems_version: 1.8.17
100
+ rubygems_version: 2.5.2
75
101
  signing_key:
76
- specification_version: 3
102
+ specification_version: 4
77
103
  summary: beerdb-note gem - beer.db addon for notes, bookmarks, drinks, etc.
78
104
  test_files: []