Sha256: 8a164362e59877a3d78f2b6b096f474b9a04fca8d36815933aee8444d34ca08f

Contents?: true

Size: 673 Bytes

Versions: 1

Compression:

Stored size: 673 Bytes

Contents

# frozen_string_literal: true

module LunaPark
  module Extensions
    module Repositories
      module Postgres
        module Update
          def save(input, **scope_opts)
            entity = wrap(input)

            entity.updated_at = Time.now if entity.respond_to?(:updated_at)

            row     = to_row(entity)
            new_row = scoped(**scope_opts).where(primary_key => row[primary_key]).returning.update(row).first
            found! new_row, not_found_by: { primary_key => row[primary_key] }

            new_attrs = from_row(new_row)

            entity.set_attributes(new_attrs)
            entity
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
luna_park-0.13.1 lib/luna_park/extensions/repositories/postgres/update.rb