예제 #1
0
파일: scanpulls.php 프로젝트: ELN/metahub
 */
// filterマッチしなかったものを先にupdate
foreach ($cursorlist as $rid => $cursor) {
    if (!isset($alerted_pulls[$rid])) {
        RepositoryDb::updateCursor($rid, $cursor);
    }
}
// アラートがあるものはrepo毎のトランザクションで一括保存
$con = mfwDBConnection::getPDO('default_master');
$repoids = array_keys($alerted_pulls);
foreach ($repoids as $rid) {
    echo "save: {$repos[$rid]->getName()} ... ";
    $con->beginTransaction();
    try {
        foreach ($alerts[$rid] as $alert) {
            $pra = new PullRequestAlert($alert);
            $pra->save($con);
        }
        foreach ($alerted_pulls[$rid] as $p) {
            $pr = new PullRequest(array('repo_id' => $rid, 'number' => $p['number'], 'user' => $p['user']['login'], 'title' => $p['title'], 'pull_created_at' => $p['created_at']));
            $pr->save($con);
        }
        RepositoryDb::updateCursor($rid, $cursorlist[$rid], $con);
        $con->commit();
    } catch (Exception $e) {
        $con->rollback();
        throw $e;
    }
    echo "done.\n";
}
echo "complete.\n";