Store conflicts, provides and replaces in the DB

Package conflicts, provides and replaces are now stored in the new
PackageRelations table. The gendummydata script generates test entries
for these relations.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
This commit is contained in:
Lukas Fleischer 2014-04-26 10:29:17 +02:00
parent 34453d3295
commit 92812050a0
5 changed files with 122 additions and 13 deletions

View file

@ -147,6 +147,21 @@ function pkg_dependency_type_id_from_name($name) {
return $result->fetch(PDO::FETCH_COLUMN, 0);
}
/**
* Get the ID of a relation type given its name
*
* @param string $name The name of the relation type
*
* @return int The ID of the relation type
*/
function pkg_relation_type_id_from_name($name) {
$dbh = DB::connect();
$q = "SELECT ID FROM RelationTypes WHERE Name = ";
$q.= $dbh->quote($name);
$result = $dbh->query($q);
return $result->fetch(PDO::FETCH_COLUMN, 0);
}
/**
* Get the HTML code to display a package dependency link
*
@ -726,6 +741,27 @@ function pkg_add_dep($pkgid, $type, $depname, $depcondition) {
$dbh->exec($q);
}
/**
* Add a relation for a specific package to the database
*
* @param int $pkgid The package ID to add the relation for
* @param string $type The type of relation to add
* @param string $relname The name of the relation to add
* @param string $relcondition The version requirement of the relation
*
* @return void
*/
function pkg_add_rel($pkgid, $type, $relname, $relcondition) {
$dbh = DB::connect();
$q = sprintf("INSERT INTO PackageRelations (PackageID, RelTypeID, RelName, RelCondition) VALUES (%d, %d, %s, %s)",
$pkgid,
pkg_relation_type_id_from_name($type),
$dbh->quote($relname),
$dbh->quote($relcondition)
);
$dbh->exec($q);
}
/**
* Add a source for a specific package to the database
*