From 35ca5a3b5bc0b22b3f1262ba30cc9cb78b76c85e Mon Sep 17 00:00:00 2001
From: Robert Anderson <randerson@lbsd.net>
Date: Fri, 17 Apr 2009 09:38:17 +0000
Subject: [PATCH] Changes database schemas, added wisp table

---
 database/core.mysql | 170 ++++++++++++++++++++++++++++++++++++++++++++
 database/core.tsql  |  39 +++++++++-
 database/wisp.mysql |  19 +++++
 database/wisp.tsql  |  19 +++++
 4 files changed, 245 insertions(+), 2 deletions(-)
 create mode 100644 database/core.mysql
 create mode 100644 database/wisp.mysql
 create mode 100644 database/wisp.tsql

diff --git a/database/core.mysql b/database/core.mysql
new file mode 100644
index 00000000..cc11f69d
--- /dev/null
+++ b/database/core.mysql
@@ -0,0 +1,170 @@
+SET FOREIGN_KEY_CHECKS=0;
+
+
+
+/* Users */
+CREATE TABLE users (
+	ID			SERIAL,
+
+	Username		VARCHAR(255) NOT NULL,
+
+	Disabled		SMALLINT NOT NULL DEFAULT '0',
+
+	UNIQUE (Username)
+) TYPE=InnoDB CHARACTER SET latin1 COLLATE latin1_bin;
+CREATE INDEX users_idx1 ON users (Username);
+
+
+
+/* User attributes */
+CREATE TABLE user_attributes (
+	ID			SERIAL,
+
+	UserID			BIGINT UNSIGNED NOT NULL,
+
+	Name			VARCHAR(255) NOT NULL,
+	Operator		VARCHAR(4) NOT NULL,
+	Value			VARCHAR(255),
+
+	Disabled		SMALLINT NOT NULL DEFAULT '0',
+
+	FOREIGN KEY (UserID) REFERENCES users(ID)
+) TYPE=InnoDB CHARACTER SET latin1 COLLATE latin1_bin;
+
+
+
+/* Groups */
+CREATE TABLE groups (
+	ID			SERIAL,
+
+	Name			VARCHAR(255) NOT NULL,
+
+	Priority		SMALLINT NOT NULL,
+
+	Disabled		SMALLINT NOT NULL DEFAULT '0',
+
+	Comment			VARCHAR(1024)
+
+)  TYPE=InnoDB CHARACTER SET latin1 COLLATE latin1_bin;
+CREATE INDEX groups_idx1 ON groups (Name);
+
+
+
+/* Group attributes */
+CREATE TABLE group_attributes (
+	ID			SERIAL,
+
+	GroupID			BIGINT UNSIGNED NOT NULL,
+
+	Name			VARCHAR(255) NOT NULL,
+	Operator		VARCHAR(4) NOT NULL,
+	Value			VARCHAR(255),
+
+	Disabled		SMALLINT NOT NULL DEFAULT '0',
+
+	FOREIGN KEY (GroupID) REFERENCES groups(ID)
+) TYPE=InnoDB CHARACTER SET latin1 COLLATE latin1_bin;
+
+
+
+/* User to group mapping */
+CREATE TABLE users_to_groups (
+	ID			SERIAL,
+
+	UserID			BIGINT UNSIGNED NOT NULL,
+	GroupID			BIGINT UNSIGNED NOT NULL,
+
+	Disabled		SMALLINT NOT NULL DEFAULT '0',
+	Comment			VARCHAR(1024),
+
+	UNIQUE (UserID,GroupID),
+	FOREIGN KEY (UserID) REFERENCES users(ID),
+	FOREIGN KEY (GroupID) REFERENCES groups(ID)
+)  TYPE=InnoDB CHARACTER SET latin1 COLLATE latin1_bin;
+CREATE INDEX users_to_groups_idx1 ON users_to_groups (UserID,GroupID);
+
+
+
+/* Realms */
+CREATE TABLE realms (
+	ID			SERIAL,
+
+	Name			VARCHAR(255) NOT NULL,
+
+	Disabled		SMALLINT NOT NULL DEFAULT '0'
+
+)  TYPE=InnoDB CHARACTER SET latin1 COLLATE latin1_bin;
+CREATE INDEX realms_idx1 ON realms (Name);
+
+
+
+/* Realm attributes */
+CREATE TABLE realm_attributes (
+	ID			SERIAL,
+
+	RealmID			BIGINT UNSIGNED NOT NULL,
+
+	Name			VARCHAR(255) NOT NULL,
+	Operator		VARCHAR(4) NOT NULL,
+	Value			VARCHAR(255),
+
+	Disabled		SMALLINT NOT NULL DEFAULT '0',
+
+	FOREIGN KEY (RealmID) REFERENCES realms(ID)
+) TYPE=InnoDB CHARACTER SET latin1 COLLATE latin1_bin;
+
+
+
+/* Accounting */
+CREATE TABLE accounting (
+	ID			SERIAL,
+
+	Username		VARCHAR(255) NOT NULL,
+
+	ServiceType		INT UNSIGNED NOT NULL,
+
+	FramedProtocol		INT UNSIGNED NOT NULL, 
+
+	NASPort			VARCHAR(255) NOT NULL,
+		
+	NASPortType		INT UNSIGNED NOT NULL,
+
+	CallingStationID	VARCHAR(255) NOT NULL, 
+
+	CalledStationID		VARCHAR(255) NOT NULL,
+
+	NASPortID		VARCHAR(255) NOT NULL,
+
+	AcctSessionID		VARCHAR(255) NOT NULL,
+	
+	FramedIPAddress		VARCHAR(16) NOT NULL,
+
+	AcctAuthentic		INT UNSIGNED NOT NULL,
+
+	EventTimestamp		DATETIME NOT NULL,
+
+	NASIdentifier		VARCHAR(255) NOT NULL,	
+
+	NASIPAddress		VARCHAR(16) NOT NULL,
+
+	AcctDelayTime		INT UNSIGNED NOT NULL,
+
+	AcctSessionTime		INT UNSIGNED NOT NULL,
+
+	AcctInputOctets		INT UNSIGNED NOT NULL,
+
+	AcctInputGigawords	INT UNSIGNED NOT NULL,
+
+	AcctInputPackets	INT UNSIGNED NOT NULL,	
+
+	AcctOutputOctets	INT UNSIGNED NOT NULL,
+
+	AcctOutputGigawords	INT UNSIGNED NOT NULL,
+
+	AcctOutputPackets	INT UNSIGNED NOT NULL,
+
+	AcctStatusType		INT UNSIGNED NOT NULL,
+
+	AcctTerminateCause	INT UNSIGNED NOT NULL
+) TYPE=InnoDB CHARACTER SET latin1 COLLATE latin1_bin;
+CREATE INDEX accounting_idx1 ON accounting (Username);
diff --git a/database/core.tsql b/database/core.tsql
index f0d4610b..4d9608d9 100644
--- a/database/core.tsql
+++ b/database/core.tsql
@@ -1,5 +1,7 @@
 @PRELOAD@
 
