diff options
author | Lukas Fleischer <archlinux@cryptocrack.de> | 2014-04-17 19:49:26 +0200 |
---|---|---|
committer | Lukas Fleischer <archlinux@cryptocrack.de> | 2014-04-17 21:09:16 +0200 |
commit | 73936002f7d5685a9063683f68d4e8c2e01be0ac (patch) | |
tree | c1f152f76be0399222a47cab2060998e41ce5688 /schema | |
parent | 32b5d466439b5c291472c68f6a732c5be4ca60cf (diff) | |
download | aur-73936002f7d5685a9063683f68d4e8c2e01be0ac.tar.gz aur-73936002f7d5685a9063683f68d4e8c2e01be0ac.tar.xz |
Store {make,check,opt}depends in the database
In addition to parsing and storing dependencies of packages, store
makedepends, checkdepends and optdepends. Every dependency (of any type)
is displayed on the package details page.
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Diffstat (limited to 'schema')
-rw-r--r-- | schema/aur-schema.sql | 17 | ||||
-rwxr-xr-x | schema/gendummydata.py | 9 |
2 files changed, 22 insertions, 4 deletions
diff --git a/schema/aur-schema.sql b/schema/aur-schema.sql index 9426a61d..327a7921 100644 --- a/schema/aur-schema.sql +++ b/schema/aur-schema.sql @@ -133,15 +133,30 @@ CREATE TABLE Packages ( ) ENGINE = InnoDB; +-- Define the package dependency types +-- +CREATE TABLE DependencyTypes ( + ID TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, + Name VARCHAR(32) NOT NULL DEFAULT '', + PRIMARY KEY (ID) +) ENGINE = InnoDB; +INSERT INTO DependencyTypes VALUES (1, 'depends'); +INSERT INTO DependencyTypes VALUES (2, 'makedepends'); +INSERT INTO DependencyTypes VALUES (3, 'checkdepends'); +INSERT INTO DependencyTypes VALUES (4, 'optdepends'); + + -- Track which dependencies a package has -- CREATE TABLE PackageDepends ( PackageID INTEGER UNSIGNED NOT NULL, + DepTypeID TINYINT UNSIGNED NOT NULL, DepName VARCHAR(64) NOT NULL, DepCondition VARCHAR(20), INDEX (PackageID), INDEX (DepName), - FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE + FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE, + FOREIGN KEY (DepTypeID) REFERENCES DependencyTypes(ID) ON DELETE NO ACTION ) ENGINE = InnoDB; diff --git a/schema/gendummydata.py b/schema/gendummydata.py index bc0ede8a..18852a22 100755 --- a/schema/gendummydata.py +++ b/schema/gendummydata.py @@ -28,7 +28,7 @@ MAX_USERS = 300 # how many users to 'register' MAX_DEVS = .1 # what percentage of MAX_USERS are Developers MAX_TUS = .2 # what percentage of MAX_USERS are Trusted Users MAX_PKGS = 900 # how many packages to load -PKG_DEPS = (1, 5) # min/max depends a package has +PKG_DEPS = (1, 15) # min/max depends a package has PKG_SRC = (1, 3) # min/max sources a package has PKG_CMNTS = (1, 5) # min/max number of comments a package has CATEGORIES_COUNT = 17 # the number of categories from aur-schema @@ -258,8 +258,11 @@ for p in list(seen_pkgs.keys()): while i != num_deps: dep = random.choice([k for k in seen_pkgs]) if dep not in this_deps: - s = "INSERT INTO PackageDepends VALUES (%d, '%s', NULL);\n" - s = s % (seen_pkgs[p], dep) + deptype = random.randrange(1, 5) + if deptype == 4: + dep += ": for " + random.choice([k for k in seen_pkgs]) + s = "INSERT INTO PackageDepends VALUES (%d, %d, '%s', NULL);\n" + s = s % (seen_pkgs[p], deptype, dep) out.write(s) i += 1 |