arxutils_sqlite3 0.1.39 → 0.1.44

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5ae5396c68947c9e83219e1e2be919fcfa7ec8d175248d4f8dc9ac8f1b0fb230
4
- data.tar.gz: 38313d730e9842c68739cba8859af4f5529ca326b65b53df4bf83a77b408d325
3
+ metadata.gz: 3b5f6ede0a6841ea546179192fe18757e9f35669baae096b5c7f0ed9ec79c687
4
+ data.tar.gz: 592da7e2edf26c4e4a41e7d9d1ed74ebf67ffdb7dddc6e2a2732f3643a545570
5
5
  SHA512:
6
- metadata.gz: e489f145e1afa71f41aac39c75cf5602a1b6ec2dd22513f48e73c614a3655feb33154da12912eca8592d7b8a3b0a06f787d9f5e9406aed05eb82d333822cc527
7
- data.tar.gz: c9e0b7a85fba185f6a15176adacbd2fccfa0dddbc24b038e323a8e9b6da1c4b5688e9c460b7c14d54ed9092f4c2173f7b342f7f922ca811773c40418b6be96af
6
+ metadata.gz: 3ade5c9990a6c5553a71b62adda473541415bdba26b1c6c7162d2d588e66750d9ebe80367c8efa7bbccff064aa4410a18138fc254a571f14ea27ca2e07b03096
7
+ data.tar.gz: aedfc8af290c382f5cd2eb4c67dde8b94ef533de95ee5607236a480c0cf0443a1f5a249258efaefdc35193f681f44ab6ce9502232ba388967c85a0eb6e8bd615
data/Rakefile CHANGED
@@ -18,22 +18,22 @@ task cmi: %w[makeconfig migrate integrate]
18
18
  # コマンドラインで指定したクラス名を含むオプション指定用ハッシュの定義を含むRubyスクリ
19
19
  # プトファイルの生成
20
20
  task :setup do
21
- sh "bundle exec ruby exe/arxutils_sqlite3 --cmd=s --klass=Enop"
21
+ sh "bundle exec arxutils_sqlite3 --cmd=s --klass=Enop"
22
22
  end
23
23
  # DB構成情報の生成
24
24
  task :makeconfig do
25
- sh "bundle exec ruby exe/arxutils_sqlite3 --cmd=c"
25
+ sh "bundle exec arxutils_sqlite3 --cmd=c"
26
26
  end
27
27
  # マイグレート用スクリプトファイルの生成とマイグレートの実行
28
28
  task :migrate do
29
- sh "bundle exec ruby exe/arxutils_sqlite3 --cmd=m --yaml=config/db_scheme.yml"
29
+ sh "bundle exec arxutils_sqlite3 --cmd=m --yaml=config/db_scheme.yml"
30
30
  end
31
31
  task :integrate do
32
- sh "bundle exec ruby exe/arxutils_sqlite3 --cmd=i"
32
+ sh "bundle exec arxutils_sqlite3 --cmd=i"
33
33
  end
34
34
 
35
35
  task :delete do
36
- sh "bundle exec ruby exe/arxutils_sqlite3 --cmd=d"
36
+ sh "bundle exec arxutils_sqlite3 --cmd=d"
37
37
  end
38
38
 
39
39
  #=end
@@ -31,22 +31,25 @@ Gem::Specification.new do |spec|
31
31
 
32
32
  spec.bindir = "exe"
33
33
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
34
+ #p spec.executables
34
35
  spec.require_paths = ["lib"]
35
- #p "====-"
36
- #p "spec.executables=#{spec.executables}"
37
- #p "====----"
38
36
  spec.add_runtime_dependency "activesupport"
39
37
  # spec.add_runtime_dependency "erb"
40
38
  # spec.add_runtime_dependency "activerecord", "~> 4.2"
41
39
  spec.add_runtime_dependency "activerecord", "~> 6.1"
42
40
  spec.add_runtime_dependency "sqlite3"
43
- # spec.add_runtime_dependency "mysql2" , "~> 0.4.1"
44
- #spec.add_runtime_dependency "encx"
45
-
41
+ spec.add_runtime_dependency "ykutils"
42
+ spec.add_runtime_dependency "ykxutils"
43
+ spec.add_runtime_dependency "simpleoptparse"
46
44
  # spec.add_development_dependency "bundler", "~> 2.2.10"
47
- #spec.add_development_dependency "bundler"
45
+ spec.add_development_dependency "bundler"
46
+ spec.add_development_dependency "rake"
48
47
  #spec.add_development_dependency "rake", ">= 12.3.3"
49
- #spec.add_development_dependency "rspec"
48
+ spec.add_development_dependency "rspec"
49
+ spec.add_development_dependency "rubocop"
50
+ spec.add_development_dependency "rubocop-rake"
51
+ spec.add_development_dependency "rubocop-rspec"
52
+ spec.add_development_dependency "yard"
50
53
  # Uncomment to register a new dependency of your gem
51
54
  # spec.add_dependency "example-gem", "~> 1.0"
