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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 31605a94e92ed817c32ec8f0e40382a994e4b0d3dbab66e4ea0deeb9559561bb
4
- data.tar.gz: 0adae4275c6fb981fa04c620ff388bf748db5ea74aa39d5fc17eaee71ff0ac31
3
+ metadata.gz: 7c52f71ca3c6d4a5ce20dee6be61831a5378cfd5bfb607c4967cc3a8afb0c6d7
4
+ data.tar.gz: e8b1bebb377f3dc3043a2122b21dbb5e592c0ea4fb9d73707a21afa605c7ddf9
5
5
  SHA512:
6
- metadata.gz: a13c115aaab33f595051b3be0f964900983c8f48c11fd1aedc0d4270d8d95c9f3eba900b21325fe063622087a8462d0603d4cf3e9f6b53000893457a78367a95
7
- data.tar.gz: f20958ce3fbbceed43683e2d4d206f001fa82a5b53f2a4e01d93aea47c2a4d8e3d645f305d21bab0837cc6f8f519787ebfe5e0737b7f93f670811321fa2878f4
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(table_name.to_s.downcase)} ORDER BY col_order"
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
- { Field: vals[0], Type: vals[1], Collation: "", Null: vals[2],
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DmRails
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.1"
5
5
  end
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__))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dameng-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - qinyuanmao