annotato 0.2.1 → 0.2.3
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/Gemfile.lock +1 -1
- data/lib/annotato/column_formatter.rb +15 -7
- data/lib/annotato/trigger_formatter.rb +22 -5
- data/lib/annotato/version.rb +1 -1
- data/lib/annotato/wrap_helper.rb +1 -1
- 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: d46bed9c8d25cf14624fc0381d1742eead5efd0777705e8a55044ac797e0625a
|
|
4
|
+
data.tar.gz: af4276aea78359e7feb0dff649b5a185fb6074e81cb287ee5dd724b329c2dbe1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f430a13536edb3f88e2bfcb414c08c7fa38e369cd78b17957940ff7f0366a5b2da4846814e21a65c11b208cff1874850a53180634a142a885e2834b3f6a56fdc
|
|
7
|
+
data.tar.gz: 7a8cca116a125eff5e994905bb2f2947a567a4146fe9f9a48b6116217d009eb3441ac5e3c109e008fb78c6db9fa439c63756cb5893bf642a4fa5c50ce837d0ac
|
data/Gemfile.lock
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "json"
|
|
4
|
+
require_relative "wrap_helper"
|
|
4
5
|
|
|
5
6
|
module Annotato
|
|
6
7
|
class ColumnFormatter
|
|
8
|
+
extend WrapHelper
|
|
9
|
+
|
|
7
10
|
# Main entry: returns an array of comment lines per column, flattened.
|
|
8
11
|
def self.format(model, connection)
|
|
9
12
|
table_name = model.table_name
|
|
@@ -23,11 +26,12 @@ module Annotato
|
|
|
23
26
|
type = col.sql_type
|
|
24
27
|
|
|
25
28
|
# Build the left-hand side and calculate indent.
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
# Strip trailing padding spaces immediately — output must never have trailing whitespace.
|
|
30
|
+
left = ("# %-#{name_width}s :%-#{type_width}s" % [name, type]).rstrip
|
|
31
|
+
# indent_size aligns multiline default content under the opening "default(" token.
|
|
28
32
|
indent_size = left.length + 1
|
|
29
33
|
indent_str = " " * indent_size
|
|
30
|
-
closing_indent_str
|
|
34
|
+
closing_indent_str = " " * (indent_size - 2)
|
|
31
35
|
|
|
32
36
|
# Gather all options, pulling out default_lines if multiline.
|
|
33
37
|
opts = []
|
|
@@ -57,10 +61,14 @@ module Annotato
|
|
|
57
61
|
lines << closing
|
|
58
62
|
lines
|
|
59
63
|
else
|
|
60
|
-
# single-line comment
|
|
61
|
-
|
|
62
|
-
line
|
|
63
|
-
|
|
64
|
+
# single-line comment; wrap options onto continuation line if too long
|
|
65
|
+
opts_str = opts.join(", ")
|
|
66
|
+
line = opts_str.empty? ? left : "#{left} #{opts_str}"
|
|
67
|
+
if line.length > WrapHelper::MAX_LINE && !opts_str.empty?
|
|
68
|
+
[left, "# #{opts_str}"]
|
|
69
|
+
else
|
|
70
|
+
[line]
|
|
71
|
+
end
|
|
64
72
|
end
|
|
65
73
|
end
|
|
66
74
|
end
|
|
@@ -3,11 +3,28 @@
|
|
|
3
3
|
module Annotato
|
|
4
4
|
class TriggerFormatter
|
|
5
5
|
def self.format(conn, table_name)
|
|
6
|
-
conn.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
rows = case conn.adapter_name.downcase
|
|
7
|
+
when "postgresql"
|
|
8
|
+
conn.exec_query(
|
|
9
|
+
"SELECT tgname AS name FROM pg_trigger WHERE tgrelid = $1::regclass AND NOT tgisinternal",
|
|
10
|
+
"SQL", [table_name]
|
|
11
|
+
)
|
|
12
|
+
when "mysql2", "mysql", "trilogy"
|
|
13
|
+
conn.exec_query(
|
|
14
|
+
"SELECT TRIGGER_NAME AS name FROM information_schema.TRIGGERS " \
|
|
15
|
+
"WHERE EVENT_OBJECT_SCHEMA = DATABASE() AND EVENT_OBJECT_TABLE = ?",
|
|
16
|
+
"SQL", [table_name]
|
|
17
|
+
)
|
|
18
|
+
when "sqlite3"
|
|
19
|
+
conn.exec_query(
|
|
20
|
+
"SELECT name FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ?",
|
|
21
|
+
"SQL", [table_name]
|
|
22
|
+
)
|
|
23
|
+
else
|
|
24
|
+
return []
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
rows.map { |r| "# #{r['name']}" }
|
|
11
28
|
end
|
|
12
29
|
end
|
|
13
30
|
end
|
data/lib/annotato/version.rb
CHANGED
data/lib/annotato/wrap_helper.rb
CHANGED