hanami-model 1.0.0.beta2 → 1.0.0.beta3

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: 6ef0a3e682c1e1d8b32295f6e14d70ad8a0c9ea7
4
- data.tar.gz: ce2eccfc1037fa3a89ea65a44e8f4754a10eba5a
3
+ metadata.gz: 814a3f29d87d2da6aebb6ba4087d10a90e9503af
4
+ data.tar.gz: 507495e34d73b7165624f363f87cbe9da59ee61c
5
5
  SHA512:
6
- metadata.gz: 461e105d7804802a456d77c3518e78aff4369fa88a68585f46f1ed648c99bf602fa41e3faae4f7b6bc941282ba0ddc48ce93f23d263f34adcf2c185b14ee24fd
7
- data.tar.gz: e2a85018d9fb67ec84476cb6f69ae1510e3455ef96856a56c69dbdb86c1630d31f077966b70cd487d6e5cabfc9595b2f8ec432d2c6eadcbec4ba4ad82e63de9a
6
+ metadata.gz: 3f6c588f340066f3225ec6f5d6fe27bcdc0b3f6ee1dcdd888181e69dfc43db927ace14c59a573d8e8c1b7015d5246023be889a53dc864e2edd6c3699e2eaff58
7
+ data.tar.gz: 06274bd95fbb3f72dac7f513236b779e7c119fc3dbd9eae0bcb031af0b34ae1704aee850759207b17ed51297354ec6f5851dd64cbf3aeb41f931183ca1374a1f
@@ -1,6 +1,10 @@
1
1
  # Hanami::Model
2
2
  A persistence layer for Hanami
3
3
 
4
+ ## v1.0.0.beta3 - 2017-03-17
5
+ ### Added
6
+ - [Luca Guidi] Introduced `Hanami::Model.disconnect` to disconnect all the active database connections
7
+
4
8
  ## v1.0.0.beta2 - 2017-03-02
5
9
  ### Added
6
10
  - [Semyon Pupkov] Allow to define Postgres connection URL as `"postgresql:///mydb?host=localhost&port=6433&user=postgres&password=testpasswd"`
data/LICENSE.md CHANGED
@@ -1,4 +1,4 @@
1
- Copyright © 2014-2016 Luca Guidi
1
+ Copyright © 2014-2017 Luca Guidi
2
2
 
3
3
  MIT License
4
4
 
@@ -11,8 +11,7 @@ module Hanami
11
11
  # @example SQL Automatic Setup
12
12
  # require 'hanami/model'
13
13
  #
14
- # class Account
15
- # include Hanami::Entity
14
+ # class Account < Hanami::Entity
16
15
  # end
17
16
  #
18
17
  # account = Account.new(name: "Acme Inc.")
@@ -24,9 +23,7 @@ module Hanami
24
23
  # @example Non-SQL Manual Setup
25
24
  # require 'hanami/model'
26
25
  #
27
- # class Account
28
- # include Hanami::Entity
29
- #
26
+ # class Account < Hanami::Entity
30
27
  # attributes do
31
28
  # attribute :id, Types::Int
32
29
  # attribute :name, Types::String
@@ -46,8 +43,7 @@ module Hanami
46
43
  # @example Schemaless Entity
47
44
  # require 'hanami/model'
48
45
  #
49
- # class Account
50
- # include Hanami::Entity
46
+ # class Account < Hanami::Entity
51
47
  # end
52
48
  #
53
49
  # account = Account.new(name: "Acme Inc.")
@@ -117,6 +113,26 @@ module Hanami
117
113
  # @param type [Dry::Types::Definition] the attribute type
118
114
  #
119
115
  # @since 0.7.0
116
+ #
117
+ # @example
118
+ # require 'hanami/model'
119
+ #
120
+ # class Account < Hanami::Entity
121
+ # attributes do
122
+ # attribute :id, Types::Int
123
+ # attribute :name, Types::String
124
+ # attribute :codes, Types::Array(Types::Int)
125
+ # attribute :users, Types::Array(User)
126
+ # attribute :email, Types::String.constrained(format: /@/)
127
+ # attribute :created_at, Types::DateTime
128
+ # end
129
+ # end
130
+ #
131
+ # account = Account.new(name: "Acme Inc.")
132
+ # account.name # => "Acme Inc."
133
+ #
134
+ # account = Account.new(foo: "bar")
135
+ # account.foo # => NoMethodError
120
136
  def attribute(name, type)
121
137
  @attributes[name] = type
122
138
  end
@@ -3,6 +3,9 @@ require 'concurrent'
3
3
  require 'hanami/entity'
4
4
  require 'hanami/repository'
5
5
 
6
+ # Hanami
7
+ #
8
+ # @since 0.1.0
6
9
  module Hanami
7
10
  # Hanami persistence
8
11
  #
@@ -76,5 +79,30 @@ module Hanami
76
79
  @container = configuration.load!(repositories, &blk)
77
80
  @loaded = true
78
81
  end
82
+
83
+ # Disconnect from the database
84
+ #
85
+ # This is useful for reboot applications in production and to ensure that
86
+ # the framework prunes stale connections.
87
+ #
88
+ # @since x.x.x
89
+ #
90
+ # @example With Full Stack Hanami Project
91
+ # # config/puma.rb
92
+ # # ...
93
+ # on_worker_boot do
94
+ # Hanami.boot
95
+ # end
96
+ #
97
+ # @example With Standalone Hanami::Model
98
+ # # config/puma.rb
99
+ # # ...
100
+ # on_worker_boot do
101
+ # Hanami::Model.disconnect
102
+ # Hanami::Model.load!
103
+ # end
104
+ def self.disconnect
105
+ configuration.connection && configuration.connection.disconnect
106
+ end
79
107
  end
