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.
@@ -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: []