use List::Util qw( pairs pairkeys );
use Shiar_Sheet::FormRow;
+use SQL::Abstract '1.83';
use JSON;
my $db = eval {
my $val = $colinfo->{-multiple} && @val ? \@val : $val[-1];
if (my $jsoncol = $colinfo->{-json}) {
$row->{$jsoncol}->{$col} = $val; # hash will be encoded
+ ref $_ eq 'HASH' or $_ = decode_json($_) for $replace->{$jsoncol} // ();
}
else {
$row->{$col} = $val;
while (my ($col, $val) = each %{$row}) {
# convert json subcolumns to database string
ref $val eq 'HASH' or next;
- $val = { %{decode_json($_)}, %{$val} } for $replace->{$col} // (); # preserve unknown
+ $val = { %{$_}, %{$val} } for $replace->{$col} // (); # preserve unknown
defined $val->{$_} or delete $val->{$_} for keys %{$val}; # delete emptied
$row->{$col} = encode_json($val);
}
require Shiar_Sheet::ImagePrep;
my $image = Shiar_Sheet::ImagePrep->new($wordcol{source}->{-src}->($row));
my $reimage = eval {
- ($imagecol->{source} // '') ne ($replace->{source} // '') or return;
+ ($imagecol->{source} // '') ne ($replace->{image}->{source} // '') or return;
$image->download($imagecol->{source});
};
!$@ or Alert(["Source image not found", $@]);
- $reimage ||= $row->{image} ~~ $replace->{image}; # different source
- $reimage ||= $row->{cover} ~~ $replace->{cover}; # resize
+ $reimage ||= $row->{convert} ~~ $replace->{image}->{convert}; # different
+ $reimage ||= $row->{cover} ~~ $replace->{image}->{cover}; # resize
$reimage++ if $fields{rethumb}; # force refresh
if ($reimage) {
eval {