+
+
 /* Users */
 CREATE TABLE @PREFIX@users (
 	ID			@SERIAL_TYPE@,
@@ -13,6 +15,7 @@ CREATE TABLE @PREFIX@users (
 CREATE INDEX @PREFIX@users_idx1 ON @PREFIX@users (Username);
 
 
+
 /* User attributes */
 CREATE TABLE @PREFIX@user_attributes (
 	ID			@SERIAL_TYPE@,
@@ -29,6 +32,7 @@ CREATE TABLE @PREFIX@user_attributes (
 ) @CREATE_TABLE_SUFFIX@;
 
 
+
 /* Groups */
 CREATE TABLE @PREFIX@groups (
 	ID			@SERIAL_TYPE@,
@@ -45,6 +49,7 @@ CREATE TABLE @PREFIX@groups (
 CREATE INDEX @PREFIX@groups_idx1 ON @PREFIX@groups (Name);
 
 
+
 /* Group attributes */
 CREATE TABLE @PREFIX@group_attributes (
 	ID			@SERIAL_TYPE@,
@@ -61,6 +66,7 @@ CREATE TABLE @PREFIX@group_attributes (
 ) @CREATE_TABLE_SUFFIX@;
 
 
+
 /* User to group mapping */
 CREATE TABLE @PREFIX@users_to_groups (
 	ID			@SERIAL_TYPE@,
@@ -78,6 +84,37 @@ CREATE TABLE @PREFIX@users_to_groups (
 CREATE INDEX @PREFIX@users_to_groups_idx1 ON @PREFIX@users_to_groups (UserID,GroupID);
 
 
+
+/* Realms */
+CREATE TABLE @PREFIX@realms (
+	ID			@SERIAL_TYPE@,
+
+	Name			VARCHAR(255) NOT NULL,
+
+	Disabled		SMALLINT NOT NULL DEFAULT '0',
+
+)  @CREATE_TABLE_SUFFIX@;
+CREATE INDEX @PREFIX@realms_idx1 ON @PREFIX@realms (Name);
+
+
+
+/* Realm attributes */
+CREATE TABLE @PREFIX@realm_attributes (
+	ID			@SERIAL_TYPE@,
+
+	RealmID			@SERIAL_REF_TYPE@ NOT NULL,
+
+	Name			VARCHAR(255) NOT NULL,
+	Operator		VARCHAR(4) NOT NULL,
+	Value			VARCHAR(255),
+
+	Disabled		SMALLINT NOT NULL DEFAULT '0',
+
+	FOREIGN KEY (RealmID) REFERENCES @PREFIX@realms(ID)
+) @CREATE_TABLE_SUFFIX@;
+
+
+
 /* Accounting */
 CREATE TABLE @PREFIX@accounting (
 	ID			@SERIAL_TYPE@,
@@ -131,5 +168,3 @@ CREATE TABLE @PREFIX@accounting (
 	AcctTerminateCause	INT UNSIGNED NOT NULL
 ) @CREATE_TABLE_SUFFIX@;
 CREATE INDEX @PREFIX@accounting_idx1 ON @PREFIX@accounting (Username);
-
-/* FIXME: indexes */
diff --git a/database/wisp.mysql b/database/wisp.mysql
new file mode 100644
index 00000000..1429b911
--- /dev/null
+++ b/database/wisp.mysql
@@ -0,0 +1,19 @@
+SET FOREIGN_KEY_CHECKS=0;
+
+/* User Data */
+CREATE TABLE userdata (
+	ID			SERIAL,
+
+	UserID			BIGINT UNSIGNED NOT NULL,
+
+	FirstName		VARCHAR(255) NOT NULL,
+	LastName		VARCHAR(255) NOT NULL,
+
+	Email			VARCHAR(255) NOT NULL,
+	Phone			VARCHAR(20) NOT NULL,
+	Location		VARCHAR(255) NOT NULL,
+	
+	UNIQUE (UserID),
+	FOREIGN KEY (UserID) REFERENCES users(ID)
+)  TYPE=InnoDB CHARACTER SET latin1 COLLATE latin1_bin;
+CREATE INDEX userdata_idx1 ON userdata (UserID);
diff --git a/database/wisp.tsql b/database/wisp.tsql
new file mode 100644
index 00000000..44493d75
--- /dev/null
+++ b/database/wisp.tsql
@@ -0,0 +1,19 @@
+@PRELOAD@
+
+/* User Data */
+CREATE TABLE @PREFIX@userdata (
+	ID			@SERIAL_TYPE@,
+
+	UserID			@SERIAL_REF_TYPE@ NOT NULL,
+
+	FirstName		VARCHAR(255) NOT NULL,
+	LastName		VARCHAR(255) NOT NULL,
+
+	Email			VARCHAR(255) NOT NULL,
+	Phone			VARCHAR(20) NOT NULL,
+	Location		VARCHAR(255) NOT NULL,
+	
+	UNIQUE (UserID),
+	FOREIGN KEY (UserID) REFERENCES @PREFIX@users(ID)
+)  @CREATE_TABLE_SUFFIX@;
+CREATE INDEX @PREFIX@userdata_idx1 ON @PREFIX@userdata (UserID);
-- 
GitLab