52
55
 
data/exe/arxutils_sqlite3 CHANGED
@@ -31,25 +31,6 @@ if File.exist?(Arxutils_Sqlite3::DEST_DBSETUP_FILE)
31
31
  end
32
32
  end
33
33
 
34
-
35
- def prepare_for_migrate(env, db_scheme_ary, opts)
36
- log_fname = Arxutils_Sqlite3::Dbutil::Dbconnect.make_log_file_name(
37
- opts["dbconfig"], Arxutils_Sqlite3::Dbutil::DATABASELOG)
38
- dbconnect = Arxutils_Sqlite3::Dbutil::Dbconnect.new(
39
- Arxutils_Sqlite3::Dbutil::DB_DIR,
40
- Arxutils_Sqlite3::Dbutil::MIGRATE_DIR,
41
- Arxutils_Sqlite3::Dbutil::CONFIG_DIR,
42
- opts["dbconfig"],
43
- env,
44
- log_fname,
45
- opts
46
- )
47
- if opts["cmd"] != "i"
48
- Arxutils_Sqlite3::Migrate.migrate(dbconnect, db_scheme_ary, opts["migrate_cmd"], opts[:relation], opts)
49
- end
50
- dbconnect
51
- end
52
-
53
34
  banner = "Usage: bundle exec ruby exe/makemigrate --cmd=(s|c|m|i|d) -y yaml_file --klass=class"
54
35
 
55
36
  opts = @opts ? @opts : {}
@@ -67,7 +48,7 @@ env ||= "production"
67
48
 
68
49
  case opts["cmd"]
69
50
  when "s"
70
- FileUtils.cp(Arxutils_Sqlite3::DB_SCHEME_FILE, Arxutils_Sqlite3::CONFIG_DIR )
51
+ FileUtils.cp(Arxutils_Sqlite3::DB_SCHEME_FILE, Arxutils_Sqlite3::Dbutil::CONFIG_DIR )
71
52
  if opts["klass"].nil? || opts["klass"].strip == ""
72
53
  puts banner
73
54
  exit 10
@@ -83,11 +64,15 @@ when "s"
83
64
  db_scheme_ary = nil
84
65
 
85
66
  when "c"
86
- opts["migrate_cmd"] = "makeconfig"
87
- #opts["remigrate"] = false
88
67
  db_scheme_ary = nil
68
+ db_dir = Arxutils_Sqlite3::Dbutil::DB_DIR
69
+ config_dir = Arxutils_Sqlite3::Dbutil::CONFIG_DIR
70
+ # DB構成ファイル名
71
+ dbconfig_path = Arxutils_Sqlite3::Util.make_dbconfig_path(config_dir, opts["dbconfig"])
72
+
73
+ mig = Arxutils_Sqlite3::Util.prepare_for_migrate(env, db_scheme_ary, db_dir, dbconfig_path, opts)
74
+ mig.make_dbconfig(opts)
89
75
 
90
- prepare_for_migrate(env, db_scheme_ary, opts)
91
76
  when "m"
92
77
  if opts["yaml"].nil? || opts["yaml"].strip == ""
93
78
  puts banner
@@ -98,9 +83,6 @@ when "m"
98
83
  db_scheme_ary = YAML.load_file( opts["yaml"] )
99
84
 
100
85
  scope = Object.new
101
- # p "==="
102
- # p opts
103
- # p "=== END"
104
86
 
105
87
  hash0 = {module_name: opts[:relation][:module].join("::")}
106
88
  hash = db_scheme_ary[0].merge( hash0 )
@@ -109,26 +91,50 @@ when "m"
109
91
  File.open(Arxutils_Sqlite3::DEST_DBSETUP_FILE, "w"){|file|
110
92
  file.write(result_content)
111
93
  }
112
- # FileUtils.cp(Arxutils_Sqlite3::DBSETUP_FILE, Arxutils_Sqlite3::CONFIG_DIR )
113
-
114
- # p "cmd=m"
115
- dbconnect = prepare_for_migrate(env, db_scheme_ary, opts)
116
- dbconnect.connect
117
- #db_migrate_dir = File.join(Dbutil::DB_DIR, Dbutil::MIGRATE_DIR)
118
- ActiveRecord::MigrationContext.new(dbconnect.migrate_dir, ActiveRecord::SchemaMigration).up
94
+ db_dir = Arxutils_Sqlite3::Dbutil::DB_DIR
95
+
96
+ config_dir = Arxutils_Sqlite3::Dbutil::CONFIG_DIR
97
+ # DB構成ファイル名
98
+ dbconfig_path = Arxutils_Sqlite3::Util.make_dbconfig_path(config_dir, opts["dbconfig"])
99
+ # DBログファイルへのパス
100
+ log_path = Arxutils_Sqlite3::Util.make_log_path(db_dir, opts["dbconfig"])
101
+ mig = Arxutils_Sqlite3::Util.prepare_for_migrate(env, db_scheme_ary, db_dir, dbconfig_path, opts)
102
+ mig.process
103
+ dbconnect = Arxutils_Sqlite3::Dbutil::Dbconnect.new(
104
+ dbconfig_path,
105
+ env,
106
+ log_path
107
+ )
108
+ connect_time = dbconnect.connect
109
+ #p "connect_time=#{connect_time}"
110
+ ActiveRecord::MigrationContext.new(mig.migrate_dir, ActiveRecord::SchemaMigration).up
119
111
 
