schema_to_dbml 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -0
- data/Gemfile.lock +8 -6
- data/lib/schema_to_dbml/build_dbml_file.rb +2 -2
- data/lib/schema_to_dbml/dbml_tables_formatter.rb +2 -2
- data/lib/schema_to_dbml/formatters/fields_formatter.rb +12 -2
- data/lib/schema_to_dbml/helpers/constants.rb +2 -1
- data/lib/schema_to_dbml/schema_converter.rb +2 -2
- data/lib/schema_to_dbml/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 01e5c423d835476a25d170272a5d89e762f051951176a21df6b6d62235b0a9c0
|
4
|
+
data.tar.gz: 51a2746ca61db2fae5125b0cf368c4bbca195d7f042b07b5444740e393c0a381
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9aaefc5b170b0cb209df1b8ab12f80ae7293eb9859cc5470d07af3a84cc55a6546917e23c401de24ba17dc630bd08e297b901af838d6fceac5340d69ed4fe277
|
7
|
+
data.tar.gz: bd6ae1da9afff47e053d851e538a3e3e36a266dc822a98ddfd1b2b81989b814100ba0a6dece7e3c47cadb538530315e582d042fe6bc193e1a36a01dba41cad96
|
data/.rubocop.yml
CHANGED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
3.1.2
|
data/Gemfile.lock
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
schema_to_dbml (0.0.
|
4
|
+
schema_to_dbml (0.0.4)
|
5
5
|
activesupport (>= 6.1.0)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
activesupport (7.0.
|
10
|
+
activesupport (7.0.6)
|
11
11
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
12
12
|
i18n (>= 1.6, < 2)
|
13
13
|
minitest (>= 5.1)
|
@@ -17,15 +17,16 @@ GEM
|
|
17
17
|
concurrent-ruby (1.2.2)
|
18
18
|
diff-lcs (1.5.0)
|
19
19
|
docile (1.4.0)
|
20
|
-
i18n (1.
|
20
|
+
i18n (1.14.1)
|
21
21
|
concurrent-ruby (~> 1.0)
|
22
22
|
json (2.6.3)
|
23
|
-
|
23
|
+
language_server-protocol (3.17.0.3)
|
24
|
+
minitest (5.18.1)
|
24
25
|
parallel (1.23.0)
|
25
26
|
parser (3.2.2.3)
|
26
27
|
ast (~> 2.4.1)
|
27
28
|
racc
|
28
|
-
racc (1.7.
|
29
|
+
racc (1.7.1)
|
29
30
|
rainbow (3.1.1)
|
30
31
|
rake (13.0.6)
|
31
32
|
regexp_parser (2.8.1)
|
@@ -43,8 +44,9 @@ GEM
|
|
43
44
|
diff-lcs (>= 1.2.0, < 2.0)
|
44
45
|
rspec-support (~> 3.12.0)
|
45
46
|
rspec-support (3.12.0)
|
46
|
-
rubocop (1.
|
47
|
+
rubocop (1.54.0)
|
47
48
|
json (~> 2.3)
|
49
|
+
language_server-protocol (>= 3.17.0)
|
48
50
|
parallel (~> 1.10)
|
49
51
|
parser (>= 3.2.2.3)
|
50
52
|
rainbow (>= 2.2.2, < 4.0)
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'helpers/constants'
|
4
|
-
require_relative '
|
5
|
-
require_relative '
|
4
|
+
require_relative 'dbml_tables_formatter'
|
5
|
+
require_relative 'dbml_relations_formatter'
|
6
6
|
|
7
7
|
class SchemaConverter
|
8
8
|
include Helpers::Constants
|
@@ -22,11 +22,11 @@ class DbmlTablesFormatter
|
|
22
22
|
def build_columns(parsed_columns)
|
23
23
|
columns = []
|
24
24
|
|
25
|
-
parsed_columns.scan(COLUMNS_REGEXP).each do |type, name, default, null, comment, _precision, array|
|
25
|
+
parsed_columns.scan(COLUMNS_REGEXP).each do |type, name, default, null, comment, _precision, array, limit|
|
26
26
|
formatted_comment = format_comment(comment:)
|
27
27
|
formatted_default = format_default(default:)
|
28
28
|
formatted_null = format_null(null:)
|
29
|
-
formatted_type = format_type(type:, array:)
|
29
|
+
formatted_type = format_type(type:, array:, limit:)
|
30
30
|
|
31
31
|
final_values = [formatted_default, formatted_null, formatted_comment].compact.reject(&:empty?)
|
32
32
|
columns << build_line(name, formatted_type, final_values)
|
@@ -5,6 +5,10 @@ require_relative 'default_field_formatter_helper'
|
|
5
5
|
module Formatters
|
6
6
|
module FieldsFormatter
|
7
7
|
include DefaultFieldFormatterHelper
|
8
|
+
COMMENT_MAPPER = [
|
9
|
+
{ from: "'", to: "\\\\'" },
|
10
|
+
{ from: '\"', to: '"' }
|
11
|
+
].freeze
|
8
12
|
TYPE_MAPPER = {
|
9
13
|
string: 'varchar',
|
10
14
|
integer: 'int',
|
@@ -12,12 +16,13 @@ module Formatters
|
|
12
16
|
datetime: 'timestamp'
|
13
17
|
}.freeze
|
14
18
|
|
15
|
-
def format_type(type:, array:)
|
19
|
+
def format_type(type:, array:, limit:)
|
16
20
|
return '' if type.to_s.empty?
|
17
21
|
|
18
22
|
parsed = TYPE_MAPPER[type.to_sym] || type.to_s
|
19
23
|
|
20
24
|
return "#{parsed}[]" if array == 'true'
|
25
|
+
return "#{parsed}(#{limit})" if limit
|
21
26
|
|
22
27
|
parsed
|
23
28
|
end
|
@@ -41,7 +46,12 @@ module Formatters
|
|
41
46
|
def format_comment(comment:)
|
42
47
|
return '' if comment.to_s.empty?
|
43
48
|
|
44
|
-
|
49
|
+
note = comment.dup
|
50
|
+
COMMENT_MAPPER.each do |mapper|
|
51
|
+
note.gsub!(mapper[:from], mapper[:to])
|
52
|
+
end
|
53
|
+
|
54
|
+
"note: '#{note}'"
|
45
55
|
end
|
46
56
|
end
|
47
57
|
end
|
@@ -18,9 +18,10 @@ module Helpers
|
|
18
18
|
(?:
|
19
19
|
(?:,\s+(?<default>default:[^,\n]+?(?=(?:,\s)|$)))?
|
20
20
|
(?:,\s+(?<null>null:\s+\w+))?
|
21
|
-
(?:,\s+comment:\s+"(?<comment>[^"]
|
21
|
+
(?:,\s+comment:\s+"(?<comment>[^"\\]*(?:\\.[^"\\]*)*)")?
|
22
22
|
(?:,\s+precision:\s+(?<precision>\d+))?
|
23
23
|
(?:,\s+array:\s+(?<array>true|false))?
|
24
|
+
(?:,\s+limit:\s+(?<limit>\d+))?
|
24
25
|
)*
|
25
26
|
/x
|
26
27
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'helpers/constants'
|
4
|
-
require_relative '
|
5
|
-
require_relative '
|
4
|
+
require_relative 'dbml_tables_formatter'
|
5
|
+
require_relative 'dbml_relations_formatter'
|
6
6
|
|
7
7
|
class SchemaConverter
|
8
8
|
include Helpers::Constants
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: schema_to_dbml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ricardo Ribeiro
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-07-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -118,6 +118,7 @@ extra_rdoc_files: []
|
|
118
118
|
files:
|
119
119
|
- ".rspec"
|
120
120
|
- ".rubocop.yml"
|
121
|
+
- ".ruby-version"
|
121
122
|
- CHANGELOG.md
|
122
123
|
- CODE_OF_CONDUCT.md
|
123
124
|
- CONTRIBUTE.md
|