beerdb-note 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Manifest.txt +14 -6
- data/README.md +4 -3
- data/Rakefile +7 -3
- data/lib/beerdb/note.rb +10 -3
- data/lib/beerdb/note/models/bookmark.rb +35 -0
- data/lib/beerdb/note/models/drink.rb +25 -0
- data/lib/beerdb/note/models/forward.rb +17 -0
- data/lib/beerdb/note/models/note.rb +15 -0
- data/lib/beerdb/note/models/user.rb +29 -0
- data/lib/beerdb/note/schema.rb +93 -0
- data/lib/beerdb/note/version.rb +1 -2
- data/test/helper.rb +17 -0
- data/test/test_extras.rb +24 -0
- metadata +47 -21
checksums.yaml
ADDED
@@ -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
|
data/Manifest.txt
CHANGED
@@ -1,6 +1,14 @@
|
|
1
|
-
HISTORY.md
|
2
|
-
Manifest.txt
|
3
|
-
README.md
|
4
|
-
Rakefile
|
5
|
-
lib/beerdb/note.rb
|
6
|
-
lib/beerdb/note/
|
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
|
4
|
-
* bugs :: [github.com/beerkit/beer.db
|
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
|
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 => '>=
|
27
|
+
:required_ruby_version => '>= 2.3'
|
24
28
|
}
|
25
29
|
|
26
|
-
end
|
30
|
+
end
|
data/lib/beerdb/note.rb
CHANGED
@@ -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
|
data/lib/beerdb/note/version.rb
CHANGED
data/test/helper.rb
ADDED
@@ -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:' )
|
data/test/test_extras.rb
ADDED
@@ -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
|
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:
|
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:
|
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:
|
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:
|
28
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
29
44
|
requirements:
|
30
|
-
- - ~>
|
45
|
+
- - "~>"
|
31
46
|
- !ruby/object:Gem::Version
|
32
|
-
version: '3.
|
47
|
+
version: '3.16'
|
33
48
|
type: :development
|
34
49
|
prerelease: false
|
35
|
-
version_requirements:
|
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
|
-
|
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:
|
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:
|
100
|
+
rubygems_version: 2.5.2
|
75
101
|
signing_key:
|
76
|
-
specification_version:
|
102
|
+
specification_version: 4
|
77
103
|
summary: beerdb-note gem - beer.db addon for notes, bookmarks, drinks, etc.
|
78
104
|
test_files: []
|