120
112
  when "i"
121
113
  #db_scheme_ary = YAML.load_file( opts["yaml"] )
122
114
  db_scheme_ary = nil
123
- dbconnect = prepare_for_migrate(env, db_scheme_ary, opts)
115
+ db_dir = Arxutils_Sqlite3::Dbutil::DB_DIR
116
+
117
+ config_dir = Arxutils_Sqlite3::Dbutil::CONFIG_DIR
118
+ # DB構成ファイルへのパス
119
+ dbconfig_dest_path = Arxutils_Sqlite3::Util.make_dbconfig_path(config_dir, opts["dbconfig"])
120
+ # DBログファイルへのパス
121
+ log_path = Arxutils_Sqlite3::Util.make_log_path(db_dir, opts["dbconfig"])
122
+ dbconnect = Arxutils_Sqlite3::Dbutil::Dbconnect.new(
123
+ dbconfig_dest_path,
124
+ env,
125
+ log_path
126
+ )
124
127
  connect_time = dbconnect.connect
125
128
 
126
129
  Dbsetup.new(connect_time)
127
130
 
128
131
  when "d"
129
- opts["migrate_cmd"] = "delete"
130
132
  db_scheme_ary = nil
131
- dbconnect = prepare_for_migrate(env, db_scheme_ary, opts)
133
+ mig = Arxutils_Sqlite3::Util.repare_for_migrate(env, db_scheme_ary, opts)
134
+ mig.delete_migrate_config_and_db
135
+
132
136
  else
133
137
  puts "Invalid command(#{opts["cmd"]}) specified!!"
134
138
  end
139
+ #
140
+
@@ -32,60 +32,33 @@ module Arxutils_Sqlite3
32
32
  module Dbutil
33
33
  # DB操作用ユーティリティクラス
34
34
  class Dbconnect
35
- # 生成するDB構成情報ファイルパス
36
- attr_accessor :dbconfig_dest_path
37
- # 参照用DB構成情報ファイル名
38
- attr_accessor :dbconfig_src_fname
39
- # migrate用スクリプトの出力先ディレクトリ名
40
- attr_accessor :migrate_dir, :dest_config_dir, :db_dir
41
-
42
35
  def self.make_log_file_name(dbconfig, log_file_base_name)
43
36
  format("%s-%s", dbconfig.to_s, log_file_base_name)
44
37
  end
45
38
 
46
39
  # DB接続までの初期化に必要なディレクトリの確認、作成
47
- def initialize(db_dir, migrate_base_dir, src_config_dir, dbconfig, env, log_fname, opts)
40
+ def initialize(dbconfig_dest_path, env, log_path)
48
41
  # 接続開始時刻
49
42
  @connect_time = nil
50
43
  # DB格納ディレクトリ名
51
- @db_dir = db_dir
52
- # DB構成ファイルのテンプレート格納ディレクトリ
53
- @src_config_dir = src_config_dir
54
- # DB構成ファイルの出力先ディレクトリ
55
- @dest_config_dir = CONFIG_DIR
56
- # DB構成ファイル名
57
- @dbconfig_dest_fname = "#{dbconfig}.yml"
58
- # DB構成ファイル用テンプレートファイル名
59
- @dbconfig_src_fname = "#{dbconfig}.tmpl"
60
- # DB構成ファイルへのパス
61
- @dbconfig_dest_path = File.join(@dest_config_dir, @dbconfig_dest_fname)
62
- # DB構成ファイル用テンプレートファイルへのパス
63
- @dbconfig_src_path = File.join(@src_config_dir, @dbconfig_src_fname)
64
- # 環境の指定
44
+ @dbconfig_dest_path = dbconfig_dest_path
65
45
  @env = env
66
- # DB用ログファイル名
67
- @log_fname = log_fname
68
-
69
- if @db_dir && @log_fname
70
- # DB用ログファイルへのパス
71
- @log_path = File.join(@db_dir, @log_fname)
72
- # migrate用スクリプト格納ディレクトリへのパス
73
- @migrate_dir = File.join(@db_dir, migrate_base_dir)
74
- end
75
- FileUtils.mkdir_p(@db_dir) if @db_dir
76
- FileUtils.mkdir_p(@migrate_dir) if @migrate_dir
77
- FileUtils.mkdir_p(@dest_config_dir)
46
+ @log_path = log_path
78
47
  end
79
48
 
80
49
  # DB接続、DB用ログファイルの設定
81
50
  def connect
82
51
  unless @connect_time
83
52
  begin
53
+ #p "@dbconfig_dest_path=#{@dbconfig_dest_path}"
84
54
  dbconfig = Ykxutils.yaml_load_file_compati(@dbconfig_dest_path)
