summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-03-01 10:21:06 -0600
committerLukas Fleischer <archlinux@cryptocrack.de>2011-03-04 10:29:14 +0100
commitf9eba12312fc6a1758f7f1051a8f30b435175f94 (patch)
treedb44e5216dfee88d12fbf3e5f1e772b6dcfc27b0
parentabd41bbb51ea2340bd06648cc0cd5b9144cce91e (diff)
downloadaurweb-f9eba12312fc6a1758f7f1051a8f30b435175f94.tar.xz
Ensure users can be deleted when foreign keys are present
This change is necessary to prevent this: mysql> delete from Users where ID = 112; ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`aur`.`Packages`, CONSTRAINT `Packages_ibfk_2` FOREIGN KEY (`SubmitterUID`) REFERENCES `Users` (`ID`) ON DELETE NO ACTION) As a bonus, due to foreign keys, orphaning of packages will be automatic. Signed-off-by: Dan McGee <dan@archlinux.org> Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
-rw-r--r--support/schema/aur-schema.sql5
-rw-r--r--web/lib/acctfuncs.inc1
2 files changed, 3 insertions, 3 deletions
diff --git a/support/schema/aur-schema.sql b/support/schema/aur-schema.sql
index 44501b6..8226b18 100644
--- a/support/schema/aur-schema.sql
+++ b/support/schema/aur-schema.sql
@@ -114,8 +114,9 @@ CREATE TABLE Packages (
INDEX (SubmitterUID),
INDEX (MaintainerUID),
FOREIGN KEY (CategoryID) REFERENCES PackageCategories(ID) ON DELETE NO ACTION,
- FOREIGN KEY (SubmitterUID) REFERENCES Users(ID) ON DELETE NO ACTION,
- FOREIGN KEY (MaintainerUID) REFERENCES Users(ID) ON DELETE NO ACTION
+ -- deleting a user will cause packages to be orphaned, not deleted
+ FOREIGN KEY (SubmitterUID) REFERENCES Users(ID) ON DELETE SET NULL,
+ FOREIGN KEY (MaintainerUID) REFERENCES Users(ID) ON DELETE SET NULL
) ENGINE = InnoDB;
diff --git a/web/lib/acctfuncs.inc b/web/lib/acctfuncs.inc
index a4de12c..5dfe50e 100644
--- a/web/lib/acctfuncs.inc
+++ b/web/lib/acctfuncs.inc
@@ -801,7 +801,6 @@ function user_suspended( $id )
/*
* This should be expanded to return something
- * TODO: Handle orphaning of user's packages
*/
function user_delete( $id )
{