Module: LunaPark::Extensions::Repositories::Postgres::Create

Defined in:
lib/luna_park/extensions/repositories/postgres/create.rb

Instance Method Summary collapse

Instance Method Details

#create(input, **scope_opts) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/luna_park/extensions/repositories/postgres/create.rb', line 8

def create(input, **scope_opts)
  entity = wrap(input)

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

  row       = to_row(entity)
  new_row   = scoped(**scope_opts).returning.insert(row).first
  new_attrs = from_row(new_row)

  entity.set_attributes(new_attrs)
  entity
end