55
+ #p "dbconfig=#{dbconfig}"
56
+ #p "@env=#{@env}"
85
57
  ActiveRecord::Base.establish_connection(dbconfig[@env])
86
58
  ActiveRecord::Base.logger = Logger.new(@log_path)
87
59
  @connect_time = DateTime.now.new_offset
88
60
  rescue => ex
61
+ p ex.message
89
62
  end
90
63
  end
91
64
  @connect_time
@@ -1,5 +1,4 @@
1
1
  require_relative "dbutil/dbconnect"
2
- #require_relative "dbutil/dbmgr"
3
2
 
4
3
  module Arxutils_Sqlite3
5
4
  # DB操作用ユーティリティクラス
@@ -16,7 +15,5 @@ module Arxutils_Sqlite3
16
15
  CONFIG_DIR = "config".freeze
17
16
  # データベース用ログファイル名
18
17
  DATABASELOG = "database.log".freeze
19
-
20
- # DB接続までの初期化を行う
21
18
  end
22
19
  end
@@ -8,218 +8,196 @@ require "pp"
8
8
 
9
9
  # ActiveRecord用ユーティリティモジュール
10
10
  module Arxutils_Sqlite3
11
- ##
12
- # migrateに必要なファイルをテンプレートから作成し、migarteを実行する
13
- class Migrate
11
+ ##
12
+ # migrateに必要なファイルをテンプレートから作成し、migarteを実行する
13
+ class Migrate
14
+ attr_reader :migrate_dir
14
15
  # migrate用スクリプトファイル名の先頭の番号の間隔
15
16
  FILENAME_COUNTER_STEP = 10
16
-
17
- # migrateに必要なファイルをテンプレートから作成し、migarteを実行する
18
- def self.migrate(dbconnect, db_scheme_ary, migrate_cmd, relation, opts)
19
- mig = Migratex.new(dbconnect, db_scheme_ary, relation, opts)
20
- # DB構成情報の生成
21
- # dbconfigのテンプレートは内容が固定である。
22
- if migrate_cmd == "makeconfig"
23
- mig.make_dbconfig(opts)
24
- return
25
- end
26
- # remigrateが指定されれば、migrate用スクリプトとDB構成ファイルとDBファイルを削除する
27
- if migrate_cmd == "delete"
28
- mig.delete_migrate_config_and_db
29
- return
30
- end
31
- # マイグレーション用スクリプトの生成、relationのクラス定義ファイルの生成、migrate実行
32
- mig.process
17
+ # DB接続までの初期化を行うDbinitクラスのインスタンス
18
+ #attr_reader :dbinit
19
+
20
+ # migrate用のスクリプトの生成、migrateの実行を行うmigratexの生成
21
+ def initialize(
22
+ dbconfig_dest_path,
23
+ dbconfig_src_fname,
24
+ migrate_dir,
25
+ db_dir,
26
+ db_scheme_ary,
27
+ relation,
28
+ opts)
29
+ # DB格納ディレクトリ名
30
+ @db_dir = db_dir
31
+ # DB構成ファイルの出力先ディレクトリ
32
+ @dest_config_dir = Arxutils_Sqlite3::Dbutil::CONFIG_DIR
33
+ # 生成するDB構成情報ファイルパス
34
+ @dbconfig_dest_path = dbconfig_dest_path
35
+ # 参照用DB構成情報ファイル名
36
+ @dbconfig_src_fname = dbconfig_src_fname
37
+
38
+ # migrate用スクリプトの出力先ディレクトリ名
39
+ @migrate_dir = migrate_dir
40
+ # テンプレートファイル格納ディレクトリ名
41
+ @src_path = Arxutils_Sqlite3::TEMPLATE_RELATION_DIR
42
+ # 構成ファイル格納ディレクトリ
43
+ @src_config_path = Arxutils_Sqlite3::TEMPLATE_CONFIG_DIR
44
+ # データベーススキーマ定義配列
45
+ @db_scheme_ary = db_scheme_ary
46
+ # リレーション指定
47
+ @relation = relation
48
+ # オプション指定
49
+ @opts = opts
50
+
51
+ FileUtils.mkdir_p(@db_dir) if @db_dir
52
+ FileUtils.mkdir_p(@migrate_dir) if @migrate_dir
53
+ FileUtils.mkdir_p(@dest_config_dir)
33
54
  end
34
55
 
35
- # migrationのスクリプトをファイル出力する
36
- def output_all_script(mig, db_scheme_ary)
37
- # スキーマ設定配列から、migrate用のスクリプトを作成する
38
- db_scheme_ary.map { |x| mig.make_script_group(x) }.flatten(1).each_with_index do |data, index|
39
- idy = (index + 1) * FILENAME_COUNTER_STEP
40
- mig.output_script(idy, *data)
56
+ # マイグレート用スクリプト、DB構成情報ファイル、DBファイルの削除
57
+ def delete_migrate_config_and_db
58
+ FileUtils.rm(Dir.glob(File.join(@migrate_dir, "*"))) if @migrate_dir
59
+ FileUtils.rm(Dir.glob(File.join(@dest_config_dir, "*")))
60
+ Dir.glob(File.join(@db_dir, "*")).each do |x|
61
+ # puts x
62
+ FileUtils.rm(x) if File.file?(x)
41
63
  end
