1 package SL::DB::CsvImportProfile;
5 use List::Util qw(first);
7 use SL::DB::MetaSetup::CsvImportProfile;
9 __PACKAGE__->meta->add_relationship(
11 type => 'one to many',
12 class => 'SL::DB::CsvImportProfileSetting',
13 column_map => { id => 'csv_import_profile_id' },
17 __PACKAGE__->meta->initialize;
19 __PACKAGE__->meta->make_manager_class;
21 __PACKAGE__->before_save('_before_save_unset_default_on_others');
28 my ($self, %params) = @_;
30 while (my ($key, $value) = each %params) {
31 my $setting = $self->_get_setting($key);
34 $setting = SL::DB::CsvImportProfileSetting->new(key => $key);
35 $self->add_settings($setting);
38 $setting->value($value);
45 my ($self, $key, $default) = @_;
47 my $setting = $self->_get_setting($key);
48 return $setting ? $setting->value : $default;
55 sub _before_save_unset_default_on_others {
58 if ($self->is_default) {
59 SL::DB::Manager::CsvImportProfile->update_all(set => { is_default => 0 },
60 where => [ type => $self->type,
61 '!id' => $self->id ]);
72 my ($self, $key) = @_;
73 return first { $_->key eq $key } @{ $self->settings };