Revision 778

Date:
2019/06/21 13:15:43
Author:
ahitrov
Revision Log:
Temp commit for object store method
Files:

Legend:

 
Added
 
Removed
 
Modified
  • utf8/core/lib/Contenido/Object.pm

     
    491 491 #
    492 492 # Если $id задан то мы считаем, что этот объект в базе есть. Если
    493 493 # не задан, то мы считаем, что этого объекта в базе нет и создаем его.
    494 # Если необходимо взять контроль над INSERT-UPDATE, следует передать
    495 # hashref с параметром mode => 'update|insert'
    494 496 # ----------------------------------------------------------------------------
    495 497 sub store {
    496 498 my $self = shift;
     
    500 502
    501 503 return undef if ($self->keeper->state->readonly());
    502 504
    505 my $params = shift // {};
    506 my $store_mode = lc($params->{method} || '');
    507 $store_mode = '' if $store_mode && !($store_mode eq 'insert' || $store_mode eq 'update');
    508
    503 509 $self->keeper->t_connect() || do { $self->keeper->error(); return undef; };
    504 510 $self->{status} ||= 0; # Значение статуса по умолчанию = 0
    505 511
     
    570 576
    571 577
    572 578 my $values_string = '';
    573 my $mode = 'update';
    574 if ($self->id()) {
    579 my $mode = $store_mode || 'update';
    580 if ($mode eq 'update' && $self->id()) {
    575 581 if (@fields) {
    576 582 $values_string = join(' = ?, ', @fields).' = ?';
    577 583 $values_string .= ', '.join(', ', @default_pairs) if (@default_pairs);
     
    621 627 }
    622 628 $sth->finish();
    623 629
    624 my $id = $self->keeper->TSQL->selectrow_array("SELECT currval('".$self->class_table->db_id_sequence()."')");
    625 $self->id($id);
    626 return $self->t_abort("Документу присвоен неверный идентификатор") if (! defined($self->{id}) || ($self->{id} <= 0));
    630 unless ( $self->id ) {
    631 my $id = $self->keeper->TSQL->selectrow_array("SELECT currval('".$self->class_table->db_id_sequence()."')");
    632 $self->id($id);
    633 return $self->t_abort("Документу присвоен неверный идентификатор") if (! defined($self->{id}) || ($self->{id} <= 0));
    634 }
    627 635
    628 636 if (($self->keeper->store_method() ne 'toast') and $self->class_table->have_extra and !$self->{__light}) {
    629 637 $self->store_extras(mode => $mode) || return $self->t_abort();