42
64
  end
43
65
 
44
- # migrate用のスクリプトの内容をテンプレートから作成し、ファイルに出力し、migrateを実行する
45
- class Migratex
46
- # DB接続までの初期化を行うDbinitクラスのインスタンス
47
- #attr_reader :dbinit
48
-
49
- # migrate用のスクリプトの生成、migrateの実行を行うmigratexの生成
50
- def initialize(dbconnect, db_scheme_ary, relation, opts)
51
- # DB接続までの初期化を行うDbinitクラスのインスタンス
52
- @dbconnect = dbconnect
53
- # 生成するDB構成情報ファイルパス
54
- @dbconfig_dest_path = @dbconnect.dbconfig_dest_path
55
- # 参照用DB構成情報ファイル名
56
- @dbconfig_src_fname = @dbconnect.dbconfig_src_fname
57
-
58
- # migrate用スクリプトの出力先ディレクトリ名
59
- @migrate_dir = @dbconnect.migrate_dir
60
- # テンプレートファイル格納ディレクトリ名
61
- @src_path = Arxutils_Sqlite3::TEMPLATE_RELATION_DIR
62
- # 構成ファイル格納ディレクトリ
63
- @src_config_path = Arxutils_Sqlite3::TEMPLATE_CONFIG_DIR
64
- # データベーススキーマ定義配列
65
- @db_scheme_ary = db_scheme_ary
66
- # リレーション指定
67
- @relation = relation
68
- # オプション指定
69
- @opts = opts
70
- end
66
+ # マイグレーション用スクリプトの生成、relationのクラス定義ファイルの生成、migrate実行
67
+ def process
68
+ # migrationのスクリプトをファイル出力する
69
+ output_all_script
71
70
 
72
- # マイグレート用スクリプト、DB構成情報ファイル、DBファイルの削除
73
- def delete_migrate_config_and_db
74
- migrate_dir = @dbconnect.migrate_dir
75
- dest_config_dir = @dbconnect.dest_config_dir
76
- db_dir = @dbconnect.db_dir
77
-
78
- FileUtils.rm(Dir.glob(File.join(migrate_dir, "*"))) if migrate_dir
79
- FileUtils.rm(Dir.glob(File.join(dest_config_dir, "*")))
80
- Dir.glob(File.join(db_dir, "*")).each do |x|
81
- # puts x
82
- FileUtils.rm(x) if File.file?(x)
83
- end
71
+ # relationを表すクラス定義のファイルの内容を生成
72
+ content_array = make_content_array
73
+ # p "content_array=#{content_array}"
74
+ # 複数形のクラス名を集める
75
+ count_class_plurals = content_array.reject do |x|
76
+ x[:need_count_class_plural].nil?
84
77
  end
85
-
86
- # マイグレーション用スクリプトの生成、relationのクラス定義ファイルの生成、migrate実行
87
- def process
88
- # migrationのスクリプトをファイル出力する
89
- output_all_script
90
-
91
- # relationを表すクラス定義のファイルの内容を生成
92
- content_array = make_content_array
93
- # p "content_array=#{content_array}"
94
- # 複数形のクラス名を集める
95
- count_class_plurals = content_array.reject do |x|
96
- x[:need_count_class_plural].nil?
97
- end
98
- need_count_class_plural = count_class_plurals.map { |x| x[:need_count_class_plural] }
99
- # relationのmigrateが必要であれば、それをテンプレートファイルから作成して、スクリプトの内容として追加する
100
- if content_array.find { |x| !x.nil? }
101
- # p "####### 1"
102
- data_count = {
103
- count_classname: "Count",
104
- need_count_class_plural: need_count_class_plural
105
- }
106
- # p "data_count=#{data_count}"
107
- ary = content_array.collect { |x| x[:content] }.flatten
108
- count_content = convert_count_class_relation(data_count, "relation_count.tmpl")
109
- ary.unshift(count_content)
110
- content_array = ary
111
- end
112
- # relationのスクリプトを作成
113
- output_relation_script(content_array, @relation)
78
+ need_count_class_plural = count_class_plurals.map { |x| x[:need_count_class_plural] }
79
+ # relationmigrateが必要であれば、それをテンプレートファイルから作成して、スクリプトの内容として追加する
80
+ if content_array.find { |x| !x.nil? }
81
+ # p "####### 1"
82
+ data_count = {
83
+ count_classname: "Count",
84
+ need_count_class_plural: need_count_class_plural
85
+ }
86
+ # p "data_count=#{data_count}"
87
+ ary = content_array.collect { |x| x[:content] }.flatten
88
+ count_content = convert_count_class_relation(data_count, "relation_count.tmpl")
89
+ ary.unshift(count_content)
90
+ content_array = ary
114
91
  end
