data_conduit 0.1.0 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 72aab70fe54dcf66a97433914a5ded7f8c05887b591f2a211b1dac3798e9f539
4
- data.tar.gz: 1d5f6bead14baca0f3ecfd0cb33a708887aad75684d57e4eae4ea204c5f29169
3
+ metadata.gz: 5598136ef08c1a61032e5f6d0a040ccce9832db5b56764fb51c1a9dcf68fe945
4
+ data.tar.gz: 62ca0bf635cf289c781a5c96c58c7eb9af606cd5d8dcbe079ee640908630383b
5
5
  SHA512:
6
- metadata.gz: 046cbe44b22de14283106fe214b9f42f2b5e5191222f2e1e195a985b824f8410195f81787557c5b6ae68949c24a2806f978d526c7713dd291cc0ab50ccc1334a
7
- data.tar.gz: 2f461e3aa46d3441b4325fc316e0d197d8db7a7b6ffe22d2162f32d440ef405b059e4efbfdc4ee30d88ba2b6929a36c55727673f3c40eeec6ac8f04f9542f8ba
6
+ metadata.gz: ebf24a74009c4c777e0e329d5bbba882f30fadd3bcde16ff831a802f10e1769414bd05b5dff7ef3f726185ff9b6a22f20c272a26baaab207e7a9407791f52db1
7
+ data.tar.gz: 307de136add4935800722238526665e069b8ef6029a38f8016ee38a6df9d16819e32517682e44f6972690dc504b4be9b74f5d874eefdced7f46c52575efb6fb3
@@ -65,12 +65,19 @@ module DataConduit
65
65
  raise ArgumentError, "Conditions must be provided as a Hash for safe query building"
66
66
  end
67
67
 
68
- dataset = dataset.where(conditions)
68
+ converted_conditions = convert_string_keys(conditions)
69
+ dataset = dataset.where(converted_conditions)
69
70
  end
70
71
 
71
72
  dataset.sql
72
73
  end
73
74
 
75
+ def convert_string_keys(conditions_hash)
76
+ conditions_hash.transform_keys do |key|
77
+ key.is_a?(String) || key.is_a?(Symbol) ? Sequel[key.to_sym] : key
78
+ end
79
+ end
80
+
74
81
  def process_response(initial_response)
75
82
  result_data = []
76
83
  result_columns = nil
@@ -87,7 +94,9 @@ module DataConduit
87
94
  end
88
95
 
89
96
  def send_query(sql)
90
- JSON.parse(RestClient.post("#{server}/v1/statement", sql, headers).body)
97
+ base_url = server.end_with?("/") ? server.chop : server
98
+ endpoint = "#{base_url}/v1/statement"
99
+ JSON.parse(RestClient.post(endpoint, sql, headers).body)
91
100
  rescue JSON::ParserError => e
92
101
  raise DataConduit::Error, "Failed to parse JSON response: #{e.message}"
93
102
  rescue RestClient::ExceptionWithResponse => e
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "sequel"
4
+ require "date"
5
+ require "active_support"
6
+ require "active_support/time"
7
+
8
+ module TrinoDateLiteral
9
+ ISO_TS = "%F %T.%6N" # => "YYYY-MM-DD hh:mm:ss.ffffff"
10
+
11
+ def literal_date(value)
12
+ "DATE '#{value.iso8601}'"
13
+ end
14
+
15
+ def literal_datetime(value) = timestamp_literal(value)
16
+ def literal_time(value) = timestamp_literal(value)
17
+
18
+ private
19
+
20
+ def timestamp_literal(value)
21
+ "TIMESTAMP '#{value.strftime(ISO_TS)}'"
22
+ end
23
+ end
24
+
25
+ Sequel::Dataset.prepend(TrinoDateLiteral)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DataConduit
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.2"
5
5
  end
data/lib/data_conduit.rb CHANGED
@@ -4,6 +4,7 @@ require_relative "data_conduit/version"
4
4
  require_relative "data_conduit/data_warehouse_repository"
5
5
  require_relative "data_conduit/repository_factory"
6
6
  require_relative "data_conduit/adapters/trino_repository"
7
+ require_relative "data_conduit/infrastructure/sequel/trino_date_literal"
7
8
 
8
9
  # Register default adapters
9
10
  DataConduit::RepositoryFactory.register(:trino, DataConduit::Adapters::TrinoRepository)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_conduit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vinicius Dittgen
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-19 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rest-client
@@ -135,6 +135,20 @@ dependencies:
135
135
  - - "~>"
136
136
  - !ruby/object:Gem::Version
137
137
  version: '3.18'
138
+ - !ruby/object:Gem::Dependency
139
+ name: activesupport
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '7.0'
145
+ type: :runtime
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '7.0'
138
152
  - !ruby/object:Gem::Dependency
139
153
  name: sequel
140
154
  requirement: !ruby/object:Gem::Requirement
@@ -161,6 +175,7 @@ files:
161
175
  - lib/data_conduit.rb
162
176
  - lib/data_conduit/adapters/trino_repository.rb
163
177
  - lib/data_conduit/data_warehouse_repository.rb
178
+ - lib/data_conduit/infrastructure/sequel/trino_date_literal.rb
164
179
  - lib/data_conduit/repository_factory.rb
165
180
  - lib/data_conduit/version.rb
166
181
  homepage: https://github.com/powerhome/power-tools
@@ -185,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
200
  - !ruby/object:Gem::Version
186
201
  version: '0'
187
202
  requirements: []
188
- rubygems_version: 3.6.2
203
+ rubygems_version: 3.6.7
189
204
  specification_version: 4
190
205
  summary: A Ruby connector for data warehouses
191
206
  test_files: []