Skip to content
Snippets Groups Projects
Forked from smradius / smradius
458 commits behind the upstream repository.
core.tsql 5.08 KiB
@PRELOAD@



/* Users */
CREATE TABLE @PREFIX@users (
	ID			@SERIAL_TYPE@,

	Username		VARCHAR(255) NOT NULL,

	Disabled		SMALLINT NOT NULL DEFAULT '0',

	UNIQUE (Username)
) @CREATE_TABLE_SUFFIX@;
CREATE INDEX @PREFIX@users_idx1 ON @PREFIX@users (Username);

/* User attributes */
CREATE TABLE @PREFIX@user_attributes (
	ID			@SERIAL_TYPE@,

	UserID			@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 (UserID) REFERENCES @PREFIX@users(ID)
) @CREATE_TABLE_SUFFIX@;



/* Groups */
CREATE TABLE @PREFIX@groups (
	ID			@SERIAL_TYPE@,

	Name			VARCHAR(255) NOT NULL,

	Priority		SMALLINT NOT NULL,

	Disabled		SMALLINT NOT NULL DEFAULT '0',

	Comment			VARCHAR(1024)

)  @CREATE_TABLE_SUFFIX@;
CREATE INDEX @PREFIX@groups_idx1 ON @PREFIX@groups (Name);

/* Group attributes */
CREATE TABLE @PREFIX@group_attributes (
	ID			@SERIAL_TYPE@,

	GroupID			@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 (GroupID) REFERENCES @PREFIX@groups(ID)
) @CREATE_TABLE_SUFFIX@;

/* User to group mapping */
CREATE TABLE @PREFIX@users_to_groups (
	ID			@SERIAL_TYPE@,

	UserID			@SERIAL_REF_TYPE@ NOT NULL,
	GroupID			@SERIAL_REF_TYPE@ NOT NULL,
	Disabled		SMALLINT NOT NULL DEFAULT '0',
	Comment			VARCHAR(1024),

	UNIQUE (UserID,GroupID),
	FOREIGN KEY (UserID) REFERENCES @PREFIX@users(ID),
	FOREIGN KEY (GroupID) REFERENCES @PREFIX@groups(ID)
)  @CREATE_TABLE_SUFFIX@;
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@;

/* Client to realm mapping */
CREATE TABLE @PREFIX@clients_to_realms (
	ID			@SERIAL_TYPE@,

	ClientID		@SERIAL_REF_TYPE@ NOT NULL,
	RealmID			@SERIAL_REF_TYPE@ NOT NULL,

	Disabled		SMALLINT NOT NULL DEFAULT '0',
	Comment			VARCHAR(1024),

	UNIQUE (ClientID,RealmID),
	FOREIGN KEY (ClientID) REFERENCES @PREFIX@clients(ID),
	FOREIGN KEY (RealmID) REFERENCES @PREFIX@realms(ID)
)  @CREATE_TABLE_SUFFIX@;



/* Clients */
CREATE TABLE @PREFIX@clients (
	ID			@SERIAL_TYPE@,

	Name			VARCHAR(255) NOT NULL,
	AccessList		VARCHAR(255),

	Disabled		SMALLINT NOT NULL DEFAULT '0',

	UNIQUE (Name)
) @CREATE_TABLE_SUFFIX@;

/* Client attributes */
CREATE TABLE @PREFIX@client_attributes (
	ID			@SERIAL_TYPE@,
	ClientID		@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 (ClientID) REFERENCES @PREFIX@clients(ID)
) @CREATE_TABLE_SUFFIX@;



/* Topups */
CREATE TABLE @PREFIX@topups (
	ID			@SERIAL_TYPE@,

	UserID			@SERIAL_REF_TYPE@ NOT NULL,

	Timestamp		DATETIME,

				/* 1 = traffic topup, 2 = uptime topup */
	Type			@INT_UNSIGNED@,

	ValidFrom		DATETIME,
	ValidTo			DATETIME,

	Value			@INT_UNSIGNED@,

	Depleted		SMALLINT NOT NULL DEFAULT '0',

	FOREIGN KEY (UserID) REFERENCES @PREFIX@users(ID)
) @CREATE_TABLE_SUFFIX@;

/* Topups Summary */
CREATE TABLE @PREFIX@topups_summary (
	ID			@SERIAL_TYPE@,

	TopupID			@SERIAL_REF_TYPE@ NOT NULL,

	PeriodKey		VARCHAR(255) NOT NULL, 

	Balance			@INT_UNSIGNED@,

	Depleted		SMALLINT NOT NULL DEFAULT '0',

	FOREIGN KEY (TopupID) REFERENCES @PREFIX@topups(ID)
) @CREATE_TABLE_SUFFIX@;



/* Accounting */
CREATE TABLE @PREFIX@accounting (
	ID			@SERIAL_TYPE@,

	Username		VARCHAR(255),

	ServiceType		@INT_UNSIGNED@,

	FramedProtocol		@INT_UNSIGNED@, 

	NASPort			VARCHAR(255),

	NASPortType		@INT_UNSIGNED@,

	CallingStationID	VARCHAR(255), 

	CalledStationID		VARCHAR(255),

	NASPortID		VARCHAR(255),

	AcctSessionID		VARCHAR(255),

	FramedIPAddress		VARCHAR(16),

	AcctAuthentic		@INT_UNSIGNED@,

	EventTimestamp		DATETIME,

	NASIdentifier		VARCHAR(255),

	NASIPAddress		VARCHAR(16),

	AcctDelayTime		@INT_UNSIGNED@,

	AcctSessionTime		@INT_UNSIGNED@,

	AcctInputOctets		@INT_UNSIGNED@,

	AcctInputGigawords	@INT_UNSIGNED@,

	AcctInputPackets	@INT_UNSIGNED@,

	AcctOutputOctets	@INT_UNSIGNED@,

	AcctOutputGigawords	@INT_UNSIGNED@,

	AcctOutputPackets	@INT_UNSIGNED@,

	AcctStatusType		@INT_UNSIGNED@,

	AcctTerminateCause	@INT_UNSIGNED@
) @CREATE_TABLE_SUFFIX@;
CREATE INDEX @PREFIX@accounting_idx1 ON @PREFIX@accounting (Username);



/* Accounting Summary */
CREATE TABLE @PREFIX@accounting_summary (
	ID			@SERIAL_TYPE@,

	Username		VARCHAR(255),

	PeriodKey		DATETIME,

	AcctSessionTime		@INT_UNSIGNED@,

	AcctInputOctets		@INT_UNSIGNED@,

	AcctInputGigawords	@INT_UNSIGNED@,

	AcctOutputOctets	@INT_UNSIGNED@,

	AcctOutputGigawords	@INT_UNSIGNED@
) @CREATE_TABLE_SUFFIX@;