1 # This module is part of debbugs, and is released
2 # under the terms of the GPL version 2, or any later version. See the
3 # file README and COPYING for more information.
4 # Copyright 2016 by Don Armstrong <don@donarmstrong.com>.
6 package Debbugs::DB::ResultSet::Maintainer;
10 Debbugs::DB::ResultSet::Maintainer - Package maintainer result set operations
25 use base 'DBIx::Class::ResultSet';
27 use Debbugs::DB::Util qw(select_one);
32 my ($self,@maints) = @_;
34 for my $m ($self->result_source->schema->resultset('Maintainer')->
36 {result_class => 'DBIx::Class::ResultClass::HashRefInflator',
37 columns => [qw[id name] ]
39 $maints{$m->{name}} = $m->{id};
41 my @maint_names = grep {not exists $maints{$_}} @maints;
42 my @maint_ids = $self->result_source->schema->
47 $self->result_source->schema->
48 resultset('Maintainer')->get_maintainer_id($name);
52 @maints{@maint_names} = @maint_ids;
56 sub get_maintainer_id {
57 my ($self,$maint) = @_;
60 search({name => $maint},
61 {result_class => 'DBIx::Class::ResultClass::HashRefInflator',
68 $self->result_source->schema->resultset('Correspondent')->
69 get_correspondent_id($maint);
70 return $self->result_source->schema->storage->
72 my ($s,$dbh,$maint,$ci) = @_;
73 return select_one($dbh,<<'SQL',$maint,$ci,$maint);
75 INSERT INTO maintainer (name,correspondent) VALUES (?,?)
76 ON CONFLICT (name) DO NOTHING RETURNING id
80 SELECT id FROM maintainer WHERE name = ?