dameng-rails 0.1.0 → 0.1.1
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/dm_rails/introspection.rb +5 -2
- data/lib/dm_rails/version.rb +1 -1
- data/lib/dm_rails.rb +12 -0
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7c52f71ca3c6d4a5ce20dee6be61831a5378cfd5bfb607c4967cc3a8afb0c6d7
|
|
4
|
+
data.tar.gz: e8b1bebb377f3dc3043a2122b21dbb5e592c0ea4fb9d73707a21afa605c7ddf9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 64697aba410fa1b37145ac581e528047f9316853010005034baf7c54d6e1fba399a888893ce3b02a0a8a0646ce4a9b2b59a7b325e10eccc99488996ed4d707b1
|
|
7
|
+
data.tar.gz: 8700a9b393a13fc303679f7651ee5f8a585b35f83e8a10452a31aff83fae0a2ac2484a42883c40f8509fbf8c53918705350f632f5e65d93eef25aeb02b7c3e1d
|
|
@@ -9,11 +9,14 @@ module DmRails
|
|
|
9
9
|
# 表清单用代理可自答的 SHOW TABLES。
|
|
10
10
|
module Introspection
|
|
11
11
|
def column_definitions(table_name)
|
|
12
|
+
tbl = table_name.to_s.downcase
|
|
13
|
+
json_cols = DmRails.json_columns.fetch(tbl, [])
|
|
12
14
|
sql = "SELECT fld, ctype, is_null, key_kind, def_val, extra_str FROM #{DmRails.view_name} " \
|
|
13
|
-
"WHERE tbl = #{quote(
|
|
15
|
+
"WHERE tbl = #{quote(tbl)} ORDER BY col_order"
|
|
14
16
|
execute(sql, "SCHEMA").to_a.map do |row|
|
|
15
17
|
vals = row.is_a?(Hash) ? row.values : row
|
|
16
|
-
|
|
18
|
+
ctype = json_cols.include?(vals[0]) ? "json" : vals[1]
|
|
19
|
+
{ Field: vals[0], Type: ctype, Collation: "", Null: vals[2],
|
|
17
20
|
Key: vals[3].to_s, Default: dm_rails_normalize_default(vals[4]), Extra: vals[5].to_s,
|
|
18
21
|
Privileges: "", Comment: "" }
|
|
19
22
|
end
|
data/lib/dm_rails/version.rb
CHANGED
data/lib/dm_rails.rb
CHANGED
|
@@ -19,6 +19,18 @@ module DmRails
|
|
|
19
19
|
ENV.fetch("DM_RAILS_VIEW", "dm_rails_columns")
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
+
# MySQL 原生 JSON 类型列(迁达梦后落为 TEXT,需向 AR 上报 json 类型以恢复 Hash 自动序列化)。
|
|
23
|
+
# 通过 ENV["DM_RAILS_JSON_COLUMNS"] 配置,格式:"table.col,table2.col2";
|
|
24
|
+
# 也可在应用初始化时直接赋值 DmRails.json_columns = { "table" => ["col"] }
|
|
25
|
+
attr_writer :json_columns
|
|
26
|
+
|
|
27
|
+
def json_columns
|
|
28
|
+
@json_columns ||= ENV.fetch("DM_RAILS_JSON_COLUMNS", "").split(",").each_with_object({}) do |pair, h|
|
|
29
|
+
tbl, col = pair.strip.split(".", 2)
|
|
30
|
+
(h[tbl] ||= []) << col if tbl && col
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
22
34
|
# 达梦侧辅助视图的建视图 SQL(用达梦客户端在业务 schema 下执行,勿经代理执行)
|
|
23
35
|
def view_sql
|
|
24
36
|
File.read(File.expand_path("../sql/dm_rails_columns.sql", __dir__))
|