mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
Add a field for package base popularity
Create a new field Popularity in the PackageBases table. The field is updated by the popupdate script and reflects the popularity of a package. Popularity is the sum of all votes with each vote being weighted with a factor of 0.98 per day since its creation. Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
This commit is contained in:
parent
0345914c5c
commit
824744f1d2
3 changed files with 14 additions and 1 deletions
|
@ -102,6 +102,7 @@ CREATE TABLE PackageBases (
|
||||||
Name VARCHAR(255) NOT NULL,
|
Name VARCHAR(255) NOT NULL,
|
||||||
CategoryID TINYINT UNSIGNED NOT NULL DEFAULT 1,
|
CategoryID TINYINT UNSIGNED NOT NULL DEFAULT 1,
|
||||||
NumVotes INTEGER UNSIGNED NOT NULL DEFAULT 0,
|
NumVotes INTEGER UNSIGNED NOT NULL DEFAULT 0,
|
||||||
|
Popularity DECIMAL(6,2) UNSIGNED NOT NULL DEFAULT 0,
|
||||||
OutOfDateTS BIGINT UNSIGNED NULL DEFAULT NULL,
|
OutOfDateTS BIGINT UNSIGNED NULL DEFAULT NULL,
|
||||||
SubmittedTS BIGINT UNSIGNED NOT NULL,
|
SubmittedTS BIGINT UNSIGNED NOT NULL,
|
||||||
ModifiedTS BIGINT UNSIGNED NOT NULL,
|
ModifiedTS BIGINT UNSIGNED NOT NULL,
|
||||||
|
|
|
@ -23,5 +23,10 @@ cur = db.cursor()
|
||||||
cur.execute("UPDATE PackageBases SET NumVotes = (SELECT COUNT(*) FROM " +
|
cur.execute("UPDATE PackageBases SET NumVotes = (SELECT COUNT(*) FROM " +
|
||||||
"PackageVotes WHERE PackageVotes.PackageBaseID = PackageBases.ID)")
|
"PackageVotes WHERE PackageVotes.PackageBaseID = PackageBases.ID)")
|
||||||
|
|
||||||
|
cur.execute("UPDATE PackageBases SET Popularity = (" +
|
||||||
|
"SELECT SUM(POWER(0.98, (UNIX_TIMESTAMP() - VoteTS) / 86400)) " +
|
||||||
|
"FROM PackageVotes WHERE PackageVotes.PackageBaseID = " +
|
||||||
|
"PackageBases.ID AND NOT VoteTS IS NULL)")
|
||||||
|
|
||||||
db.commit()
|
db.commit()
|
||||||
db.close()
|
db.close()
|
||||||
|
|
|
@ -31,4 +31,11 @@ CREATE TABLE PackageComaintainers (
|
||||||
) ENGINE = InnoDB;
|
) ENGINE = InnoDB;
|
||||||
----
|
----
|
||||||
|
|
||||||
5. (optional) Setup cgit to browse the Git repositories via HTTP.
|
5. Add a field for the package base popularity to the PackageBases table:
|
||||||
|
|
||||||
|
----
|
||||||
|
ALTER TABLE PackageBases
|
||||||
|
ADD COLUMN Popularity DECIMAL(6,2) UNSIGNED NOT NULL DEFAULT 0;
|
||||||
|
----
|
||||||
|
|
||||||
|
6. (optional) Setup cgit to browse the Git repositories via HTTP.
|
||||||
|
|
Loading…
Add table
Reference in a new issue