evt-view_data-pg 0.1.0.1 → 0.1.1.1

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: 5b27d94186a93683a4871c644451ce578293d2214b002cd13f5ba9fd0a1ed883
4
- data.tar.gz: 3fb9a847d458bb20cfb36a299a9b97e1f68dec508f9cff30181b94870662a176
3
+ metadata.gz: abf02a0175c8df7c00c21058b526ae1846fa9306a1b65b01bd3e7942472f0b71
4
+ data.tar.gz: a1073755eec78072f1e2f532f9a102cf225b929d7f5da636e40c366e3253bf19
5
5
  SHA512:
6
- metadata.gz: de96e8bdbe484b0a3c73da8641373efad8e17f9c98e785b4da3600f9361a413627426fd9a0bf37dc4e8e93f217942cc19bc40a8a29cf3660139cc34900b07bd9
7
- data.tar.gz: 10514d4b802e3f5477e966c917c29ec0436a8fe870f06546cc4e28d328b979916164411ea1df321b9ab7d2cab01e0c4e87e490fa43be254137aaa54310039dc3
6
+ metadata.gz: f0b7ec8c85371cdb78cbcc8c5402f066509d8dfd5d6c36dd0657c064949af39549eb5aa3243573f2175ac2791e0a69eafdd1a42c2f01d2396dfb6b52c3bc3fe7
7
+ data.tar.gz: aa53afe9ebb2a32fe5b837f054941529424d7dbeda2ac981c2121bf22a4d8fa36915062bf9de3817032d81b36d825a93f2dad55f599b107dff4fed6707f8fc57
@@ -8,7 +8,7 @@ module ViewData
8
8
 
9
9
  if drop
10
10
  session.execute("DROP TABLE IF EXISTS #{name}")
11
- session.execute("DROP TYPE some_enum_type")
11
+ session.execute("DROP TYPE IF EXISTS some_enum_type")
12
12
  end
13
13
 
14
14
  begin
@@ -6,7 +6,7 @@ module ViewData
6
6
 
7
7
  include ViewData::Commands
8
8
 
9
- dependency :session, MessageStore::Postgres::Session
9
+ dependency :session, Session
10
10
  dependency :get_primary_key_columns, PrimaryKey::GetColumns
11
11
 
12
12
  def configure
@@ -27,6 +27,10 @@ module ViewData
27
27
 
28
28
  columns = pkey_columns + data_columns
29
29
 
30
+ quoted_columns = columns.map do |column|
31
+ quote_column(column)
32
+ end
33
+
30
34
  values = pkey_values + data_values
31
35
 
32
36
  values_clause = values.count.times.map do |i|
@@ -34,7 +38,7 @@ module ViewData
34
38
  end
35
39
 
36
40
  statement = <<~SQL.chomp
37
- INSERT INTO #{table_name} (#{columns * ', '})
41
+ INSERT INTO #{quote_table_name(table_name)} (#{quoted_columns * ', '})
38
42
  VALUES (#{values_clause * ', '})
39
43
  SQL
40
44
 
@@ -64,22 +68,26 @@ module ViewData
64
68
  data_columns = update.data.keys
65
69
  data_values = update.data.values
66
70
 
67
- set_clause = data_columns.map.with_index do |column_name, index|
71
+ set_clause = data_columns.map.with_index do |column, index|
72
+ quoted_column = quote_column(column)
73
+
68
74
  reference = index + 1
69
75
 
70
- "#{column_name} = $#{reference}"
76
+ "#{quoted_column} = $#{reference}"
71
77
  end
72
78
 
73
- pkey_clause = pkey_columns.map.with_index do |column_name, index|
79
+ pkey_clause = pkey_columns.map.with_index do |column, index|
80
+ quoted_column = quote_column(column)
81
+
74
82
  reference = index + data_columns.count + 1
75
83
 
76
- "#{column_name} = $#{reference}"
84
+ "#{quoted_column} = $#{reference}"
77
85
  end
78
86
 
79
87
  values = data_values + pkey_values
80
88
 
81
89
  statement = <<~SQL.chomp
82
- UPDATE #{table_name}
90
+ UPDATE #{quote_table_name(table_name)}
83
91
  SET #{set_clause * ', '}
84
92
  WHERE #{pkey_clause * ' AND '}
85
93
  SQL
@@ -103,14 +111,16 @@ module ViewData
103
111
  pkey_columns = get_primary_key_columns.(table_name)
104
112
  pkey_values = Array(delete.identifier)
105
113
 
106
- pkey_clause = pkey_columns.map.with_index do |column_name, index|
114
+ pkey_clause = pkey_columns.map.with_index do |column, index|
115
+ quoted_column = quote_column(column)
116
+
107
117
  reference = index + 1
108
118
 
109
- "#{column_name} = $#{reference}"
119
+ "#{quoted_column} = $#{reference}"
110
120
  end
111
121
 
112
122
  statement = <<~SQL.chomp
113
- DELETE FROM #{table_name}
123
+ DELETE FROM #{quote_table_name(table_name)}
114
124
  WHERE #{pkey_clause * ' AND '}
115
125
  SQL
116
126
 
@@ -124,6 +134,14 @@ module ViewData
124
134
  logger.info(tag: :data) { "SQL: #{statement}" }
125
135
  logger.info(tag: :data) { pkey_values.pretty_inspect }
126
136
  end
137
+
138
+ def quote_column(column)
139
+ session.connect.quote_ident(column.to_s)
140
+ end
141
+
142
+ def quote_table_name(name)
143
+ session.connect.quote_ident(name.to_s.split('.'))
144
+ end
127
145
  end
128
146
  end
129
147
  end
@@ -2,8 +2,8 @@ module ViewData
2
2
  module PG
3
3
  module PrimaryKey
4
4
  class GetColumns
5
- Configure.activate(self)
6
- Dependency.activate(self)
5
+ include Configure
6
+ include Dependency
7
7
 
8
8
  configure :get_primary_key_columns
9
9
 
@@ -2,7 +2,7 @@ module ViewData
2
2
  module PG
3
3
  class Settings < MessageStore::Postgres::Settings
4
4
  def self.data_source
5
- 'settings/view_data_pg.json'
5
+ ENV['VIEW_DATA_SETTINGS_PATH'] || 'settings/view_data_pg.json'
6
6
  end
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evt-view_data-pg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.1
4
+ version: 0.1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Eventide Project
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-09 00:00:00.000000000 Z
11
+ date: 2021-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: evt-consumer-postgres
@@ -84,7 +84,7 @@ homepage: https://github.com/eventide-contrib/view-data-pg
84
84
  licenses:
85
85
  - MIT
86
86
  metadata: {}
87
- post_install_message:
87
+ post_install_message:
88
88
  rdoc_options: []
89
89
  require_paths:
90
90
  - lib
@@ -99,9 +99,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  - !ruby/object:Gem::Version
100
100
  version: '0'
101
101
  requirements: []
102
- rubyforge_project:
103
- rubygems_version: 2.7.6
104
- signing_key:
102
+ rubygems_version: 3.1.4
103
+ signing_key:
105
104
  specification_version: 4
106
105
  summary: Create and populate PostgreSQL view databases from event streams
107
106
  test_files: []