diff --git a/install/create_tables-sqlite3.sql b/install/create_tables-sqlite3.sql new file mode 100644 index 000000000..dfd972dbe --- /dev/null +++ b/install/create_tables-sqlite3.sql @@ -0,0 +1,617 @@ +-- +-- Table structure for table `tblACLs` +-- + +CREATE TABLE `tblACLs` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `target` INTEGER NOT NULL default '0', + `targetType` INTEGER NOT NULL default '0', + `userID` INTEGER NOT NULL default '-1', + `groupID` INTEGER NOT NULL default '-1', + `mode` INTEGER NOT NULL default '0' +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblCategory` +-- + +CREATE TABLE `tblCategory` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `name` text NOT NULL +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblAttributeDefinitions` +-- + +CREATE TABLE `tblAttributeDefinitions` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `name` varchar(100) default NULL, + `objtype` INTEGER NOT NULL default '0', + `type` INTEGER NOT NULL default '0', + `multiple` INTEGER NOT NULL default '0', + `minvalues` INTEGER NOT NULL default '0', + `maxvalues` INTEGER NOT NULL default '0', + `valueset` TEXT default NULL, + UNIQUE(`name`) +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblUsers` +-- + +CREATE TABLE `tblUsers` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `login` varchar(50) default NULL, + `pwd` varchar(50) default NULL, + `fullName` varchar(100) default NULL, + `email` varchar(70) default NULL, + `language` varchar(32) NOT NULL, + `theme` varchar(32) NOT NULL, + `comment` text NOT NULL, + `role` INTEGER NOT NULL default '0', + `hidden` INTEGER NOT NULL default '0', + `pwdExpiration` TEXT NOT NULL default '0000-00-00 00:00:00', + `loginfailures` INTEGER NOT NULL default '0', + `disabled` INTEGER NOT NULL default '0', + `quota` INTEGER, + UNIQUE (`login`) +); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblUserPasswordRequest` +-- + +CREATE TABLE `tblUserPasswordRequest` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `userID` INTEGER NOT NULL default '0' REFERENCES `tblUsers` (`id`) ON DELETE CASCADE, + `hash` varchar(50) default NULL, + `date` TEXT NOT NULL default '0000-00-00 00:00:00' +); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblUserPasswordHistory` +-- + +CREATE TABLE `tblUserPasswordHistory` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `userID` INTEGER NOT NULL default '0' REFERENCES `tblUsers` (`id`) ON DELETE CASCADE, + `pwd` varchar(50) default NULL, + `date` TEXT NOT NULL default '0000-00-00 00:00:00' +); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblUserImages` +-- + +CREATE TABLE `tblUserImages` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `userID` INTEGER NOT NULL default '0' REFERENCES `tblUsers` (`id`) ON DELETE CASCADE, + `image` blob NOT NULL, + `mimeType` varchar(10) NOT NULL default '' +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblFolders` +-- + +CREATE TABLE `tblFolders` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `name` varchar(70) default NULL, + `parent` INTEGER default NULL, + `folderList` text NOT NULL, + `comment` text, + `date` INTEGER default NULL, + `owner` INTEGER default NULL REFERENCES `tblUsers` (`id`), + `inheritAccess` INTEGER NOT NULL default '1', + `defaultAccess` INTEGER NOT NULL default '0', + `sequence` double NOT NULL default '0' +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblFolderAttributes` +-- + +CREATE TABLE `tblFolderAttributes` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `folder` INTEGER default NULL REFERENCES `tblFolders` (`id`) ON DELETE CASCADE, + `attrdef` INTEGER default NULL REFERENCES `tblAttributeDefinitions` (`id`), + `value` text default NULL, + UNIQUE (folder, attrdef) +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblDocuments` +-- + +CREATE TABLE `tblDocuments` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `name` varchar(150) default NULL, + `comment` text, + `date` INTEGER default NULL, + `expires` INTEGER default NULL, + `owner` INTEGER default NULL REFERENCES `tblUsers` (`id`), + `folder` INTEGER default NULL REFERENCES `tblFolders` (`id`), + `folderList` text NOT NULL, + `inheritAccess` INTEGER NOT NULL default '1', + `defaultAccess` INTEGER NOT NULL default '0', + `locked` INTEGER NOT NULL default '-1', + `keywords` text NOT NULL, + `sequence` double NOT NULL default '0' +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblDocumentAttributes` +-- + +CREATE TABLE `tblDocumentAttributes` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `document` INTEGER default NULL REFERENCES `tblDocuments` (`id`) ON DELETE CASCADE, + `attrdef` INTEGER default NULL REFERENCES `tblAttributeDefinitions` (`id`), + `value` text default NULL, + UNIQUE (document, attrdef) +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblDocumentApprovers` +-- + +CREATE TABLE `tblDocumentApprovers` ( + `approveID` INTEGER PRIMARY KEY AUTOINCREMENT, + `documentID` INTEGER NOT NULL default '0' REFERENCES `tblDocuments` (`id`) ON DELETE CASCADE, + `version` INTEGER unsigned NOT NULL default '0', + `type` INTEGER NOT NULL default '0', + `required` INTEGER NOT NULL default '0', + UNIQUE (`documentID`,`version`,`type`,`required`) +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblDocumentApproveLog` +-- + +CREATE TABLE `tblDocumentApproveLog` ( + `approveLogID` INTEGER PRIMARY KEY AUTOINCREMENT, + `approveID` INTEGER NOT NULL default '0' REFERENCES `tblDocumentApprovers` (`approveID`) ON DELETE CASCADE, + `status` INTEGER NOT NULL default '0', + `comment` TEXT NOT NULL, + `date` TEXT NOT NULL default '0000-00-00 00:00:00', + `userID` INTEGER NOT NULL default '0' REFERENCES `tblUsers` (`id`) ON DELETE CASCADE +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblDocumentContent` +-- + +CREATE TABLE `tblDocumentContent` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `document` INTEGER NOT NULL default '0' REFERENCES `tblDocuments` (`id`), + `version` INTEGER unsigned NOT NULL, + `comment` text, + `date` INTEGER default NULL, + `createdBy` INTEGER default NULL, + `dir` varchar(255) NOT NULL default '', + `orgFileName` varchar(150) NOT NULL default '', + `fileType` varchar(10) NOT NULL default '', + `mimeType` varchar(70) NOT NULL default '', + `fileSize` INTEGER, + UNIQUE (`document`,`version`) +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblDocumentContentAttributes` +-- + +CREATE TABLE `tblDocumentContentAttributes` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `content` INTEGER default NULL REFERENCES `tblDocumentContent` (`id`) ON DELETE CASCADE, + `attrdef` INTEGER default NULL REFERENCES `tblAttributeDefinitions` (`id`), + `value` text default NULL, + UNIQUE (content, attrdef) +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblDocumentLinks` +-- + +CREATE TABLE `tblDocumentLinks` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `document` INTEGER NOT NULL default 0 REFERENCES `tblDocuments` (`id`) ON DELETE CASCADE, + `target` INTEGER NOT NULL default 0 REFERENCES `tblDocuments` (`id`) ON DELETE CASCADE, + `userID` INTEGER NOT NULL default 0 REFERENCES `tblUsers` (`id`), + `public` INTEGER NOT NULL default 0 +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblDocumentFiles` +-- + +CREATE TABLE `tblDocumentFiles` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `document` INTEGER NOT NULL default 0 REFERENCES `tblDocuments` (`id`), + `userID` INTEGER NOT NULL default 0 REFERENCES `tblUsers` (`id`), + `comment` text, + `name` varchar(150) default NULL, + `date` INTEGER default NULL, + `dir` varchar(255) NOT NULL default '', + `orgFileName` varchar(150) NOT NULL default '', + `fileType` varchar(10) NOT NULL default '', + `mimeType` varchar(70) NOT NULL default '' +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblDocumentLocks` +-- + +CREATE TABLE `tblDocumentLocks` ( + `document` INTEGER REFERENCES `tblDocuments` (`id`) ON DELETE CASCADE, + `userID` INTEGER NOT NULL default '0' REFERENCES `tblUsers` (`id`) +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblDocumentReviewLog` +-- + +CREATE TABLE `tblDocumentReviewLog` ( + `reviewLogID` INTEGER PRIMARY KEY AUTOINCREMENT, + `reviewID` INTEGER NOT NULL default 0 REFERENCES `tblDocumentReviewers` (`reviewID`) ON DELETE CASCADE, + `status` INTEGER NOT NULL default 0, + `comment` TEXT NOT NULL, + `date` TEXT NOT NULL default '0000-00-00 00:00:00', + `userID` INTEGER NOT NULL default 0 REFERENCES `tblUsers` (`id`) ON DELETE CASCADE +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblDocumentReviewers` +-- + +CREATE TABLE `tblDocumentReviewers` ( + `reviewID` INTEGER PRIMARY KEY AUTOINCREMENT, + `documentID` INTEGER NOT NULL default '0' REFERENCES `tblDocuments` (`id`) ON DELETE CASCADE, + `version` INTEGER unsigned NOT NULL default '0', + `type` INTEGER NOT NULL default '0', + `required` INTEGER NOT NULL default '0', + UNIQUE (`documentID`,`version`,`type`,`required`) +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblDocumentStatus` +-- + +CREATE TABLE `tblDocumentStatus` ( + `statusID` INTEGER PRIMARY KEY AUTOINCREMENT, + `documentID` INTEGER NOT NULL default '0' REFERENCES `tblDocuments` (`id`) ON DELETE CASCADE, + `version` INTEGER unsigned NOT NULL default '0', + UNIQUE (`documentID`,`version`) +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblDocumentStatusLog` +-- + +CREATE TABLE `tblDocumentStatusLog` ( + `statusLogID` INTEGER PRIMARY KEY AUTOINCREMENT, + `statusID` INTEGER NOT NULL default '0' REFERENCES `tblDocumentStatus` (`statusID`) ON DELETE CASCADE, + `status` INTEGER NOT NULL default '0', + `comment` text NOT NULL, + `date` TEXT NOT NULL default '0000-00-00 00:00:00', + `userID` INTEGER NOT NULL default '0' REFERENCES `tblUsers` (`id`) ON DELETE CASCADE +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblGroups` +-- + +CREATE TABLE `tblGroups` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `name` varchar(50) default NULL, + `comment` text NOT NULL +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblGroupMembers` +-- + +CREATE TABLE `tblGroupMembers` ( + `groupID` INTEGER NOT NULL default '0' REFERENCES `tblGroups` (`id`) ON DELETE CASCADE, + `userID` INTEGER NOT NULL default '0' REFERENCES `tblUsers` (`id`) ON DELETE CASCADE, + `manager` INTEGER NOT NULL default '0', + UNIQUE (`groupID`,`userID`) +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblKeywordCategories` +-- + +CREATE TABLE `tblKeywordCategories` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `name` varchar(255) NOT NULL default '', + `owner` INTEGER NOT NULL default '0' +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblKeywords` +-- + +CREATE TABLE `tblKeywords` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `category` INTEGER NOT NULL default '0' REFERENCES `tblKeywordCategories` (`id`) ON DELETE CASCADE, + `keywords` text NOT NULL +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblDocumentCategory` +-- + +CREATE TABLE `tblDocumentCategory` ( + `categoryID` INTEGER NOT NULL default '0' REFERENCES `tblCategory` (`id`) ON DELETE CASCADE, + `documentID` INTEGER NOT NULL default '0' REFERENCES `tblDocuments` (`id`) ON DELETE CASCADE +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblNotify` +-- + +CREATE TABLE `tblNotify` ( + `target` INTEGER NOT NULL default '0', + `targetType` INTEGER NOT NULL default '0', + `userID` INTEGER NOT NULL default '-1', + `groupID` INTEGER NOT NULL default '-1', + UNIQUE (`target`,`targetType`,`userID`,`groupID`) +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tblSessions` +-- + +CREATE TABLE `tblSessions` ( + `id` varchar(50) PRIMARY KEY, + `userID` INTEGER NOT NULL default '0' REFERENCES `tblUsers` (`id`) ON DELETE CASCADE, + `lastAccess` INTEGER NOT NULL default '0', + `theme` varchar(30) NOT NULL default '', + `language` varchar(30) NOT NULL default '', + `clipboard` text default '' +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for mandatory reviewers +-- + +CREATE TABLE `tblMandatoryReviewers` ( + `userID` INTEGER NOT NULL default '0' REFERENCES `tblUsers` (`id`) ON DELETE CASCADE, + `reviewerUserID` INTEGER NOT NULL default '0', + `reviewerGroupID` INTEGER NOT NULL default '0', + UNIQUE (`userID`,`reviewerUserID`,`reviewerGroupID`) +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for mandatory approvers +-- + +CREATE TABLE `tblMandatoryApprovers` ( + `userID` INTEGER NOT NULL default '0' REFERENCES `tblUsers` (`id`) ON DELETE CASCADE, + `approverUserID` INTEGER NOT NULL default '0', + `approverGroupID` INTEGER NOT NULL default '0', + UNIQUE (`userID`,`approverUserID`,`approverGroupID`) +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for events (calendar) +-- + +CREATE TABLE `tblEvents` ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `name` varchar(150) default NULL, + `comment` text, + `start` INTEGER default NULL, + `stop` INTEGER default NULL, + `date` INTEGER default NULL, + `userID` INTEGER NOT NULL default '0' +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for workflow states +-- + +CREATE TABLE tblWorkflowStates ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `name` text NOT NULL, + `visibility` smallint(5) DEFAULT 0, + `maxtime` INTEGER DEFAULT 0, + `precondfunc` text DEFAULT NULL, + `documentstatus` smallint(5) DEFAULT NULL +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for workflow actions +-- + +CREATE TABLE tblWorkflowActions ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `name` text NOT NULL +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for workflows +-- + +CREATE TABLE tblWorkflows ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `name` text NOT NULL, + `initstate` INTEGER NOT NULL REFERENCES `tblWorkflowStates` (`id`) ON DELETE CASCADE +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for workflow transitions +-- + +CREATE TABLE tblWorkflowTransitions ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `workflow` INTEGER default NULL REFERENCES `tblWorkflows` (`id`) ON DELETE CASCADE, + `state` INTEGER default NULL REFERENCES `tblWorkflowStates` (`id`) ON DELETE CASCADE, + `action` INTEGER default NULL REFERENCES `tblWorkflowActions` (`id`) ON DELETE CASCADE, + `nextstate` INTEGER default NULL REFERENCES `tblWorkflowStates` (`id`) ON DELETE CASCADE, + `maxtime` INTEGER DEFAULT 0 +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for workflow transition users +-- + +CREATE TABLE tblWorkflowTransitionUsers ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `transition` INTEGER default NULL REFERENCES `tblWorkflowTransitions` (`id`) ON DELETE CASCADE, + `userid` INTEGER default NULL REFERENCES `tblUsers` (`id`) ON DELETE CASCADE +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for workflow transition groups +-- + +CREATE TABLE tblWorkflowTransitionGroups ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `transition` INTEGER default NULL REFERENCES `tblWorkflowTransitions` (`id`) ON DELETE CASCADE, + `groupid` INTEGER default NULL REFERENCES `tblGroups` (`id`) ON DELETE CASCADE, + `minusers` INTEGER default NULL +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for workflow log +-- + +CREATE TABLE tblWorkflowLog ( + `id` INTEGER PRIMARY KEY AUTOINCREMENT, + `document` INTEGER default NULL REFERENCES `tblDocuments` (`id`) ON DELETE CASCADE, + `version` smallint default NULL, + `workflow` INTEGER default NULL REFERENCES `tblWorkflows` (`id`) ON DELETE CASCADE, + `userid` INTEGER default NULL REFERENCES `tblUsers` (`id`) ON DELETE CASCADE, + `transition` INTEGER default NULL REFERENCES `tblWorkflowTransitions` (`id`) ON DELETE CASCADE, + `date` datetime NOT NULL default '0000-00-00 00:00:00', + `comment` text +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for workflow document relation +-- + +CREATE TABLE tblWorkflowDocumentContent ( + `parentworkflow` INTEGER DEFAULT 0, + `workflow` INTEGER DEFAULT NULL REFERENCES `tblWorkflows` (`id`) ON DELETE CASCADE, + `document` INTEGER DEFAULT NULL REFERENCES `tblDocuments` (`id`) ON DELETE CASCADE, + `version` smallint DEFAULT NULL, + `state` INTEGER DEFAULT NULL REFERENCES `tblWorkflowStates` (`id`) ON DELETE CASCADE +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for mandatory workflows +-- + +CREATE TABLE tblWorkflowMandatoryWorkflow ( + `userid` INTEGER default NULL REFERENCES `tblUsers` (`id`) ON DELETE CASCADE, + `workflow` INTEGER default NULL REFERENCES `tblWorkflows` (`id`) ON DELETE CASCADE, + UNIQUE(userid, workflow) +) ; + +-- -------------------------------------------------------- + +-- +-- Table structure for version +-- + +CREATE TABLE `tblVersion` ( + `date` TEXT NOT NULL default '0000-00-00 00:00:00', + `major` smallint, + `minor` smallint, + `subminor` smallint +) ; + +-- -------------------------------------------------------- + +-- +-- Initial content for database +-- + +INSERT INTO tblUsers VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', 'Administrator', 'address@server.com', '', '', '', 1, 0, '', 0, 0, 0); +INSERT INTO tblUsers VALUES (2, 'guest', NULL, 'Guest User', NULL, '', '', '', 2, 0, '', 0, 0, 0); +INSERT INTO tblFolders VALUES (1, 'DMS', 0, '', 'DMS root', strftime('%s','now'), 1, 0, 2, 0); +INSERT INTO tblVersion VALUES (DATETIME(), 4, 0, 0); +INSERT INTO tblCategory VALUES (0, '');