DROP TABLE IF EXISTS Classes;
CREATE TABLE Classes (
id SERIAL,
Name varchar(255) NOT NULL DEFAULT '',
Description varchar(255) NOT NULL DEFAULT '',
SortOrder integer NOT NULL DEFAULT 0,
Disabled smallint NOT NULL DEFAULT 0,
Creator integer NOT NULL DEFAULT 0,
Created TIMESTAMP NULL,
LastUpdatedBy integer NOT NULL DEFAULT 0,
LastUpdated TIMESTAMP NULL,
HotList smallint NOT NULL DEFAULT 0,
PRIMARY KEY (id)
);

DROP TABLE IF EXISTS Articles;
CREATE TABLE Articles (
id SERIAL,
Name varchar(255) NOT NULL DEFAULT '',
Summary varchar(255) NOT NULL DEFAULT '',
SortOrder integer NOT NULL DEFAULT 0,
Class integer NOT NULL DEFAULT 0,
Parent integer NOT NULL DEFAULT 0,
URI varchar(255),
Creator integer NOT NULL DEFAULT 0,
Created TIMESTAMP NULL,
LastUpdatedBy integer NOT NULL DEFAULT 0,
LastUpdated TIMESTAMP NULL,
PRIMARY KEY (id)
);


DROP TABLE IF EXISTS Topics;
CREATE TABLE Topics (
id SERIAL,
Parent integer NOT NULL DEFAULT 0,
Name varchar(255) NOT NULL DEFAULT '',
Description varchar(255) NOT NULL DEFAULT '',
ObjectType varchar(64) NOT NULL DEFAULT '',
ObjectId integer NOT NULL,
PRIMARY KEY (id)
);


DROP TABLE IF EXISTS ObjectTopics;
CREATE TABLE ObjectTopics (
id SERIAL,
Topic integer NOT NULL,
ObjectType varchar(64) NOT NULL DEFAULT '',
ObjectId integer NOT NULL,
PRIMARY KEY (id)
);


DROP TABLE IF EXISTS ObjectClasses;
CREATE TABLE ObjectClasses (
id SERIAL,
Class integer NOT NULL,
ObjectType varchar(255) NOT NULL DEFAULT '',
ObjectId integer NOT NULL,
Creator integer NOT NULL DEFAULT 0,
Created TIMESTAMP NULL,
LastUpdatedBy integer NOT NULL DEFAULT 0,
LastUpdated TIMESTAMP NULL,
PRIMARY KEY (id)
);