92
+ # relationのスクリプトを作成
93
+ output_relation_script(content_array, @relation)
94
+ end
115
95
 
116
- # migrationのスクリプトをファイル出力する
117
- def output_all_script
118
- # スキーマ設定配列から、migrate用のスクリプトを作成する
119
- @db_scheme_ary.map { |x| make_script_group(x) }.flatten(1).each_with_index do |data, index|
120
- idy = (index + 1) * FILENAME_COUNTER_STEP
121
- output_script(idy, *data)
122
- end
96
+ # migrationのスクリプトをファイル出力する
97
+ def output_all_script
98
+ # スキーマ設定配列から、migrate用のスクリプトを作成する
99
+ @db_scheme_ary.map { |x| make_script_group(x) }.flatten(1).each_with_index do |data, index|
100
+ idy = (index + 1) * FILENAME_COUNTER_STEP
101
+ output_script(idy, *data)
123
102
  end
103
+ end
124
104
 
125
- # relationを表すクラス定義のファイルの内容を生成
126
- def make_content_array
127
- # スキーマ設定配列から、relationのmigrate用のスクリプトの内容(ハッシュ形式)の配列を作成する
128
- relations = @db_scheme_ary.map do |x|
129
- make_relation(x, "count")
130
- end
131
- relations.select { |x| x.size.positive? }
105
+ # relationを表すクラス定義のファイルの内容を生成
106
+ def make_content_array
107
+ # スキーマ設定配列から、relationのmigrate用のスクリプトの内容(ハッシュ形式)の配列を作成する
108
+ relations = @db_scheme_ary.map do |x|
109
+ make_relation(x, "count")
132
110
  end
111
+ relations.select { |x| x.size.positive? }
112
+ end
133
113
 
134
- # Countクラス用のrelationのスクリプトの内容に変換
135
- def convert_count_class_relation(data, src_fname)
136
- convert(data, @src_path, src_fname)
137
- end
114
+ # Countクラス用のrelationのスクリプトの内容に変換
115
+ def convert_count_class_relation(data, src_fname)
116
+ convert(data, @src_path, src_fname)
117
+ end
138
118
 
139
- # テンプレートファイルからスクリプトの内容に変換
140
- def convert(data, src_dir, src_fname)
141
- arx = Arx.new(data, File.join(src_dir, src_fname))
142
- # 指定テンプレートファイルからスクリプトの内容に作成
143
- arx.create
144
- end
119
+ # テンプレートファイルからスクリプトの内容に変換
120
+ def convert(data, src_dir, src_fname)
121
+ arx = Arx.new(data, File.join(src_dir, src_fname))
122
+ # 指定テンプレートファイルからスクリプトの内容に作成
123
+ arx.create
124
+ end
145
125
 
146
- # データベース構成ファイルをテンプレートから生成する
147
- def make_dbconfig(data)
148
- content = convert(data, @src_config_path, @dbconfig_src_fname)
149
- File.open(
150
- @dbconfig_dest_path, "w:utf-8") do |f|
151
- f.puts(content)
152
- end
126
+ # データベース構成ファイルをテンプレートから生成する
127
+ def make_dbconfig(data)
128
+ content = convert(data, @src_config_path, @dbconfig_src_fname)
129
+ File.open(
130
+ @dbconfig_dest_path, "w:utf-8") do |f|
131
+ f.puts(content)
153
132
  end
133
+ end
154
134
 
155
- # 英子文字で表現したクラス名が、countを表していなければ、relationを
156
- # 英子文字で表現したクラス名が、countを表していれが、空のハッシュを返す
157
- # スキーマでbase, noitem以外のフィールドが指定されていれば、そのフィールドに対するrelationの設定の内容を返す
158
- def make_relation(data, count_classname_downcase)
159
- if data[:classname_downcase] == count_classname_downcase
160
- {}
161
- else
162
- # 指定フィールドのフィールド名に対応したテンプレートファイルを用いて、relation設定を作成
163
- data[:flist].each_with_object({ content: [], need_count_class: nil }) do |field_name, s|
164
- case field_name
165
- when "base", "noitem"
166
- name_base = "relation"
167
- # data[:relation]がnilに設定されていたら改めて空の配列を設定
168
- data[:relation] = [] unless data[:relation]
169
- else
170
- data[:count_classname_downcase] = count_classname_downcase
171
- name_base = "relation_#{field_name}"
172
- s[:need_count_class_plural] ||= data[:plural]
173
- end
174
- # テンプレートファイルからスクリプトの内容を作成
175
- content = convert(data, @src_path, "#{name_base}.tmpl")
176
- s[:content] << content
135
+ # 英子文字で表現したクラス名が、countを表していなければ、relationを
136
+ # 英子文字で表現したクラス名が、countを表していれが、空のハッシュを返す
137
+ # スキーマでbase, noitem以外のフィールドが指定されていれば、そのフィールドに対するrelationの設定の内容を返す
138
+ def make_relation(data, count_classname_downcase)
139
+ if data[:classname_downcase] == count_classname_downcase
140
+ {}
141
+ else
142
+ # 指定フィールドのフィールド名に対応したテンプレートファイルを用いて、relation設定を作成
143
+ data[:flist].each_with_object({ content: [], need_count_class: nil }) do |field_name, s|
144
+ case field_name
145
+ when "base", "noitem"
146
+ name_base = "relation"
147
+ # data[:relation]がnilに設定されていたら改めて空の配列を設定
148
+ data[:relation] = [] unless data[:relation]
149
+ else
150
+ data[:count_classname_downcase] = count_classname_downcase
151
+ name_base = "relation_#{field_name}"
152
+ s[:need_count_class_plural] ||= data[:plural]
177
153
  end
