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,
|
||||
CategoryID TINYINT UNSIGNED NOT NULL DEFAULT 1,
|
||||
NumVotes INTEGER UNSIGNED NOT NULL DEFAULT 0,
|
||||
Popularity DECIMAL(6,2) UNSIGNED NOT NULL DEFAULT 0,
|
||||
OutOfDateTS BIGINT UNSIGNED NULL DEFAULT NULL,
|
||||
SubmittedTS 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 " +
|
||||
"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.close()
|
||||
|
|
|
@ -31,4 +31,11 @@ CREATE TABLE PackageComaintainers (
|
|||
) 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