80
108
  end
@@ -27,6 +27,8 @@ module Hanami
27
27
  Utils::String.new(@name).underscore.to_sym
28
28
  end
29
29
 
30
+ # @since 0.7.0
31
+ # @api private
30
32
  def to_s
31
33
  @name
32
34
  end
@@ -39,6 +39,8 @@ module Hanami
39
39
  #
40
40
  # @since 0.5.0
41
41
  class InvalidCommandError < Error
42
+ # @since 0.5.0
43
+ # @api private
42
44
  def initialize(message = 'Invalid command')
43
45
  super
44
46
  end
@@ -48,6 +50,8 @@ module Hanami
48
50
  #
49
51
  # @since 0.7.0
50
52
  class ConstraintViolationError < Error
53
+ # @since 0.7.0
54
+ # @api private
51
55
  def initialize(message = 'Constraint has been violated')
52
56
  super
53
57
  end
@@ -57,6 +61,8 @@ module Hanami
57
61
  #
58
62
  # @since 0.6.1
59
63
  class UniqueConstraintViolationError < Error
64
+ # @since 0.6.1
65
+ # @api private
60
66
  def initialize(message = 'Unique constraint has been violated')
61
67
  super
62
68
  end
@@ -66,6 +72,8 @@ module Hanami
66
72
  #
67
73
  # @since 0.6.1
68
74
  class ForeignKeyConstraintViolationError < Error
75
+ # @since 0.6.1
76
+ # @api private
69
77
  def initialize(message = 'Foreign key constraint has been violated')
70
78
  super
71
79
  end
@@ -75,6 +83,8 @@ module Hanami
75
83
  #
76
84
  # @since 0.6.1
77
85
  class NotNullConstraintViolationError < Error
86
+ # @since 0.6.1
87
+ # @api private
78
88
  def initialize(message = 'NOT NULL constraint has been violated')
79
89
  super
80
90
  end
@@ -84,6 +94,8 @@ module Hanami
84
94
  #
85
95
  # @since 0.6.1
86
96
  class CheckConstraintViolationError < Error
97
+ # @since 0.6.1
98
+ # @api private
87
99
  def initialize(message = 'Check constraint has been violated')
88
100
  super
89
101
  end
@@ -5,11 +5,14 @@ module Hanami
5
5
  # Mapping
6
6
  #
7
7
  # @since 0.1.0
8
+ # @api private
8
9
  class Mapping
9
10
  extend Transproc::Registry
10
11
 
11
12
  import Transproc::HashTransformations
12
13
 
14
+ # @since 0.1.0
15
+ # @api private
13
16
  def initialize(&blk)
14
17
  @attributes = {}
15
18
  @r_attributes = {}
@@ -17,16 +20,20 @@ module Hanami
17
20
  @processor = @attributes.empty? ? ::Hash : t(:rename_keys, @attributes)
18
21
  end
19
22
 
23
+ # @api private
20
24
  def t(name, *args)
21
25
  self.class[name, *args]
22
26
  end
23
27
 
28
+ # @api private
24
29
  def model(entity)
25
30
  end
26
31
 
32
+ # @api private
27
33
  def register_as(name)
28
34
  end
29
35
 
36
+ # @api private
30
37
  def attribute(name, options)
31
38
  from = options.fetch(:from, name)
32
39
 
@@ -34,14 +41,17 @@ module Hanami
34
41
  @r_attributes[from] = name
35
42
  end
36
43
 
44
+ # @api private
37
45
  def process(input)
38
46
  @processor[input]
39
47
  end
40
48
 
49
+ # @api private
41
50
  def reverse?
42
51
  @r_attributes.any?
43
52
  end
44
53
 
54
+ # @api private
45
55
  def translate(attribute)
46
56
  @r_attributes.fetch(attribute)
47
57
  end
@@ -73,6 +73,8 @@ module Hanami
73
73
  raise MigrationError.new("Current adapter (#{connection.database_type}) doesn't support drop.")
74
74
  end
75
75
 
76
+ # @since 0.4.0
77
+ # @api private
76
78
  def migrate(migrations, version)
77
79
  version = Integer(version) unless version.nil?
78
80
 
@@ -128,6 +128,7 @@ module Hanami
128
128
  @uri ||= URI.parse(uri.sub('jdbc:', ''))
129
129
  end
130
130
 
131
+ # @api private
131
132
  def schema
132
133
  configuration.schema
133
134
  end
@@ -10,6 +10,8 @@ module Hanami
10
10
  class Console
11
11
  extend Forwardable
12
12
 
13
+ # @since 0.7.0
14
+ # @api private
13
15
  def_delegator :console, :connection_string
14
16
 
15
17
  # @since 0.7.0
@@ -3,6 +3,6 @@ module Hanami
3
3
  # Defines the version
4
4
  #
5
5
  # @since 0.1.0
6
- VERSION = '1.0.0.beta2'.freeze
6
+ VERSION = '1.0.0.beta3'.freeze
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-model
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta2
4
+ version: 1.0.0.beta3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-03-02 00:00:00.000000000 Z
13
+ date: 2017-03-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: hanami-utils