154
+ # テンプレートファイルからスクリプトの内容を作成
155
+ content = convert(data, @src_path, "#{name_base}.tmpl")
156
+ s[:content] << content
178
157
  end
179
158
  end
159
+ end
180
160
 
181
- # スキーマ設定からmigarte用スクリプトの内容を生成
182
- def make_script_group(data)
183
- #p data
184
- data[:flist].map {
185
- |kind|
186
- [kind,
187
- convert(data, @src_path, "#{kind}.tmpl"),
188
- data[:classname_downcase]
189
- ] }
190
- end
161
+ # スキーマ設定からmigarte用スクリプトの内容を生成
162
+ def make_script_group(data)
163
+ #p data
164
+ data[:flist].map {
165
+ |kind|
166
+ [kind,
167
+ convert(data, @src_path, "#{kind}.tmpl"),
168
+ data[:classname_downcase]
169
+ ] }
170
+ end
191
171
 
192
- # migrationのスクリプトをファイル出力する
193
- def output_script(idy, kind, content, classname_downcase)
194
- additional = case kind
195
- when "base", "noitem"
196
- ""
197
- else
198
- kind
199
- end
200
- fname = File.join(@migrate_dir, format("%03d_create_%s%s.rb", idy, additional, classname_downcase))
201
- File.open(fname, "w", **{ encoding: Encoding::UTF_8 }) do |f|
202
- f.puts(content)
203
- end
172
+ # migrationのスクリプトをファイル出力する
173
+ def output_script(idy, kind, content, classname_downcase)
174
+ additional = case kind
175
+ when "base", "noitem"
176
+ ""
177
+ else
178
+ kind
179
+ end
180
+ fname = File.join(@migrate_dir, format("%03d_create_%s%s.rb", idy, additional, classname_downcase))
181
+ File.open(fname, "w", **{ encoding: Encoding::UTF_8 }) do |f|
182
+ f.puts(content)
204
183
  end
184
+ end
205
185
 
206
- # relationのスクリプトをファイル出力する
207
- def output_relation_script(content_array, opts)
208
- # pp "=="
209
- # pp opts
210
- dir = opts[:dir]
211
- fname = opts[:filename]
212
- fpath = File.join(dir, fname)
213
- File.open(fpath, "w") do |file|
214
- opts[:module].map { |mod| file.puts("module #{mod}") }
215
- content_array.map do |x|
216
- file.puts x
217
- file.puts ""
218
- end
219
- opts[:module].map { |_mod| file.puts("end") }
186
+ # relationのスクリプトをファイル出力する
187
+ def output_relation_script(content_array, opts)
188
+ # pp "=="
189
+ # pp opts
190
+ dir = opts[:dir]
191
+ fname = opts[:filename]
192
+ fpath = File.join(dir, fname)
193
+ File.open(fpath, "w") do |file|
194
+ opts[:module].map { |mod| file.puts("module #{mod}") }
195
+ content_array.map do |x|
196
+ file.puts x
197
+ file.puts ""
220
198
  end
199
+ opts[:module].map { |_mod| file.puts("end") }
221
200
  end
222
-
223
201
  end
224
202
  end
225
203
  end
@@ -0,0 +1,39 @@
1
+ module Arxutils_Sqlite3
2
+ class Util
3
+ # migrateの準備
4
+ def self.prepare_for_migrate(env, db_scheme_ary, db_dir, dbconfig_dest_path, opts)
5
+ migrate_base_dir = Dbutil::MIGRATE_DIR
6
+ # migrate用スクリプト格納ディレクトリへのパス
7
+ migrate_dir = File.join(db_dir, migrate_base_dir)
8
+ # DB構成ファイルの出力先ディレクトリ
9
+ dest_config_dir = Dbutil::CONFIG_DIR
10
+ dbconfig_src_fname = "#{opts["dbconfig"]}.tmpl"
11
+ relation = opts[:relation]
12
+ mig = Migrate.new(
13
+ dbconfig_dest_path,
14
+ dbconfig_src_fname,
15
+ migrate_dir,
16
+ db_dir,
17
+ db_scheme_ary,
18
+ relation,
19
+ opts)
20
+ end
21
+
22
+ # DBログファイルへのパスの作成
23
+ def self.make_log_path(db_dir, dbconfig)
24
+ log_path = ""
25
+ log_fname = Dbutil::Dbconnect.make_log_file_name(
26
+ dbconfig, Dbutil::DATABASELOG)
27
+ if db_dir && log_fname
28
+ # DB用ログファイルへのパス
29
+ log_path = File.join(db_dir, log_fname)
30
+ end
31
+ log_path
32
+ end
33
+
34
+ # DB構成ファイルへのパスの作成
35
+ def self.make_dbconfig_path(config_dir, dbconfig)
36
+ File.join( config_dir, "#{dbconfig}.yml")
37
+ end
38
+ end
39
+ end
@@ -1,4 +1,4 @@
1
1
  module Arxutils_Sqlite3
