public function updateProject(Project $project) { $stmt = $this->db->prepare('INSERT OR REPLACE INTO project (slug, name, repository, branch, command, url_pattern) VALUES (:slug, :name, :repository, :branch, :command, :url_pattern)'); $stmt->bindValue(':slug', $project->getSlug(), SQLITE3_TEXT); $stmt->bindValue(':name', $project->getName(), SQLITE3_TEXT); $stmt->bindValue(':repository', $project->getRepository(), SQLITE3_TEXT); $stmt->bindValue(':branch', $project->getBranch(), SQLITE3_TEXT); $stmt->bindValue(':command', $project->getCommand(), SQLITE3_TEXT); $stmt->bindValue(':url_pattern', $project->getUrlPattern(), SQLITE3_TEXT); if (false === $stmt->execute()) { // @codeCoverageIgnoreStart throw new \RuntimeException(sprintf('Unable to save project "%s".', $project->getName())); // @codeCoverageIgnoreEnd } // related commits $stmt = $this->db->prepare('SELECT sha, author, date, build_date, message, status, output FROM `commit` WHERE slug = :slug ORDER BY build_date DESC LIMIT 100'); $stmt->bindValue(':slug', $project->getSlug(), SQLITE3_TEXT); if (false === ($results = $stmt->execute())) { // @codeCoverageIgnoreStart throw new \RuntimeException(sprintf('Unable to get latest commit for project "%s".', $project->getName())); // @codeCoverageIgnoreEnd } $commits = array(); while ($result = $results->fetchArray(\SQLITE3_ASSOC)) { $commits[] = $this->createCommit($project, $result); } $project->setCommits($commits); // project building? $stmt = $this->db->prepare('SELECT COUNT(*) AS count FROM `commit` WHERE slug = :slug AND status = "building"'); $stmt->bindValue(':slug', $project->getSlug(), SQLITE3_TEXT); $building = false; if (false !== ($result = $stmt->execute())) { if (false !== ($result = $result->fetchArray(\SQLITE3_ASSOC))) { if ($result['count'] > 0) { $building = true; } } } $project->setBuilding($building); }