Class: ClickHouse::SyncCursor
- Inherits:
-
Object
- Object
- ClickHouse::SyncCursor
- Defined in:
- lib/click_house/sync_cursor.rb
Constant Summary collapse
- QUERY =
<<~SQL SELECT argMax(primary_key_value, recorded_at) AS primary_key_value FROM sync_cursors WHERE table_name = {table_name:String} LIMIT 1 SQL
- INSERT_CURSOR_QUERY =
<<~SQL INSERT INTO sync_cursors (primary_key_value, table_name, recorded_at) VALUES ({primary_key_value:UInt64}, {table_name:String}, {recorded_at:DateTime64}) SQL
Class Method Summary collapse
Class Method Details
.cursor_for(identifier) ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/click_house/sync_cursor.rb', line 18 def self.cursor_for(identifier) query = ClickHouse::Client::Query.new( raw_query: QUERY, placeholders: { table_name: identifier.to_s } ) # The query returns the default value (0) when no records are present. ClickHouse::Client.select(query, :main).first['primary_key_value'] end |
.update_cursor_for(identifier, value) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/click_house/sync_cursor.rb', line 28 def self.update_cursor_for(identifier, value) query = ClickHouse::Client::Query.new( raw_query: INSERT_CURSOR_QUERY, placeholders: { primary_key_value: value, table_name: identifier.to_s, recorded_at: Time.current.to_f } ) ClickHouse::Client.execute(query, :main) end |