Some more detail: campaign_model->bulk_status
file: code/Winxle::API::CreateCampaign::Model::Campaign 161: 162: sub bulk_status { 163: my ( $self, $user, $uuids ) = @_; 164: 165: my @query_uuid = grep { _looks_like_uuid($_) } @$uuids; 166: return unless @query_uuid; 167: 168: my $placeholder = join(',',map {'?'}, @query_uuid); 169: my $sth = $self->dbh->prepare(<<"EOQUERY"); 170: WITH last_status AS ( 171: SELECT 172: c.uuid, 173: s.status, 174: s.modified, 175: rank() 176: OVER 177: (PARTITION BY s.campaign ORDER BY s.modified DESC) 178: AS rank 179: FROM 180: winxle.campaign_status s, 181: winxle.campaign c, 182: winxle.merchant m, 183: winxle.usr_to_merchant u2m 184: WHERE 185: c.id = s.campaign 186: AND c.merchant = m.id 187: AND m.id = u2m.merchant 188: and u2m.usr = ? 189: AND c.uuid in ($placeholder) 190: ) 191: SELECT uuid,status,modified FROM last_status WHERE rank = 1 LIMIT 50; 192: EOQUERY 193: 194: $sth->execute( $user->id ); 195: my %result; 196: while ( my ( $uuid, $status, $mod ) = $sth->fetchrow_array ) { 197: $result{$uuid} = { 198: status => $status, 199: modified => $mod, 200: }; 201: } 202: return \%result; 203: 204: }
finally, some code!