json2sql 1.0.6 → 1.0.7
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/json2sql/insert_model.rb +22 -10
- data/lib/json2sql/update_model.rb +18 -6
- data/lib/json2sql/version.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: 44981099a9e736eea37fae8938dbc885a7cf366a394ca46e884ff6abf14ab9a4
|
|
4
|
+
data.tar.gz: bb1ebf19a636bf8e28be4d6720afa8e0d90a4f5310625c5b70beaddb7f9276df
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 01f29fa62d0d3a6e3d3f5f1fc3eded2a07db8b6500d3e2f8b72f4e5d37d96360ed719f3d9e01be88516eb8cf42297a39b97fee6ddff62eeaae48a190dfb7dee4
|
|
7
|
+
data.tar.gz: 184b5d2e228ae4786d84d53f7eb26090bdbc2a539dced777bdb9bf5c2d0aeb95e1335922c7dd2530b8eb7a54421c2b3d779f49ffb1b053cf44a53e8f1cad7584
|
|
@@ -8,6 +8,8 @@ module Json2sql
|
|
|
8
8
|
# Values:
|
|
9
9
|
# Integer / Float → inserted as raw numbers
|
|
10
10
|
# String → wrapped in single quotes with SQL escaping
|
|
11
|
+
#
|
|
12
|
+
# Auto-injected when absent: created_at and updated_at → NOW()
|
|
11
13
|
|
|
12
14
|
class InsertModel
|
|
13
15
|
|
|
@@ -20,28 +22,41 @@ module Json2sql
|
|
|
20
22
|
|
|
21
23
|
def build(params)
|
|
22
24
|
|
|
25
|
+
columns = params["columns"]
|
|
26
|
+
|
|
27
|
+
return unless columns.is_a?(Hash)
|
|
28
|
+
|
|
29
|
+
columns = build_timestamps(columns)
|
|
30
|
+
|
|
23
31
|
@sql << "INSERT INTO "
|
|
24
32
|
|
|
25
33
|
@sql << Sanitizer.keyword_wrap(@table)
|
|
26
34
|
|
|
27
35
|
@sql << " ("
|
|
28
36
|
|
|
29
|
-
build_columns(
|
|
37
|
+
build_columns(columns)
|
|
30
38
|
|
|
31
39
|
@sql << ") VALUES ("
|
|
32
40
|
|
|
33
|
-
build_values(
|
|
41
|
+
build_values(columns)
|
|
34
42
|
|
|
35
43
|
@sql << ")"
|
|
36
44
|
end
|
|
37
45
|
|
|
38
46
|
private
|
|
39
47
|
|
|
40
|
-
def
|
|
48
|
+
def build_timestamps(columns)
|
|
41
49
|
|
|
42
|
-
|
|
50
|
+
timestamps = {}
|
|
43
51
|
|
|
44
|
-
|
|
52
|
+
timestamps["created_at"] = :now unless columns.key?("created_at")
|
|
53
|
+
|
|
54
|
+
timestamps["updated_at"] = :now unless columns.key?("updated_at")
|
|
55
|
+
|
|
56
|
+
timestamps.empty? ? columns : columns.merge(timestamps)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def build_columns(columns)
|
|
45
60
|
|
|
46
61
|
separator = false
|
|
47
62
|
|
|
@@ -55,11 +70,7 @@ module Json2sql
|
|
|
55
70
|
end
|
|
56
71
|
end
|
|
57
72
|
|
|
58
|
-
def build_values(
|
|
59
|
-
|
|
60
|
-
columns = params["columns"]
|
|
61
|
-
|
|
62
|
-
return unless columns.is_a?(Hash)
|
|
73
|
+
def build_values(columns)
|
|
63
74
|
|
|
64
75
|
separator = false
|
|
65
76
|
|
|
@@ -73,6 +84,7 @@ module Json2sql
|
|
|
73
84
|
when Float then @sql << value.to_s
|
|
74
85
|
when Integer then @sql << value.to_s
|
|
75
86
|
when String then @sql << Sanitizer.value_wrap(value)
|
|
87
|
+
when :now then @sql << "NOW()"
|
|
76
88
|
end
|
|
77
89
|
end
|
|
78
90
|
end
|
|
@@ -8,6 +8,8 @@ module Json2sql
|
|
|
8
8
|
# "or" => { ... } – WHERE conditions (OR)
|
|
9
9
|
#
|
|
10
10
|
# Value types follow the same rules as InsertModel.
|
|
11
|
+
#
|
|
12
|
+
# Auto-injected when absent: updated_at → NOW()
|
|
11
13
|
|
|
12
14
|
class UpdateModel
|
|
13
15
|
|
|
@@ -22,31 +24,40 @@ module Json2sql
|
|
|
22
24
|
|
|
23
25
|
def build(params)
|
|
24
26
|
|
|
27
|
+
columns = params["columns"]
|
|
28
|
+
|
|
29
|
+
return unless columns.is_a?(Hash)
|
|
30
|
+
|
|
31
|
+
columns = build_timestamp(columns)
|
|
32
|
+
|
|
25
33
|
@sql << "UPDATE "
|
|
26
34
|
|
|
27
35
|
@sql << Sanitizer.keyword_wrap(@table)
|
|
28
36
|
|
|
29
37
|
@sql << " SET "
|
|
30
|
-
|
|
31
|
-
build_columns(
|
|
38
|
+
|
|
39
|
+
build_columns(columns)
|
|
32
40
|
|
|
33
41
|
WhereModel.new(@sql, @table, @relation).build(params)
|
|
34
42
|
end
|
|
35
43
|
|
|
36
44
|
private
|
|
37
45
|
|
|
38
|
-
def
|
|
46
|
+
def build_timestamp(columns)
|
|
39
47
|
|
|
40
|
-
columns
|
|
48
|
+
return columns if columns.key?("updated_at")
|
|
41
49
|
|
|
42
|
-
|
|
50
|
+
columns.merge("updated_at" => :now)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def build_columns(columns)
|
|
43
54
|
|
|
44
55
|
separator = false
|
|
45
56
|
|
|
46
57
|
columns.each do |key, value|
|
|
47
58
|
|
|
48
59
|
@sql << ", " if separator
|
|
49
|
-
|
|
60
|
+
|
|
50
61
|
separator = true
|
|
51
62
|
|
|
52
63
|
column = key.to_s
|
|
@@ -61,6 +72,7 @@ module Json2sql
|
|
|
61
72
|
when Float then @sql << value.to_s
|
|
62
73
|
when Integer then @sql << value.to_s
|
|
63
74
|
when String then @sql << Sanitizer.value_wrap(value)
|
|
75
|
+
when :now then @sql << "NOW()"
|
|
64
76
|
end
|
|
65
77
|
end
|
|
66
78
|
end
|
data/lib/json2sql/version.rb
CHANGED