localizable_db 2.0.1 → 2.0.8
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/localizable_db/localizable.rb +46 -39
- data/lib/localizable_db/version.rb +1 -1
- metadata +8 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72d05a5d0122ca0e6cefa8dbd9a57b177f576be071f19d6085f9b13eb5725ca1
|
4
|
+
data.tar.gz: b725681ea0b45ae0aeec763ca20cec927d92b66ebbf7c41d788e3c5e13ac3645
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2cd13ae434121fbeee9daaae6fb14499c6d998e5513a901739c5d6e1980dca255a205a64705bb4d9ff5ccb7a9ae2700c2783238ccf860e18ef7beaf54ea239c6
|
7
|
+
data.tar.gz: 67026c758080e081e83d0a8151dba7093f5e5668baa92cdb370f0cc188d59d099c98de68c68b18a830bf3daf89f361e9eb76b1617fe812eccdd83fab9825765c
|
@@ -79,9 +79,8 @@ module LocalizableDb
|
|
79
79
|
language = languages.first
|
80
80
|
return one_language(language)
|
81
81
|
else
|
82
|
-
|
83
|
-
|
84
|
-
end
|
82
|
+
languages = languages.keep_if do |language|
|
83
|
+
LocalizableDb::Languages::NOT_DEFAULT.include? language end
|
85
84
|
return multiple_languages(languages)
|
86
85
|
end
|
87
86
|
else
|
@@ -95,60 +94,68 @@ module LocalizableDb
|
|
95
94
|
|
96
95
|
def one_language(language)
|
97
96
|
attrs_to_select = single_languege_attrs_to_select_conf(language)
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
97
|
+
case_selects = []
|
98
|
+
case_index = 0
|
99
|
+
self.localizable_attributes.each do |attribute|
|
100
|
+
case_selects << "CASE "
|
101
|
+
case_selects[case_index] += "WHEN #{self.localized_table_name}.#{attribute.to_s} IS NULL "
|
102
|
+
case_selects[case_index] += "THEN #{self.table_name}.#{attribute.to_s} "
|
103
|
+
case_selects[case_index] += "ELSE #{self.localized_table_name}.#{attribute.to_s} "
|
104
|
+
case_selects[case_index] += "END AS #{attribute} "
|
105
|
+
case_index += 1
|
106
|
+
end
|
107
|
+
from("
|
108
|
+
(SELECT #{self.table_name}.id, #{attrs_to_select.join(', ')}, #{case_selects.join(', ')}
|
109
|
+
FROM #{self.table_name}
|
110
|
+
LEFT OUTER JOIN (
|
111
|
+
SELECT * FROM #{self.localized_table_name}
|
112
|
+
WHERE #{self.localized_table_name}.locale = '#{language}'
|
113
|
+
) AS #{self.localized_table_name}
|
114
|
+
ON #{self.localized_table_name}.locale = '#{language}'
|
115
|
+
) AS #{self.table_name}
|
107
116
|
")
|
108
117
|
end
|
109
118
|
|
110
119
|
def multiple_languages(languages)
|
111
|
-
|
120
|
+
attrs_to_select = (self.attribute_names - ["id"] - self.localizable_attributes).map do |attribute|
|
112
121
|
"#{self.table_name}.#{attribute.to_s}"
|
113
122
|
end
|
114
123
|
tables_to_select = ""
|
115
|
-
conditions_to_select = ""
|
116
124
|
languages.each do |language|
|
117
125
|
attrs_to_select = attrs_to_select | self.localizable_attributes.map do |attribute|
|
118
126
|
"#{language.to_s}_#{self.localized_table_name}.#{attribute.to_s} as #{language.to_s}_#{attribute.to_s}"
|
119
127
|
end
|
120
|
-
tables_to_select += "
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
128
|
+
tables_to_select += "LEFT OUTER JOIN (
|
129
|
+
SELECT *
|
130
|
+
FROM #{self.localized_table_name}
|
131
|
+
WHERE #{self.localized_table_name}.locale = '#{language.to_s}'
|
132
|
+
) AS #{language.to_s}_#{self.localized_table_name}
|
133
|
+
ON #{language.to_s}_#{self.localized_table_name}.locale = '#{language.to_s}'"
|
125
134
|
end
|
126
|
-
from("
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
) AS #{self.table_name}
|
132
|
-
ON #{conditions_to_select}
|
133
|
-
")
|
135
|
+
from("
|
136
|
+
(SELECT #{self.table_name}.id, #{attrs_to_select.join(', ')}
|
137
|
+
FROM #{self.table_name}
|
138
|
+
#{tables_to_select}
|
139
|
+
) AS #{self.table_name}")
|
134
140
|
end
|
135
141
|
|
136
142
|
def single_languege_attrs_to_select_conf(language = nil)
|
137
143
|
if LocalizableDb.configuration.attributes_integration
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
144
|
+
attrs_to_select = (self.attribute_names - ["id"] - self.localizable_attributes).map do |attribute|
|
145
|
+
"#{self.table_name}.#{attribute.to_s}"
|
146
|
+
end - self.localizable_attributes.map do |attribute|
|
147
|
+
"#{self.table_name}.#{attribute.to_s}"
|
148
|
+
end | self.localizable_attributes.map do |attribute|
|
142
149
|
["#{self.localized_table_name}.#{attribute.to_s}","#{self.localized_table_name}.#{attribute.to_s} as #{language}_#{attribute}"]
|
143
|
-
|
144
|
-
|
150
|
+
end
|
151
|
+
attrs_to_select.flatten!
|
145
152
|
else
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
153
|
+
attrs_to_select = self.attribute_names - ["id"]
|
154
|
+
attrs_to_select = attrs_to_select.map do |attribute|
|
155
|
+
"#{self.table_name}.#{attribute}"
|
156
|
+
end | self.localizable_attributes.map do |attribute|
|
157
|
+
"#{self.localized_table_name}.#{attribute.to_s} as #{language}_#{attribute}"
|
158
|
+
end
|
152
159
|
end
|
153
160
|
attrs_to_select
|
154
161
|
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: localizable_db
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Yonga9121
|
8
8
|
- Nevinyrral
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-02-
|
12
|
+
date: 2018-02-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: 5.0.0
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
29
|
+
name: pg
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - ">="
|
@@ -42,9 +42,7 @@ dependencies:
|
|
42
42
|
description: If your application manage something like products or services that can
|
43
43
|
be created dynamically, and you have to support multiple languages you may need
|
44
44
|
to localize your database. LocalizableDb allow you to do that in a simple way.
|
45
|
-
email:
|
46
|
-
- jorgeggayon@gmail.com
|
47
|
-
- montanor@javeriana.edu.co
|
45
|
+
email: jorgeggayon@gmail.com
|
48
46
|
executables: []
|
49
47
|
extensions: []
|
50
48
|
extra_rdoc_files: []
|
@@ -70,7 +68,8 @@ files:
|
|
70
68
|
homepage: https://yonga9121.github.io/localizable_db
|
71
69
|
licenses:
|
72
70
|
- MIT
|
73
|
-
metadata:
|
71
|
+
metadata:
|
72
|
+
source_code_uri: https://github.com/yonga9121/localizable_db
|
74
73
|
post_install_message:
|
75
74
|
rdoc_options: []
|
76
75
|
require_paths:
|
@@ -90,5 +89,5 @@ rubyforge_project:
|
|
90
89
|
rubygems_version: 2.7.3
|
91
90
|
signing_key:
|
92
91
|
specification_version: 4
|
93
|
-
summary: Rails gem to localize your database
|
92
|
+
summary: Rails gem to localize your database.
|
94
93
|
test_files: []
|