Commit 64520381 authored by eric's avatar eric
Browse files

Schema file now loads properly into MySQL.

parent 569216db
-- The MySQL database layout for the AUR. Certain data
-- is also included such as AccountTypes, PackageLocations, etc.
--
DROP DATABASE AUR;
CREATE DATABASE AUR;
-- Define the Account Types for the AUR.
--
CREATE TABLE AccountTypes (
ID UNSIGNED TINYINT NOT NULL AUTO_INCREMENT,
ID TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
AccountType char(32) NOT NULL DEFAULT '',
PRIMARY KEY (ID)
);
INSERT INTO TABLE (ID, AccountType) VALUES (1, 'User');
INSERT INTO TABLE (ID, AccountType) VALUES (2, 'Trusted User');
INSERT INTO TABLE (ID, AccountType) VALUES (3, 'Developer');
INSERT INTO AccountTypes (ID, AccountType) VALUES (1, 'User');
INSERT INTO AccountTypes (ID, AccountType) VALUES (2, 'Trusted User');
INSERT INTO AccountTypes (ID, AccountType) VALUES (3, 'Developer');
-- User information for each user regardless of type.
--
CREATE TABLE Users (
ID UNSIGNED INTEGER NOT NULL AUTO_INCREMENT,
AccountTypeID UNSIGNED TINYINT NOT NULL DEFAULT 1,
Suspended UNSIGNED TINYINT NOT NULL DEFAULT 0,
ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
AccountTypeID TINYINT UNSIGNED NOT NULL DEFAULT 1,
Suspended TINYINT UNSIGNED NOT NULL DEFAULT 0,
Email CHAR(64) NOT NULL,
Passwd CHAR(32) NOT NULL,
RealName CHAR(64) NOT NULL DEFAULT '',
IRCNick CHAR(32) NOT NULL DEFAULT '',
LastVoted UNSIGNED BIGINT NOT NULL DEFAULT 0,
NewPkgNotify UNSIGNED TINYINT NOT NULL DEFAULT 0,
LastVoted BIGINT UNSIGNED NOT NULL DEFAULT 0,
NewPkgNotify TINYINT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (ID),
UNIQUE INDEX Emailx (Email),
INDEX AccountTypeIDx (AccountTypeID),
INDEX NewPkgNotifyx (NewPkgNotify),
FOREIGN KEY AccountTypeIDr REFERENCES AccountTypes (ID)
UNIQUE (Email),
INDEX (AccountTypeID),
INDEX (NewPkgNotify),
FOREIGN KEY (AccountTypeID) REFERENCES AccountTypes(ID) ON DELETE NO ACTION
);
-- A default developer account for testing purposes
INSERT INTO Users (ID, AccountTypeID, Email, Passwd) VALUES (
......@@ -40,10 +42,10 @@ INSERT INTO Users (ID, AccountTypeID, Email, Passwd) VALUES (
-- Track Users logging in/out of AUR web site.
--
CREATE TABLE Sessions (
UsersID UNSIGNED INTEGER NOT NULL,
UsersID INTEGER UNSIGNED NOT NULL,
SessionID CHAR(32) NOT NULL,
LastUpdateTS UNSIGNED BIGINT NOT NULL,
FOREIGN KEY UsersIDr REFERENCES Users (ID)
LastUpdateTS BIGINT UNSIGNED NOT NULL,
FOREIGN KEY (UsersID) REFERENCES Users(ID)
);
......@@ -52,7 +54,7 @@ CREATE TABLE Sessions (
-- in 'extra'.
--
CREATE TABLE PackageCategories (
ID UNSIGNED TINYINT NOT NULL AUTO_INCREMENT,
ID TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
Category CHAR(32) NOT NULL,
PRIMARY KEY (ID)
);
......@@ -78,7 +80,7 @@ INSERT INTO PackageCategories (Category) VALUES ('xfce');
-- The various repositories that a package could live in.
--
CREATE TABLE PackageLocations (
ID UNSIGNED TINYINT NOT NULL AUTO_INCREMENT,
ID TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
Location CHAR(32) NOT NULL,
PRIMARY KEY (ID)
);
......@@ -92,48 +94,50 @@ INSERT INTO PackageLocations (ID, Location) VALUES (5, 'Unstable');
-- Information about the actual packages
--
CREATE TABLE Packages (
ID UNSIGNED INTEGER NOT NULL AUTO_INCREMENT,
ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Name CHAR(32) NOT NULL,
Version CHAR(32) NOT NULL DEFAULT '',
CategoryID UNSIGNED TINYINT NOT NULL,
CategoryID TINYINT UNSIGNED NOT NULL,
Description CHAR(128) NOT NULL DEFAULT "An Arch Package",
URL CHAR(256) NOT NULL DEFAULT "http://www.archlinux.org",
Source CHAR(256) NOT NULL DEFAULT "/dev/null",
LocationID UNSIGNED TINYINT NOT NULL,
OutOfDate UNSIGNED TINYINT DEFAULT 0,
SubmittedTS UNSIGNED BIGINT NOT NULL,
SubmitterUID UNSIGNED INTEGER NOT NULL DEFAULT 0,
MaintainerUID UNSIGNED INTEGER NOT NULL DEFAULT 0,
URL CHAR(255) NOT NULL DEFAULT "http://www.archlinux.org",
Source CHAR(255) NOT NULL DEFAULT "/dev/null",
LocationID TINYINT UNSIGNED NOT NULL,
OutOfDate TINYINT UNSIGNED DEFAULT 0,
SubmittedTS BIGINT UNSIGNED NOT NULL,
SubmitterUID INTEGER UNSIGNED NOT NULL DEFAULT 0,
MaintainerUID INTEGER UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (ID),
UNIQUE INDEX Namex (Name),
INDEX CategoryIDx (CategoryID),
INDEX LocationIDx (LocationID),
INDEX OutOfDatex (OutOfDate),
INDEX SubmitterUIDx (SubmitterUID),
INDEX MaintainerUIDx (MaintainerUID),
FOREIGN KEY CategoryIDr REFERENCES PackageCategories (ID),
FOREIGN KEY LocationIDr REFERENCES PackageLocations (ID)
FOREIGN KEY SubmitterUIDr REFERENCES Users (ID)
FOREIGN KEY MaintainerUIDr REFERENCES Users (ID)
UNIQUE (Name),
INDEX (CategoryID),
INDEX (LocationID),
INDEX (OutOfDate),
INDEX (SubmitterUID),
INDEX (MaintainerUID),
FOREIGN KEY (CategoryID) REFERENCES PackageCategories(ID) ON DELETE NO ACTION,
FOREIGN KEY (LocationID) REFERENCES PackageLocations(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
);
-- Track votes for packages
--
CREATE TABLE PackageVotes (
UsersID UNSIGNED INTEGER NOT NULL,
PackageID UNSIGNED INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY UsersIDx REFERENCES Users (ID),
FOREIGN KEY PackageIDx REFERENCES Packages (ID)
UsersID INTEGER UNSIGNED NOT NULL,
PackageID INTEGER UNSIGNED NOT NULL,
INDEX (UsersID),
INDEX (PackageID),
FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE CASCADE,
FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE
);
-- The individual files and their file system location.
--
CREATE TABLE PackageContents (
PackageID UNSIGNED INTEGER NOT NULL,
Path CHAR(256) NOT NULL,
INDEX PackageIDx (PackageID)
PackageID INTEGER UNSIGNED NOT NULL,
Path CHAR(255) NOT NULL,
INDEX (PackageID),
FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE
);
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment