arkaan 0.8.21 → 0.9.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.
- checksums.yaml +4 -4
- data/lib/arkaan.rb +1 -0
- data/lib/arkaan/account.rb +4 -3
- data/lib/arkaan/campaigns/invitation.rb +4 -6
- data/lib/arkaan/concerns.rb +1 -0
- data/lib/arkaan/concerns/enumerable.rb +44 -0
- data/lib/arkaan/phone.rb +24 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc39dec4721b328451c73cde4e780f9917f66b9c
|
4
|
+
data.tar.gz: 06c34ff8141b36f29b7400c05e4f6b3d43c71fcc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9364b342574cccb18d98d01513438b04f30a988d7732a94f3d7560b0ce3b2f4339d6ac435fc32f4d69f89d034bc8f48665e4d03570b637f20c0ef874eac50349
|
7
|
+
data.tar.gz: 235201b877ff1707df05753b9e61da44e9aa388205d9721e8896043fcc4b27f39005ef545c45ab8acbb9ed92e3d55cdb874df842b99842f6425ad96e4797b101
|
data/lib/arkaan.rb
CHANGED
data/lib/arkaan/account.rb
CHANGED
@@ -18,9 +18,6 @@ module Arkaan
|
|
18
18
|
# @!attribute [rw] firstname
|
19
19
|
# @return [String] the first name of the user.
|
20
20
|
field :firstname, type: String, default: ''
|
21
|
-
# @!attribute [rw] birthdate
|
22
|
-
# @return [DateTime] the day of birth of the user, as an ISO-8601.
|
23
|
-
field :birthdate, type: DateTime
|
24
21
|
# @!attribute [rw] email
|
25
22
|
# @return [String] the email address of the user, useful to contact them ; it must be given, unique, and have an email format.
|
26
23
|
field :email, type: String
|
@@ -57,6 +54,10 @@ module Arkaan
|
|
57
54
|
# @return [Array<Arkaan::Campaigns::Invitation>] the invitations you've issued yourself to other players.
|
58
55
|
has_many :created_invitations, class_name: 'Arkaan::Campaigns::Invitation', inverse_of: :creator
|
59
56
|
|
57
|
+
# @!attribute [rw] phones
|
58
|
+
# @return [Array<Arkaan::Phone>] the phone numbers given by the user.
|
59
|
+
embeds_many :phones, class_name: 'Arkaan::Phone', inverse_of: :account
|
60
|
+
|
60
61
|
validates :username,
|
61
62
|
presence: {message: 'required'},
|
62
63
|
length: {minimum: 6, message: 'minlength', if: :username?},
|
@@ -5,13 +5,11 @@ module Arkaan
|
|
5
5
|
class Invitation
|
6
6
|
include Mongoid::Document
|
7
7
|
include Mongoid::Timestamps
|
8
|
+
include Arkaan::Concerns::Enumerable
|
8
9
|
|
9
|
-
# @!attribute [rw]
|
10
|
-
# @return [
|
11
|
-
|
12
|
-
# @!attribute [rw] accepted_at
|
13
|
-
# @return [DateTime] the date at which the invitation has been accepted.
|
14
|
-
field :accepted_at, type: DateTime, default: nil
|
10
|
+
# @!attribute [rw] status
|
11
|
+
# @return [Symbol] the current status of the invitation.
|
12
|
+
enum_field :status, [:accepted, :expelled, :ignored, :pending, :refused], default: :pending
|
15
13
|
|
16
14
|
# @!attribute [rw] account
|
17
15
|
# @return [Arkaan::Account] the account the invitation has been issued to.
|
data/lib/arkaan/concerns.rb
CHANGED
@@ -5,6 +5,7 @@ module Arkaan
|
|
5
5
|
autoload :Sluggable, 'arkaan/concerns/sluggable'
|
6
6
|
autoload :Activable, 'arkaan/concerns/activable'
|
7
7
|
autoload :Diagnosticable, 'arkaan/concerns/diagnosticable'
|
8
|
+
autoload :Enumerable, 'arkaan/concerns/enumerable'
|
8
9
|
autoload :Premiumable, 'arkaan/concerns/premiumable'
|
9
10
|
end
|
10
11
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Arkaan
|
2
|
+
module Concerns
|
3
|
+
# Defines enumerations for the Mongoid models. An enumeration is a field that can only use a given set of values.
|
4
|
+
# @author Vincent Courtois <courtois.vincent@outlook.com>
|
5
|
+
module Enumerable
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
# Submodule holding all the static methods add to the current subclass.
|
9
|
+
# @author Vincent Courtois <courtois.vincent@outlook.com>
|
10
|
+
module ClassMethods
|
11
|
+
|
12
|
+
# Creates the field with the given name, set of possible values, and options.
|
13
|
+
# @param name [String] the name of the enumerated field.
|
14
|
+
# @param values [Array<Symbol>] the possible values of the enumerated field.
|
15
|
+
# @param options [Hash<Symbol, Any>] the possible options for the field.
|
16
|
+
def enum_field(field_name, values, options = {})
|
17
|
+
field :"enum_#{field_name}", type: Symbol, default: options[:default]
|
18
|
+
|
19
|
+
validates :"enum_#{field_name}", inclusion: {in: values.map(&:to_sym), message: 'inclusion'}
|
20
|
+
|
21
|
+
define_method field_name do
|
22
|
+
return self["enum_#{field_name}"]
|
23
|
+
end
|
24
|
+
|
25
|
+
define_method "#{field_name}=" do |value|
|
26
|
+
if values.include? value
|
27
|
+
self["enum_#{field_name}"] = value.to_sym
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
values.map(&:to_sym).each do |value|
|
32
|
+
define_method "#{field_name}_#{value}!" do
|
33
|
+
self["enum_#{field_name}"] = value
|
34
|
+
end
|
35
|
+
|
36
|
+
define_method "#{field_name}_#{value}?" do
|
37
|
+
self["enum_#{field_name}"] == value
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/lib/arkaan/phone.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
module Arkaan
|
2
|
+
# A phone number is given by a user so that the persons he has selected can have it to contact him.
|
3
|
+
# @author Vincent Courtois <courtois.vincent@outlook.com>
|
4
|
+
class Phone
|
5
|
+
include Mongoid::Document
|
6
|
+
include Mongoid::Timestamps
|
7
|
+
include Arkaan::Concerns::Enumerable
|
8
|
+
|
9
|
+
# @!attribute [rw] privacy
|
10
|
+
# @return [Symbol] the level of privacy you want for this phone number.
|
11
|
+
enum_field :privacy, [:players, :public, :private], default: :private
|
12
|
+
# @!attribute [rw] number
|
13
|
+
# @return [Integer] the phone number the user has given.
|
14
|
+
field :number, type: Integer
|
15
|
+
|
16
|
+
# @!attribute [rw] account
|
17
|
+
# @return [Arkaan::Account] the account the phone number is associated to.
|
18
|
+
embedded_in :account, class_name: 'Arkaan::Account', inverse_of: :phones
|
19
|
+
|
20
|
+
validates :number,
|
21
|
+
presence: {message: 'required'},
|
22
|
+
format: {with: /\A[0-9\-\._\/]+\z/, message: 'pattern'}
|
23
|
+
end
|
24
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arkaan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vincent Courtois
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-04-
|
11
|
+
date: 2018-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -209,6 +209,7 @@ files:
|
|
209
209
|
- lib/arkaan/concerns.rb
|
210
210
|
- lib/arkaan/concerns/activable.rb
|
211
211
|
- lib/arkaan/concerns/diagnosticable.rb
|
212
|
+
- lib/arkaan/concerns/enumerable.rb
|
212
213
|
- lib/arkaan/concerns/premiumable.rb
|
213
214
|
- lib/arkaan/concerns/sluggable.rb
|
214
215
|
- lib/arkaan/monitoring.rb
|
@@ -225,6 +226,7 @@ files:
|
|
225
226
|
- lib/arkaan/permissions/category.rb
|
226
227
|
- lib/arkaan/permissions/group.rb
|
227
228
|
- lib/arkaan/permissions/right.rb
|
229
|
+
- lib/arkaan/phone.rb
|
228
230
|
- lib/arkaan/specs.rb
|
229
231
|
- lib/arkaan/utils.rb
|
230
232
|
- lib/arkaan/utils/controller.rb
|