|
Lines 121-126
Returns:
Link Here
|
| 121 |
sub store { |
121 |
sub store { |
| 122 |
my ($self) = @_; |
122 |
my ($self) = @_; |
| 123 |
|
123 |
|
|
|
124 |
my $columns_info = Koha::Database->new->schema->resultset( $self->_type ) |
| 125 |
->result_source->{_columns}; |
| 126 |
|
| 127 |
# Handle not null and default values for integers and dates |
| 128 |
foreach my $col ( keys %{$columns_info} ) { |
| 129 |
# Integers |
| 130 |
if ( _numeric_column_type( $columns_info->{$col}->{data_type} ) ) { |
| 131 |
# Has been passed but not a number, usually an empty string |
| 132 |
if ( defined $self->$col and not looks_like_number( $self->$col ) ) { |
| 133 |
if ( $columns_info->{$col}->{is_nullable} ) { |
| 134 |
# If nullable, default to null |
| 135 |
$self->$col(undef); |
| 136 |
} else { |
| 137 |
# If cannot be null, get the default value |
| 138 |
# What if cannot be null and does not have a default value? Possible? |
| 139 |
$self->$col($columns_info->{$col}->{default_value}); |
| 140 |
} |
| 141 |
} |
| 142 |
} |
| 143 |
elsif ( _date_or_datetime_column_type( $columns_info->{$col}->{data_type} ) ) { |
| 144 |
# Set to null if an empty string (or == 0 but should not happen) |
| 145 |
$self->$col(undef) unless $self->$col; |
| 146 |
} |
| 147 |
} |
| 148 |
|
| 124 |
try { |
149 |
try { |
| 125 |
return $self->_result()->update_or_insert() ? $self : undef; |
150 |
return $self->_result()->update_or_insert() ? $self : undef; |
| 126 |
} |
151 |
} |
|
Lines 275-280
sub TO_JSON {
Link Here
|
| 275 |
return $unblessed; |
300 |
return $unblessed; |
| 276 |
} |
301 |
} |
| 277 |
|
302 |
|
|
|
303 |
sub _date_or_datetime_column_type { |
| 304 |
my ($column_type) = @_; |
| 305 |
|
| 306 |
my @dt_types = ( |
| 307 |
'timestamp', |
| 308 |
'date', |
| 309 |
'datetime' |
| 310 |
); |
| 311 |
|
| 312 |
return ( grep { $column_type eq $_ } @dt_types) ? 1 : 0; |
| 313 |
} |
| 278 |
sub _datetime_column_type { |
314 |
sub _datetime_column_type { |
| 279 |
my ($column_type) = @_; |
315 |
my ($column_type) = @_; |
| 280 |
|
316 |
|
| 281 |
- |
|
|