Class: Simple::SQL::Inserter
- Inherits:
-
Object
- Object
- Simple::SQL::Inserter
- Defined in:
- lib/simple/sql/insert.rb
Constant Summary collapse
- SQL =
::Simple::SQL
- @@inserters =
{}
Class Method Summary collapse
Instance Method Summary collapse
Constructor Details
#initialize(table_name:, columns:) ⇒ Inserter
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/simple/sql/insert.rb', line 36 def initialize(table_name:, columns:) @columns = columns cols = [] vals = [] cols += columns vals += columns.each_with_index.map { |_, idx| "$#{idx + 1}" } = SQL::Reflection.(table_name) - columns.map(&:to_s) cols += vals += .map { "now()" } @sql = "INSERT INTO #{table_name} (#{cols.join(',')}) VALUES(#{vals.join(',')}) RETURNING id" end |
Class Method Details
.create(table_name:, columns:) ⇒ Object
28 29 30 |
# File 'lib/simple/sql/insert.rb', line 28 def self.create(table_name:, columns:) @@inserters[[table_name, columns]] ||= new(table_name: table_name, columns: columns) end |
Instance Method Details
#insert(records:) ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/simple/sql/insert.rb', line 53 def insert(records:) SQL.transaction do records.map do |record| SQL.ask @sql, *record.values_at(*@columns) end end end |