2
2
  # バージョン番号
3
- VERSION = "0.1.39".freeze
3
+ VERSION = "0.1.44".freeze
4
4
  end
@@ -14,20 +14,21 @@ require_relative "arxutils_sqlite3/transactstate"
14
14
  require_relative "arxutils_sqlite3/hier"
15
15
  require_relative "arxutils_sqlite3/migrate"
16
16
  require_relative "arxutils_sqlite3/dbutil"
17
+ require_relative "arxutils_sqlite3/migrate"
18
+ require_relative "arxutils_sqlite3/util"
17
19
 
18
20
  module Arxutils_Sqlite3
19
21
  TOP_DIR = Pathname(__FILE__).parent
20
22
  TEMPLATE_DIR = TOP_DIR.join("template")
21
23
  TEMPLATE_RELATION_DIR = TEMPLATE_DIR.join("relation")
22
- TEMPLATE_CONFIG_DIR = TEMPLATE_DIR.join("config")
23
- CONFIG_DIR = "config".freeze
24
- DEST_CONFIG_DIR = Pathname.new("config")
24
+ TEMPLATE_CONFIG_DIR = TEMPLATE_DIR.join( Dbutil::CONFIG_DIR )
25
25
  DB_SCHEME_DIR = TEMPLATE_RELATION_DIR.join("db_scheme")
26
26
  DB_SCHEME_FILE = DB_SCHEME_DIR.join("db_scheme.yml")
27
27
  OPTS_FILE_NAME = "opts.rb"
28
28
  OPTS_FILE_NAME_2 = "opts"
29
29
  DBSETUP_FILE_NAME = "dbsetup.rb"
30
30
  DBSETUP_FILE_NAME_2 = "dbsetup"
31
+ DEST_CONFIG_DIR = Pathname.new( Dbutil::CONFIG_DIR )
31
32
  OPTS_FILE = DB_SCHEME_DIR.join(OPTS_FILE_NAME)
32
33
  DBSETUP_FILE = DB_SCHEME_DIR.join(DBSETUP_FILE_NAME)
33
34
  DEST_OPTS_FILE = DEST_CONFIG_DIR.join(OPTS_FILE_NAME)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arxutils_sqlite3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.39
4
+ version: 0.1.44
5
5
  platform: ruby
6
6
  authors:
7
7
  - yasuo kominami
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-09 00:00:00.000000000 Z
11
+ date: 2022-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -52,6 +52,146 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: ykutils
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: ykxutils
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simpleoptparse
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: bundler
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubocop-rake
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rubocop-rspec
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: yard
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
55
195
  description: utility functions for ActiveRecord.
56
196
  email:
57
197
  - ykominami@gmail.com
@@ -79,10 +219,10 @@ files:
79
219
  - lib/arxutils_sqlite3/arx.rb
80
220
  - lib/arxutils_sqlite3/dbutil.rb
81
221
  - lib/arxutils_sqlite3/dbutil/dbconnect.rb
82
- - lib/arxutils_sqlite3/dbutil/dbmgr.rb
83
222
  - lib/arxutils_sqlite3/hier.rb
84
223
  - lib/arxutils_sqlite3/migrate.rb
85
224
  - lib/arxutils_sqlite3/transactstate.rb
225
+ - lib/arxutils_sqlite3/util.rb
86
226
  - lib/arxutils_sqlite3/version.rb
87
227
  - lib/template/config/mysql.tmpl
88
228
  - lib/template/config/sqlite3.tmpl
@@ -1,28 +0,0 @@
1
- require "arxutils_sqlite3/dbutil/dbinit"
2
- require "date"
3
- require "pp"
4
-
5
- module Arxutils_Sqlite3
6
- module Dbutil
7
- # DB接続時に、現在日時も取得したい場合のユーティリティクラス
8
- class DbMgr
9
- # DB接続の状態を示す
10
- @ret = nil
11
- # DB接続、現在日時取得
12
- def self.setup(dbinit)
13
- unless @ret
14
- begin
15
- dbinit.setup
16
- @ret = DateTime.now.new_offset
17
- rescue StandardError => e
18
- pp e.class
19
- pp e.message
20
- pp e.backtrace
21
- end
22
- end
23
-
24
- @ret
25
- end
26
- end
27
- end
28
- end