mongify-mongoid 1.0.3 → 1.0.4
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e6d0ed283fe1c834bddddb20ccfd3fb47f06feb
|
4
|
+
data.tar.gz: 6249ae1db708f6472dc0ef85f812e262b785d407
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 73272accb607d69e7e035d0cb18c3c4f8e15b15cf4f02536596a1014cdab090d5c3839532c41b87a143b77b0d5a3792a7bc0f884ff0f2d7f913b303359cc4851
|
7
|
+
data.tar.gz: 0e813eb4958e96d90554b638ef8d8fea8d338a1ce4ea87e876e2223820900558ea389b4e46b875a51b9a3ce6156e25a533f3c7d189105c61129771caeab859f3
|
data/CHANGELOG.md
CHANGED
@@ -5,7 +5,7 @@ module Mongify
|
|
5
5
|
module Mongoid
|
6
6
|
#
|
7
7
|
# Class that will be used to define a mongoid model
|
8
|
-
#
|
8
|
+
#
|
9
9
|
class Model
|
10
10
|
#default created at field name
|
11
11
|
CREATED_AT_FIELD = 'created_at'
|
@@ -55,8 +55,8 @@ module Mongify
|
|
55
55
|
end
|
56
56
|
alias :name :class_name
|
57
57
|
|
58
|
-
# Adds a field definition to the class,
|
59
|
-
# e.g:
|
58
|
+
# Adds a field definition to the class,
|
59
|
+
# e.g:
|
60
60
|
# add_field("field_name", "String", {rename_to: "name"})
|
61
61
|
def add_field(name, type, options={})
|
62
62
|
options.stringify_keys!
|
@@ -64,17 +64,18 @@ module Mongify
|
|
64
64
|
check_for_timestamp(name)
|
65
65
|
return if EXCLUDED_FIELDS.include?(name.to_s.downcase)
|
66
66
|
name = options['rename_to'] if options['rename_to'].present?
|
67
|
+
type = options['as'] if options['as'].present?
|
67
68
|
begin
|
68
|
-
@fields[name.to_sym] = Field.new(name, type, options)
|
69
|
+
@fields[name.to_sym] = Field.new(name, type, options)
|
69
70
|
rescue InvalidField => e
|
70
|
-
raise InvalidField, "
|
71
|
-
end
|
71
|
+
raise InvalidField, "Unknown field type #{type} for #{name} in #{class_name}"
|
72
|
+
end
|
72
73
|
end
|
73
74
|
|
74
|
-
# Adds a relationship definition to the class,
|
75
|
-
# e.g:
|
75
|
+
# Adds a relationship definition to the class,
|
76
|
+
# e.g:
|
76
77
|
# add_relation("embedded_in", "users")
|
77
|
-
#
|
78
|
+
#
|
78
79
|
# @note Embedded relations will overpower related relations
|
79
80
|
# @return [Relation] New generated relation
|
80
81
|
def add_relation(relation_name, association, options={})
|
@@ -105,7 +106,7 @@ module Mongify
|
|
105
106
|
#######
|
106
107
|
private
|
107
108
|
#######
|
108
|
-
|
109
|
+
|
109
110
|
# Checks if given field name is a known timestamp field
|
110
111
|
# @return [nil]
|
111
112
|
def check_for_timestamp name
|
@@ -9,6 +9,7 @@ module Mongify
|
|
9
9
|
ACCEPTED_TYPES = [
|
10
10
|
"Array",
|
11
11
|
"BigDecimal",
|
12
|
+
"Decimal",
|
12
13
|
"Boolean",
|
13
14
|
"Date",
|
14
15
|
"DateTime",
|
@@ -29,6 +30,7 @@ module Mongify
|
|
29
30
|
TRANSLATION_TYPES = {
|
30
31
|
array: "Array",
|
31
32
|
bigdecimal: "BigDecimal",
|
33
|
+
decimal: "String",
|
32
34
|
boolean: "Boolean",
|
33
35
|
date: "Date",
|
34
36
|
datetime: "DateTime",
|
@@ -49,24 +51,23 @@ module Mongify
|
|
49
51
|
attr_accessor :name, :type, :options
|
50
52
|
|
51
53
|
def initialize(name, type, options={})
|
52
|
-
type = translate_type(type)
|
53
|
-
check_field_type(type)
|
54
54
|
@name = name
|
55
|
-
@type = type
|
56
55
|
@options = options
|
56
|
+
@type = translate_type(type)
|
57
|
+
check_field_type(@type)
|
57
58
|
end
|
58
59
|
|
59
60
|
#######
|
60
61
|
private
|
61
62
|
#######
|
62
|
-
|
63
|
+
|
63
64
|
# Tries to find a translation for a SQL type to a Mongoid Type
|
64
65
|
# @param [String] name Name of type
|
65
66
|
# @return [String] Translated field name or the same name if no translation is found
|
66
67
|
def translate_type(name)
|
67
68
|
TRANSLATION_TYPES[name.to_s.downcase.to_sym] || name
|
68
69
|
end
|
69
|
-
|
70
|
+
|
70
71
|
# Raises InvalidField if field type is unknown
|
71
72
|
# @param [String] name Name of type
|
72
73
|
# @raise InvalidField if name is not an accepted type
|
@@ -5,15 +5,22 @@ describe Mongify::Mongoid::Model::Field do
|
|
5
5
|
context "types" do
|
6
6
|
context "validation" do
|
7
7
|
it "doesn't raise error when valid value" do
|
8
|
-
expect { Mongify::Mongoid::Model::Field.new("first_name", "String") }.to_not raise_error
|
8
|
+
expect { Mongify::Mongoid::Model::Field.new("first_name", "String") }.to_not raise_error
|
9
9
|
end
|
10
10
|
it "does raise error on invalid value" do
|
11
11
|
expect { Mongify::Mongoid::Model::Field.new("first_name", "Limb") }.to raise_error(Mongify::Mongoid::InvalidField)
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
+
context "decimal" do
|
16
|
+
it "works" do
|
17
|
+
subject = Mongify::Mongoid::Model::Field.new("money", "Decimal")
|
18
|
+
expect(subject.type).to eq "String"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
15
22
|
context "translation" do
|
16
|
-
[:array, :bigdecimal, :boolean, :date, :datetime, :float, :hash, :integer, :objectid, :binary, :range, :regexp, :string, :symbol, :time, :timewithzone].each do |type|
|
23
|
+
[:array, :bigdecimal, :decimal, :boolean, :date, :datetime, :float, :hash, :integer, :objectid, :binary, :range, :regexp, :string, :symbol, :time, :timewithzone].each do |type|
|
17
24
|
it "for #{type} works" do
|
18
25
|
field.send(:translate_type, type).should == Mongify::Mongoid::Model::Field::TRANSLATION_TYPES[type]
|
19
26
|
end
|
@@ -26,6 +33,6 @@ describe Mongify::Mongoid::Model::Field do
|
|
26
33
|
field.send(:translate_type, type).should == type
|
27
34
|
end
|
28
35
|
end
|
29
|
-
|
36
|
+
|
30
37
|
end
|
31
38
|
end
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Mongify::Mongoid::Model do
|
4
4
|
subject(:model) { Mongify::Mongoid::Model.new(:table_name => "users", :class_name => "User") }
|
5
|
-
|
5
|
+
|
6
6
|
describe "initialize" do
|
7
7
|
its(:class_name) { should == "User" }
|
8
8
|
its(:table_name) { should == "users" }
|
@@ -28,10 +28,14 @@ describe Mongify::Mongoid::Model do
|
|
28
28
|
model.add_field("user_id", "integer", {references: 'users'})
|
29
29
|
model.should_not have_field("user_id")
|
30
30
|
end
|
31
|
-
it "
|
31
|
+
it "works with as field type" do
|
32
|
+
subject.add_field("money", "Decimal", {as: "Integer"})
|
33
|
+
expect(subject).to have_field("money").of_type("Integer")
|
34
|
+
end
|
35
|
+
it "raises error if field is unknown" do
|
32
36
|
expect { model.add_field("user_id", 'limb') }.to raise_error(
|
33
|
-
Mongify::Mongoid::InvalidField,
|
34
|
-
"
|
37
|
+
Mongify::Mongoid::InvalidField,
|
38
|
+
"Unknown field type limb for user_id in #{model.class_name}")
|
35
39
|
end
|
36
40
|
end
|
37
41
|
|
@@ -140,7 +144,7 @@ describe Mongify::Mongoid::Model do
|
|
140
144
|
model.add_relation(Mongify::Mongoid::Model::Relation::HAS_MANY, association)
|
141
145
|
model.relations.should have(1).relation
|
142
146
|
end
|
143
|
-
|
147
|
+
|
144
148
|
end
|
145
149
|
end
|
146
150
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongify-mongoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kalek
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-06-
|
12
|
+
date: 2014-06-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongify
|