evt-view_data-pg 0.1.0.0 → 0.1.1.0

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
- SHA1:
3
- metadata.gz: 3a446a1a6d3124fa58e589403e99c2c2ea670283
4
- data.tar.gz: 26ef15ffe45116c6002f983091c0c2538f4aba9f
2
+ SHA256:
3
+ metadata.gz: 84d64468734921a664c06fca5d76df5e9cde7465177aa1459265db8dfa9c5a4d
4
+ data.tar.gz: d5dc467ffd5c40d7306cb72ea5380814783ffb3bd331af5b1848be3412b4a716
5
5
  SHA512:
6
- metadata.gz: 33d0921b2fcf365b97f321bc94acdb2cb9c5a7e4dd87c5fdddef6922628a74b9891b1833009a1f64b81c658c6c10f3899b3e40405047c1dd5c76ae01406b2c8e
7
- data.tar.gz: aee4c805bb139e93d6ef9a758f1f3eeda1905863a4dc58d401e9c9e1e03f31f9fed07b72f782733bb06632243b65575338ab35dbe46f88d05c9cb0348c788419
6
+ metadata.gz: 9ced2d7e48241acac3a2e1785b354903bac841c0699f09a325c6552d4f7d53b00f02e497a835efa62781b452c7a59a41e83e31ba177cf2e58cfa8d00c7d830f1
7
+ data.tar.gz: 8c4182f58b0968e6217b4b6958ae9658a0e32b5b3f37d1ed299837e43c1dff4d707623938a1096fc1afd9b3b1c99d2867c66954f34fb6bc728e106ba73def6a4
@@ -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,6 +2,9 @@ module ViewData
2
2
  module PG
3
3
  module PrimaryKey
4
4
  class GetColumns
5
+ include Configure
6
+ include Dependency
7
+
5
8
  configure :get_primary_key_columns
6
9
 
7
10
  dependency :session, Session
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.0
4
+ version: 0.1.1.0
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: 2017-08-04 00:00:00.000000000 Z
11
+ date: 2020-11-18 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.6.11
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: []