BEGIN;

-- tables

CREATE TABLE traffic_class (
 id serial,

 created timestamp with time zone not null default CURRENT_TIMESTAMP,
--HELP_EN_INFO:Creation Date
--HELP_EN_LONG:The date and time this record was created.
--HELP_NL_INFO:Datum aanmaak
--HELP_NL_LONG:De tijd en datum waarop dit is aangemaakt.

 lastupdate timestamp with time zone not null default CURRENT_TIMESTAMP,
--HELP_EN_INFO:Last Update
--HELP_EN_LONG:The date and time this record was updated.
--HELP_NL_INFO:Laatste wijziging
--HELP_NL_LONG:De tijd en datum van laatste wijziging.

 company integer NOT NULL default '1',
--HELP_EN_INFO:company
--HELP_EN_LONG:The company this traffic class belongs to.
--HELP_NL_INFO:bedrijf
--HELP_NL_LONG:Het bedrijf waar deze verkeersklasse bij hoort.

 name varchar(255) NOT NULL default '',
--HELP_EN_INFO:traffic class name
--HELP_EN_LONG:The name of this traffic class.
--HELP_NL_INFO:naam
--HELP_NL_LONG:De naam van deze verkeersklasse.

 description varchar(256) NOT NULL default '',
--HELP_EN_INFO:Description
--HELP_EN_LONG:The description for this traffic class.
--HELP_NL_INFO:Omschrijving
--HELP_NL_LONG:Een omschrijving voor deze verkeersklasse.

 status varchar(8) NOT NULL default 'active'
   CHECK (status IN ('active', 'deleted')),
--HELP_EN_INFO:state
--HELP_EN_LONG:Traffic class status.
--HELP_NL_INFO:status
--HELP_NL_LONG:De status van deze verkeersklasse.

 pattern varchar(24) NOT NULL default '',
--HELP_EN_INFO:pattern
--HELP_EN_LONG:<p>
--HELP_EN_LONG:Pattern for this traffic class.
--HELP_EN_LONG:<p>You can use the following wildcards:</p>
--HELP_EN_LONG:<ul> 
--HELP_EN_LONG:<li>"." - any number</li>
--HELP_EN_LONG:<li>"X" - one digit (0-9)</li>
--HELP_EN_LONG:<li>"N" - one digit (2-9)</li> 
--HELP_EN_LONG:<li>"Z" - one digit (1-9)</li>
--HELP_EN_LONG:</ul>
--HELP_EN_LONG:<p>Example:<br>
--HELP_EN_LONG:To define all internal 3-digit extensions starting with an '8'
--HELP_EN_LONG:to belong to this traffic class, enter '8XX' into this field.</p>
--HELP_NL_INFO:patroon
--HELP_NL_LONG:<p>Patroon voor deze verkeersklasse.
--HELP_NL_LONG:<ul>
--HELP_NL_LONG:<li>. - willekeurige reeks cijfers</li>
--HELP_NL_LONG:<li>X - een cijfer (0-9)</li>
--HELP_NL_LONG:<li>N - een cijfer (2-9)</li>
--HELP_NL_LONG:<li>Z - een cijfer (1-9)</li>
--HELP_NL_LONG:</ul>
--HELP_NL_LONG:<p>Voorbeeld:</p>
--HELP_NL_LONG:<p>Om alle interne 3-cijferige extensies die met een '8' beginnen te
--HELP_NL_LONG:laten behoren tot deze verkeersklasse, gebruik dan '8XX' in dit veld.</p>

 PRIMARY KEY  (id)
);

GRANT UPDATE, SELECT, INSERT, DELETE ON traffic_class TO astium;
GRANT UPDATE, SELECT ON traffic_class_id_seq TO astium;

INSERT INTO traffic_class (name, pattern) VALUES ('Default', '.');


CREATE TABLE role_traffic_class (
 id serial,

 created timestamp with time zone not null default CURRENT_TIMESTAMP,
--HELP_EN_INFO:Creation Date
--HELP_EN_LONG:The date and time this record was created.
--HELP_NL_INFO:Datum aanmaak
--HELP_NL_LONG:De tijd en datum waarop dit is aangemaakt.

 lastupdate timestamp with time zone not null default CURRENT_TIMESTAMP,
--HELP_EN_INFO:Last Update
--HELP_EN_LONG:The date and time this record was updated.
--HELP_NL_INFO:Laatste wijziging
--HELP_NL_LONG:De tijd en datum van laatste wijziging.

 role integer NOT NULL default '1',
--HELP_EN_INFO:role
--HELP_EN_LONG:The role for this traffic class.
--HELP_NL_INFO:rol
--HELP_NL_LONG:De rol voor deze verkeersklasse.

 traffic_class integer NOT NULL default '1',
--HELP_EN_INFO:traffic_class
--HELP_EN_LONG:The traffic class for this role.
--HELP_NL_INFO:verkeersklasse
--HELP_NL_LONG:De verkeersklasse voor deze rol.

 UNIQUE (role, traffic_class),

 PRIMARY KEY  (id)
);

GRANT UPDATE, SELECT, INSERT, DELETE ON role_traffic_class TO astium;
GRANT UPDATE, SELECT ON role_traffic_class_id_seq TO astium;

INSERT INTO role_traffic_class (role, traffic_class) VALUES ('1', '1');


-- foreign keys

-- role_traffic_class
ALTER TABLE role_traffic_class ADD CONSTRAINT role_traffic_class_role_constraint FOREIGN KEY (role) REFERENCES role (id);
ALTER TABLE role_traffic_class ADD CONSTRAINT role_traffic_class_traffic_class_constraint FOREIGN KEY (traffic_class) REFERENCES traffic_class (id);

-- traffic_class
ALTER TABLE traffic_class ADD CONSTRAINT traffic_class_company_constraint FOREIGN KEY (company) REFERENCES company (id);


-- triggers

-- role_traffic_class
CREATE TRIGGER update_lastupdate_trigger BEFORE UPDATE ON role_traffic_class FOR EACH ROW EXECUTE PROCEDURE update_lastupdate_column();

-- traffic_class
CREATE TRIGGER update_lastupdate_trigger BEFORE UPDATE ON traffic_class FOR EACH ROW EXECUTE PROCEDURE update_lastupdate_column();

COMMIT;
