localizable_db 2.0.1 → 2.0.8
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|