From b73e3ef989f94842e97731ad8589923e81d4183e Mon Sep 17 00:00:00 2001 From: ly1217 Date: Sun, 19 May 2019 19:39:50 -0700 Subject: [PATCH] Fix the create table sqls. --- scripts/sql/mysql/ccnet.sql | 197 ++++++------- scripts/sql/mysql/seafile.sql | 504 +++++++++++++++++++------------- scripts/sql/sqlite/config.sql | 2 +- scripts/sql/sqlite/groupmgr.sql | 14 +- scripts/sql/sqlite/org.sql | 16 +- scripts/sql/sqlite/seafile.sql | 122 ++++---- scripts/sql/sqlite/user.sql | 24 +- 7 files changed, 483 insertions(+), 396 deletions(-) diff --git a/scripts/sql/mysql/ccnet.sql b/scripts/sql/mysql/ccnet.sql index 7e09e85..6cb3465 100644 --- a/scripts/sql/mysql/ccnet.sql +++ b/scripts/sql/mysql/ccnet.sql @@ -1,115 +1,104 @@ -CREATE TABLE `Group` ( - `group_id` bigint(20) NOT NULL AUTO_INCREMENT, - `group_name` varchar(255) DEFAULT NULL, - `creator_name` varchar(255) DEFAULT NULL, - `timestamp` bigint(20) DEFAULT NULL, - `type` varchar(32) DEFAULT NULL, - `parent_group_id` int(11) DEFAULT NULL, - PRIMARY KEY (`group_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS Binding ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + email VARCHAR(255), + peer_id CHAR(41), + UNIQUE INDEX (peer_id), + INDEX (email(20)) +) ENGINE=INNODB; -CREATE TABLE `GroupUser` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `group_id` bigint(20) DEFAULT NULL, - `user_name` varchar(255) DEFAULT NULL, - `is_staff` tinyint(4) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `group_id` (`group_id`,`user_name`), - KEY `user_name` (`user_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS EmailUser ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + email VARCHAR(255), + passwd VARCHAR(256), + is_staff BOOL NOT NULL, + is_active BOOL NOT NULL, + ctime BIGINT, + reference_id VARCHAR(255), + UNIQUE INDEX (email), + UNIQUE INDEX (reference_id) +) ENGINE=INNODB; -CREATE TABLE `GroupDNPair` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `group_id` int(11) DEFAULT NULL, - `dn` varchar(255) DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `Group` ( + `group_id` BIGINT PRIMARY KEY AUTO_INCREMENT, + `group_name` VARCHAR(255), + `creator_name` VARCHAR(255), + `timestamp` BIGINT, + `type` VARCHAR(32), + `parent_group_id` INTEGER +) ENGINE=INNODB; -CREATE TABLE `GroupStructure` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `group_id` int(11) DEFAULT NULL, - `path` varchar(1024) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `group_id` (`group_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS GroupDNPair ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + group_id INTEGER, + dn VARCHAR(255) +)ENGINE=INNODB; -CREATE TABLE `OrgGroup` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `org_id` int(11) DEFAULT NULL, - `group_id` int(11) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `org_id` (`org_id`,`group_id`), - KEY `group_id` (`group_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS GroupStructure ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + group_id INTEGER, + path VARCHAR(1024), + UNIQUE INDEX(group_id) +)ENGINE=INNODB; -CREATE TABLE `Organization` ( - `org_id` bigint(20) NOT NULL AUTO_INCREMENT, - `org_name` varchar(255) DEFAULT NULL, - `url_prefix` varchar(255) DEFAULT NULL, - `creator` varchar(255) DEFAULT NULL, - `ctime` bigint(20) DEFAULT NULL, - PRIMARY KEY (`org_id`), - UNIQUE KEY `url_prefix` (`url_prefix`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `GroupUser` ( + `id` BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + `group_id` BIGINT, + `user_name` VARCHAR(255), + `is_staff` tinyint, + UNIQUE INDEX (`group_id`, `user_name`), + INDEX (`user_name`) +) ENGINE=INNODB; -CREATE TABLE `OrgUser` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `org_id` int(11) DEFAULT NULL, - `email` varchar(255) DEFAULT NULL, - `is_staff` tinyint(1) NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `org_id` (`org_id`,`email`), - KEY `email` (`email`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS LDAPConfig ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + cfg_group VARCHAR(255) NOT NULL, + cfg_key VARCHAR(255) NOT NULL, + value VARCHAR(255), + property INTEGER +) ENGINE=INNODB; -CREATE TABLE `Binding` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `email` varchar(255) DEFAULT NULL, - `peer_id` char(41) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `peer_id` (`peer_id`), - KEY `email` (`email`(20)) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS LDAPUsers ( + id BIGINT PRIMARY KEY AUTO_INCREMENT, + email VARCHAR(255) NOT NULL, + password varchar(255) NOT NULL, + is_staff BOOL NOT NULL, + is_active BOOL NOT NULL, + extra_attrs TEXT, + reference_id VARCHAR(255), + UNIQUE INDEX(email), + UNIQUE INDEX (reference_id) +) ENGINE=INNODB; -CREATE TABLE `EmailUser` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `email` varchar(255) DEFAULT NULL, - `passwd` varchar(256) DEFAULT NULL, - `is_staff` tinyint(1) NOT NULL, - `is_active` tinyint(1) NOT NULL, - `ctime` bigint(20) DEFAULT NULL, - `reference_id` varchar(255) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `email` (`email`), - UNIQUE KEY `reference_id` (`reference_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS OrgGroup ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + org_id INTEGER, + group_id INTEGER, + INDEX (group_id), + UNIQUE INDEX(org_id, group_id) +) ENGINE=INNODB; -CREATE TABLE `LDAPConfig` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `cfg_group` varchar(255) NOT NULL, - `cfg_key` varchar(255) NOT NULL, - `value` varchar(255) DEFAULT NULL, - `property` int(11) DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS OrgUser ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + org_id INTEGER, + email VARCHAR(255), + is_staff BOOL NOT NULL, + INDEX (email), + UNIQUE INDEX(org_id, email) +) ENGINE=INNODB; -CREATE TABLE `LDAPUsers` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `email` varchar(255) NOT NULL, - `password` varchar(255) NOT NULL, - `is_staff` tinyint(1) NOT NULL, - `is_active` tinyint(1) NOT NULL, - `extra_attrs` text, - `reference_id` varchar(255) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `email` (`email`), - UNIQUE KEY `reference_id` (`reference_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS Organization ( + org_id BIGINT PRIMARY KEY AUTO_INCREMENT, + org_name VARCHAR(255), + url_prefix VARCHAR(255), + creator VARCHAR(255), + ctime BIGINT, + UNIQUE INDEX (url_prefix) +) ENGINE=INNODB; -CREATE TABLE `UserRole` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `email` varchar(255) DEFAULT NULL, - `role` varchar(255) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `email` (`email`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS UserRole ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + email VARCHAR(255), + role VARCHAR(255), + is_manual_set INTEGER DEFAULT 0, + UNIQUE INDEX (email) +) ENGINE=INNODB; diff --git a/scripts/sql/mysql/seafile.sql b/scripts/sql/mysql/seafile.sql index 6aec92f..ca4b518 100644 --- a/scripts/sql/mysql/seafile.sql +++ b/scripts/sql/mysql/seafile.sql @@ -1,228 +1,324 @@ -CREATE TABLE `Branch` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `name` varchar(10) DEFAULT NULL, - `repo_id` char(41) DEFAULT NULL, - `commit_id` char(41) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `repo_id` (`repo_id`,`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS Branch ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + name VARCHAR(10), + repo_id CHAR(41), + commit_id CHAR(41), + UNIQUE INDEX(repo_id, name) +) ENGINE = INNODB; -CREATE TABLE `GarbageRepos` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `repo_id` char(36) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `repo_id` (`repo_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS FileLockTimestamp ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(40), + update_time BIGINT NOT NULL, + UNIQUE INDEX(repo_id) +); -CREATE TABLE `InnerPubRepo` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `repo_id` char(37) DEFAULT NULL, - `permission` char(15) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `repo_id` (`repo_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS FileLocks ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(40) NOT NULL, + path TEXT NOT NULL, + user_name VARCHAR(255) NOT NULL, + lock_time BIGINT, + expire BIGINT, + KEY(repo_id) +) ENGINE=INNODB; -CREATE TABLE `OrgQuota` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `org_id` int(11) DEFAULT NULL, - `quota` bigint(20) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `org_id` (`org_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS FolderGroupPerm ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(36) NOT NULL, + path TEXT NOT NULL, + permission CHAR(15), + group_id INTEGER NOT NULL, + INDEX(repo_id) +) ENGINE=INNODB; -CREATE TABLE `OrgUserQuota` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `org_id` int(11) DEFAULT NULL, - `user` varchar(255) DEFAULT NULL, - `quota` bigint(20) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `org_id` (`org_id`,`user`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS FolderPermTimestamp ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(36), + timestamp BIGINT, + UNIQUE INDEX(repo_id) +) ENGINE=INNODB; -CREATE TABLE `Repo` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `repo_id` char(37) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `repo_id` (`repo_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS FolderUserPerm ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(36) NOT NULL, + path TEXT NOT NULL, + permission CHAR(15), + user VARCHAR(255) NOT NULL, + INDEX(repo_id) +) ENGINE=INNODB; -CREATE TABLE `RepoFileCount` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `repo_id` char(36) DEFAULT NULL, - `file_count` bigint(20) unsigned DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `repo_id` (`repo_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS GCID ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(36), + gc_id CHAR(36), + UNIQUE INDEX(repo_id) +) ENGINE=INNODB; -CREATE TABLE `RepoGroup` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `repo_id` char(37) DEFAULT NULL, - `group_id` int(11) DEFAULT NULL, - `user_name` varchar(255) DEFAULT NULL, - `permission` char(15) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `group_id` (`group_id`,`repo_id`), - KEY `repo_id` (`repo_id`), - KEY `user_name` (`user_name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS GarbageRepos ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(36), + UNIQUE INDEX(repo_id) +); -CREATE TABLE `RepoHead` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `repo_id` char(37) DEFAULT NULL, - `branch_name` varchar(10) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `repo_id` (`repo_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS InnerPubRepo ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(37), + permission CHAR(15), + UNIQUE INDEX (repo_id) +) ENGINE=INNODB; -CREATE TABLE `RepoHistoryLimit` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `repo_id` char(37) DEFAULT NULL, - `days` int(11) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `repo_id` (`repo_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS LastGCID ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(36), + client_id VARCHAR(128), + gc_id CHAR(36), + UNIQUE INDEX(repo_id, client_id) +) ENGINE=INNODB; -CREATE TABLE `RepoInfo` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `repo_id` char(36) DEFAULT NULL, - `name` varchar(255) NOT NULL, - `update_time` bigint(20) DEFAULT NULL, - `version` int(11) DEFAULT NULL, - `is_encrypted` int(11) DEFAULT NULL, - `last_modifier` varchar(255) DEFAULT NULL, - `status` INTEGER DEFAULT 0, - PRIMARY KEY (`id`), - UNIQUE KEY `repo_id` (`repo_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS OrgGroupRepo ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + org_id INTEGER, + repo_id CHAR(37), + group_id INTEGER, + owner VARCHAR(255), + permission CHAR(15), + UNIQUE INDEX(org_id, group_id, repo_id), + INDEX (repo_id), INDEX (owner) +) ENGINE=INNODB; -CREATE TABLE `RepoOwner` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `repo_id` char(37) DEFAULT NULL, - `owner_id` varchar(255) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `repo_id` (`repo_id`), - KEY `owner_id` (`owner_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS OrgInnerPubRepo ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + org_id INTEGER, + repo_id CHAR(37), + UNIQUE INDEX(org_id, repo_id), + permission CHAR(15) +) ENGINE=INNODB; -CREATE TABLE `RepoSize` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `repo_id` char(37) DEFAULT NULL, - `size` bigint(20) unsigned DEFAULT NULL, - `head_id` char(41) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `repo_id` (`repo_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS OrgQuota ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + org_id INTEGER, + quota BIGINT, + UNIQUE INDEX(org_id) +) ENGINE=INNODB; -CREATE TABLE `RepoTokenPeerInfo` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `token` char(41) DEFAULT NULL, - `peer_id` char(41) DEFAULT NULL, - `peer_ip` varchar(41) DEFAULT NULL, - `peer_name` varchar(255) DEFAULT NULL, - `sync_time` bigint(20) DEFAULT NULL, - `client_ver` varchar(20) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `token` (`token`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS OrgRepo ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + org_id INTEGER, + repo_id CHAR(37), + user VARCHAR(255), + UNIQUE INDEX(org_id, repo_id), + UNIQUE INDEX (repo_id), + INDEX (org_id, user), + INDEX(user) +) ENGINE=INNODB; -CREATE TABLE `RepoTrash` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `repo_id` char(36) DEFAULT NULL, - `repo_name` varchar(255) DEFAULT NULL, - `head_id` char(40) DEFAULT NULL, - `owner_id` varchar(255) DEFAULT NULL, - `size` bigint(20) DEFAULT NULL, - `org_id` int(11) DEFAULT NULL, - `del_time` bigint(20) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `repo_id` (`repo_id`), - KEY `owner_id` (`owner_id`), - KEY `org_id` (`org_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS OrgSharedRepo ( + id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, + org_id INT, + repo_id CHAR(37) , + from_email VARCHAR(255), + to_email VARCHAR(255), + permission CHAR(15), + INDEX(repo_id), + INDEX (org_id, repo_id), + INDEX(from_email), INDEX(to_email) +) ENGINE=INNODB; -CREATE TABLE `RepoUserToken` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `repo_id` char(37) DEFAULT NULL, - `email` varchar(255) DEFAULT NULL, - `token` char(41) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `repo_id` (`repo_id`,`token`), - KEY `email` (`email`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS OrgUserQuota ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + org_id INTEGER, + user VARCHAR(255), + quota BIGINT, + UNIQUE INDEX(org_id, user) +) ENGINE=INNODB; -CREATE TABLE `RepoValidSince` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `repo_id` char(37) DEFAULT NULL, - `timestamp` bigint(20) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `repo_id` (`repo_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS Repo ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(37), + UNIQUE INDEX (repo_id) +) ENGINE=INNODB; -CREATE TABLE `SeafileConf` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `cfg_group` varchar(255) NOT NULL, - `cfg_key` varchar(255) NOT NULL, - `value` varchar(255) DEFAULT NULL, - `property` int(11) DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS RepoFileCount ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(36), + file_count BIGINT UNSIGNED, + UNIQUE INDEX(repo_id) +) ENGINE=INNODB; -CREATE TABLE `SharedRepo` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `repo_id` char(37) DEFAULT NULL, - `from_email` varchar(255) DEFAULT NULL, - `to_email` varchar(255) DEFAULT NULL, - `permission` char(15) DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `repo_id` (`repo_id`), - KEY `from_email` (`from_email`), - KEY `to_email` (`to_email`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS RepoGroup ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(37), + group_id INTEGER, + user_name VARCHAR(255), + permission CHAR(15), + UNIQUE INDEX(group_id, repo_id), + INDEX (repo_id), INDEX (user_name) +) ENGINE=INNODB; -CREATE TABLE `SystemInfo` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `info_key` varchar(256) DEFAULT NULL, - `info_value` varchar(1024) DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS RepoHead ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(37), + branch_name VARCHAR(10), + UNIQUE INDEX(repo_id) +) ENGINE=INNODB; -CREATE TABLE `UserQuota` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `user` varchar(255) DEFAULT NULL, - `quota` bigint(20) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `user` (`user`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS RepoHistoryLimit ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(37), + days INTEGER, + UNIQUE INDEX(repo_id) +) ENGINE=INNODB; -CREATE TABLE `UserShareQuota` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `user` varchar(255) DEFAULT NULL, - `quota` bigint(20) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `user` (`user`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS RepoInfo (id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(36), + name VARCHAR(255) NOT NULL, + update_time BIGINT, + version INTEGER, + is_encrypted INTEGER, + last_modifier VARCHAR(255), + status INTEGER DEFAULT 0, + UNIQUE INDEX(repo_id) +) ENGINE=INNODB; -CREATE TABLE `VirtualRepo` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `repo_id` char(36) DEFAULT NULL, - `origin_repo` char(36) DEFAULT NULL, - `path` text, - `base_commit` char(40) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `repo_id` (`repo_id`), - KEY `origin_repo` (`origin_repo`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS RepoOwner ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(37), + owner_id VARCHAR(255), + UNIQUE INDEX (repo_id), + INDEX (owner_id) +) ENGINE=INNODB; -CREATE TABLE `WebAP` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `repo_id` char(37) DEFAULT NULL, - `access_property` char(10) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `repo_id` (`repo_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS RepoSize ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(37), + size BIGINT UNSIGNED, + head_id CHAR(41), + UNIQUE INDEX (repo_id) +) ENGINE=INNODB; -CREATE TABLE `WebUploadTempFiles` ( - `repo_id` char(40) NOT NULL, - `file_path` text NOT NULL, - `tmp_file_path` text NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS RepoStorageId ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(40) NOT NULL, + storage_id VARCHAR(255) NOT NULL, + UNIQUE INDEX(repo_id) +) ENGINE=INNODB; + +CREATE TABLE IF NOT EXISTS RepoSyncError ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + token CHAR(41), + error_time BIGINT UNSIGNED, + error_con VARCHAR(1024), + UNIQUE INDEX(token) +) ENGINE=INNODB; + +CREATE TABLE IF NOT EXISTS RepoTokenPeerInfo ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + token CHAR(41), + peer_id CHAR(41), + peer_ip VARCHAR(41), + peer_name VARCHAR(255), + sync_time BIGINT, + client_ver VARCHAR(20), + UNIQUE INDEX(token) +) ENGINE=INNODB; + +CREATE TABLE IF NOT EXISTS RepoTrash ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(36), + repo_name VARCHAR(255), + head_id CHAR(40), + owner_id VARCHAR(255), + size BIGINT(20), + org_id INTEGER, + del_time BIGINT, + UNIQUE INDEX(repo_id), + INDEX(owner_id), + INDEX(org_id) +) ENGINE=INNODB; + +CREATE TABLE IF NOT EXISTS RepoUserToken ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(37), + email VARCHAR(255), + token CHAR(41), + UNIQUE INDEX(repo_id, token), + INDEX (email) +) ENGINE=INNODB; + +CREATE TABLE IF NOT EXISTS RepoValidSince ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(37), + timestamp BIGINT, + UNIQUE INDEX(repo_id) +) ENGINE=INNODB; + +CREATE TABLE IF NOT EXISTS RoleQuota ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + role VARCHAR(255), + quota BIGINT, + UNIQUE INDEX(role) +) ENGINE=INNODB; + +CREATE TABLE IF NOT EXISTS SeafileConf ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + cfg_group VARCHAR(255) NOT NULL, + cfg_key VARCHAR(255) NOT NULL, + value VARCHAR(255), + property INTEGER +) ENGINE=INNODB; + +CREATE TABLE IF NOT EXISTS SharedRepo ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(37) , + from_email VARCHAR(255), + to_email VARCHAR(255), + permission CHAR(15), + INDEX (repo_id), + INDEX(from_email), + INDEX(to_email) +) ENGINE=INNODB; + +CREATE TABLE IF NOT EXISTS SystemInfo ( + id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, + info_key VARCHAR(256), + info_value VARCHAR(1024) +); + +CREATE TABLE IF NOT EXISTS UserQuota ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + user VARCHAR(255), + quota BIGINT, + UNIQUE INDEX(user) +) ENGINE=INNODB; + +CREATE TABLE IF NOT EXISTS UserShareQuota ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + user VARCHAR(255), + quota BIGINT, + UNIQUE INDEX(user) +) ENGINE=INNODB; + +CREATE TABLE IF NOT EXISTS VirtualRepo ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(36), + origin_repo CHAR(36), + path TEXT, + base_commit CHAR(40), + UNIQUE INDEX(repo_id), + INDEX(origin_repo) +) ENGINE=INNODB; + +CREATE TABLE IF NOT EXISTS WebAP ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(37), + access_property CHAR(10), + UNIQUE INDEX(repo_id) +) ENGINE=INNODB; + +CREATE TABLE IF NOT EXISTS WebUploadTempFiles ( + id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, + repo_id CHAR(40) NOT NULL, + file_path TEXT NOT NULL, + tmp_file_path TEXT NOT NULL +) ENGINE=INNODB; diff --git a/scripts/sql/sqlite/config.sql b/scripts/sql/sqlite/config.sql index f96afb1..4c7a75c 100644 --- a/scripts/sql/sqlite/config.sql +++ b/scripts/sql/sqlite/config.sql @@ -1 +1 @@ -CREATE TABLE Config (key TEXT PRIMARY KEY, value TEXT); +CREATE TABLE IF NOT EXISTS Config (key TEXT PRIMARY KEY, value TEXT); diff --git a/scripts/sql/sqlite/groupmgr.sql b/scripts/sql/sqlite/groupmgr.sql index fcae1de..f0b6bdd 100644 --- a/scripts/sql/sqlite/groupmgr.sql +++ b/scripts/sql/sqlite/groupmgr.sql @@ -1,9 +1,7 @@ -CREATE TABLE `Group` (`group_id` INTEGER PRIMARY KEY AUTOINCREMENT, `group_name` VARCHAR(255), `creator_name` VARCHAR(255), `timestamp` BIGINT, `type` VARCHAR(32), `parent_group_id` INTEGER); +CREATE TABLE IF NOT EXISTS `Group` (`group_id` INTEGER PRIMARY KEY AUTOINCREMENT, `group_name` VARCHAR(255), `creator_name` VARCHAR(255), `timestamp` BIGINT, `type` VARCHAR(32), `parent_group_id` INTEGER); +CREATE TABLE IF NOT EXISTS `GroupUser` (`group_id` INTEGER, `user_name` VARCHAR(255), `is_staff` tinyint); +CREATE UNIQUE INDEX IF NOT EXISTS groupid_username_indx on `GroupUser` (`group_id`, `user_name`); +CREATE INDEX IF NOT EXISTS username_indx on `GroupUser` (`user_name`); +CREATE TABLE IF NOT EXISTS GroupDNPair (group_id INTEGER, dn VARCHAR(255)); +CREATE TABLE IF NOT EXISTS GroupStructure (group_id INTEGER PRIMARY KEY, path VARCHAR(1024)); -CREATE TABLE `GroupUser` (`group_id` INTEGER, `user_name` VARCHAR(255), `is_staff` tinyint); -CREATE UNIQUE INDEX groupid_username_indx on `GroupUser` (`group_id`, `user_name`); -CREATE INDEX username_indx on `GroupUser` (`user_name`); - -CREATE TABLE GroupDNPair (group_id INTEGER, dn VARCHAR(255)); - -CREATE TABLE GroupStructure (group_id INTEGER PRIMARY KEY, path VARCHAR(1024)); diff --git a/scripts/sql/sqlite/org.sql b/scripts/sql/sqlite/org.sql index 555720d..1fc1c80 100644 --- a/scripts/sql/sqlite/org.sql +++ b/scripts/sql/sqlite/org.sql @@ -1,10 +1,10 @@ -CREATE TABLE OrgGroup (org_id INTEGER, group_id INTEGER); -CREATE INDEX groupid_indx on OrgGroup (group_id); -CREATE UNIQUE INDEX org_group_indx on OrgGroup (org_id, group_id); +CREATE TABLE IF NOT EXISTS OrgGroup (org_id INTEGER, group_id INTEGER); +CREATE INDEX IF NOT EXISTS groupid_indx on OrgGroup (group_id); -CREATE TABLE Organization (org_id INTEGER PRIMARY KEY AUTOINCREMENT, org_name VARCHAR(255), url_prefix VARCHAR(255), creator VARCHAR(255), ctime BIGINT); -CREATE UNIQUE INDEX url_prefix_indx on Organization (url_prefix); -CREATE TABLE OrgUser (org_id INTEGER, email TEXT, is_staff bool NOT NULL); -CREATE INDEX email_indx on OrgUser (email); -CREATE UNIQUE INDEX orgid_email_indx on OrgUser (org_id, email); +CREATE TABLE IF NOT EXISTS Organization (org_id INTEGER PRIMARY KEY AUTOINCREMENT, org_name VARCHAR(255), url_prefix VARCHAR(255), creator VARCHAR(255), ctime BIGINT); +CREATE UNIQUE INDEX IF NOT EXISTS url_prefix_indx on Organization (url_prefix); + +CREATE TABLE IF NOT EXISTS OrgUser (org_id INTEGER, email TEXT, is_staff bool NOT NULL); +CREATE INDEX IF NOT EXISTS email_indx on OrgUser (email); +CREATE UNIQUE INDEX IF NOT EXISTS orgid_email_indx on OrgUser (org_id, email); diff --git a/scripts/sql/sqlite/seafile.sql b/scripts/sql/sqlite/seafile.sql index 789829a..de9e40d 100644 --- a/scripts/sql/sqlite/seafile.sql +++ b/scripts/sql/sqlite/seafile.sql @@ -1,61 +1,65 @@ -CREATE TABLE Branch (name VARCHAR(10), repo_id CHAR(41), commit_id CHAR(41),PRIMARY KEY (repo_id, name)); +CREATE TABLE IF NOT EXISTS Branch (name VARCHAR(10), repo_id CHAR(40), commit_id CHAR(40), PRIMARY KEY (repo_id, name)); +CREATE TABLE IF NOT EXISTS Repo (repo_id CHAR(37) PRIMARY KEY); +CREATE TABLE IF NOT EXISTS RepoOwner (repo_id CHAR(37) PRIMARY KEY, owner_id TEXT); +CREATE INDEX IF NOT EXISTS OwnerIndex ON RepoOwner (owner_id); -CREATE TABLE Repo (repo_id CHAR(37) PRIMARY KEY); +CREATE TABLE IF NOT EXISTS RepoGroup (repo_id CHAR(37), group_id INTEGER, user_name TEXT, permission CHAR(15)); +CREATE UNIQUE INDEX IF NOT EXISTS groupid_repoid_indx on RepoGroup (group_id, repo_id); +CREATE INDEX IF NOT EXISTS repogroup_repoid_index on RepoGroup (repo_id); +CREATE INDEX IF NOT EXISTS repogroup_username_indx on RepoGroup (user_name); +CREATE TABLE IF NOT EXISTS InnerPubRepo (repo_id CHAR(37) PRIMARY KEY, permission CHAR(15)); -CREATE TABLE RepoOwner (repo_id CHAR(37) PRIMARY KEY, owner_id TEXT); -CREATE INDEX OwnerIndex ON RepoOwner (owner_id); - -CREATE TABLE RepoGroup (repo_id CHAR(37), group_id INTEGER, user_name TEXT, permission CHAR(15)); -CREATE UNIQUE INDEX groupid_repoid_indx on RepoGroup (group_id, repo_id); -CREATE INDEX repogroup_repoid_index on RepoGroup (repo_id); -CREATE INDEX repogroup_username_indx on RepoGroup (user_name); - -CREATE TABLE InnerPubRepo (repo_id CHAR(37) PRIMARY KEY,permission CHAR(15)); - -CREATE TABLE RepoUserToken (repo_id CHAR(37), email VARCHAR(255), token CHAR(41)); -CREATE UNIQUE INDEX repo_token_indx on RepoUserToken (repo_id, token); -CREATE INDEX repo_token_email_indx on RepoUserToken (email); - -CREATE TABLE RepoTokenPeerInfo (token CHAR(41) PRIMARY KEY, peer_id CHAR(41), peer_ip VARCHAR(41), peer_name VARCHAR(255), sync_time BIGINT, client_ver VARCHAR(20)); - -CREATE TABLE RepoHead (repo_id CHAR(37) PRIMARY KEY, branch_name VARCHAR(10)); - -CREATE TABLE RepoSize (repo_id CHAR(37) PRIMARY KEY,size BIGINT UNSIGNED,head_id CHAR(41)); - -CREATE TABLE RepoHistoryLimit (repo_id CHAR(37) PRIMARY KEY, days INTEGER); - -CREATE TABLE RepoValidSince (repo_id CHAR(37) PRIMARY KEY, timestamp BIGINT); - -CREATE TABLE WebAP (repo_id CHAR(37) PRIMARY KEY, access_property CHAR(10)); - -CREATE TABLE VirtualRepo (repo_id CHAR(36) PRIMARY KEY,origin_repo CHAR(36), path TEXT, base_commit CHAR(40)); -CREATE INDEX virtualrepo_origin_repo_idx ON VirtualRepo (origin_repo); - -CREATE TABLE GarbageRepos (repo_id CHAR(36) PRIMARY KEY); - -CREATE TABLE RepoTrash (repo_id CHAR(36) PRIMARY KEY,repo_name VARCHAR(255), head_id CHAR(40), owner_id VARCHAR(255), size BIGINT UNSIGNED,org_id INTEGER, del_time BIGINT); -CREATE INDEX repotrash_owner_id_idx ON RepoTrash(owner_id); -CREATE INDEX repotrash_org_id_idx ON RepoTrash(org_id); - -CREATE TABLE RepoFileCount (repo_id CHAR(36) PRIMARY KEY,file_count BIGINT UNSIGNED); - -CREATE TABLE RepoInfo (repo_id CHAR(36) PRIMARY KEY, name VARCHAR(255) NOT NULL, update_time INTEGER, version INTEGER, is_encrypted INTEGER, last_modifier VARCHAR(255), status INTEGER DEFAULT 0); - -CREATE TABLE UserQuota (user VARCHAR(255) PRIMARY KEY,quota BIGINT); - -CREATE TABLE UserShareQuota (user VARCHAR(255) PRIMARY KEY,quota BIGINT); - -CREATE TABLE OrgQuota (org_id INTEGER PRIMARY KEY,quota BIGINT); - -CREATE TABLE OrgUserQuota (org_id INTEGER,user VARCHAR(255), quota BIGINT, PRIMARY KEY (org_id, user)); - -CREATE TABLE SeafileConf (cfg_group VARCHAR(255) NOT NULL,cfg_key VARCHAR(255) NOT NULL, value VARCHAR(255), property INTEGER); - -CREATE TABLE SharedRepo (repo_id CHAR(37) , from_email VARCHAR(255), to_email VARCHAR(255), permission CHAR(15)); -CREATE INDEX RepoIdIndex on SharedRepo (repo_id); -CREATE INDEX FromEmailIndex on SharedRepo (from_email); -CREATE INDEX ToEmailIndex on SharedRepo (to_email); - -CREATE TABLE SystemInfo( info_key VARCHAR(256), info_value VARCHAR(1024)); - -CREATE TABLE WebUploadTempFiles (repo_id CHAR(40) NOT NULL, file_path TEXT NOT NULL, tmp_file_path TEXT NOT NULL); +CREATE TABLE IF NOT EXISTS OrgRepo (org_id INTEGER, repo_id CHAR(37), user VARCHAR(255)); +CREATE UNIQUE INDEX IF NOT EXISTS repoid_indx on OrgRepo (repo_id); +CREATE INDEX IF NOT EXISTS orgid_repoid_indx on OrgRepo (org_id, repo_id); +CREATE INDEX IF NOT EXISTS orgrepo_orgid_user_indx on OrgRepo (org_id, user); +CREATE INDEX IF NOT EXISTS orgrepo_user_indx on OrgRepo (user); +CREATE TABLE IF NOT EXISTS OrgGroupRepo (org_id INTEGER, repo_id CHAR(37), group_id INTEGER, owner VARCHAR(255), permission CHAR(15)); +CREATE UNIQUE INDEX IF NOT EXISTS orgid_groupid_repoid_indx on OrgGroupRepo (org_id, group_id, repo_id); +CREATE INDEX IF NOT EXISTS org_repoid_index on OrgGroupRepo (repo_id); +CREATE INDEX IF NOT EXISTS org_owner_indx on OrgGroupRepo (owner); +CREATE TABLE IF NOT EXISTS OrgInnerPubRepo (org_id INTEGER, repo_id CHAR(37), permission CHAR(15), PRIMARY KEY (org_id, repo_id)); +CREATE TABLE IF NOT EXISTS RepoUserToken (repo_id CHAR(37), email VARCHAR(255), token CHAR(41)); +CREATE UNIQUE INDEX IF NOT EXISTS repo_token_indx on RepoUserToken (repo_id, token); +CREATE INDEX IF NOT EXISTS repo_token_email_indx on RepoUserToken (email); +CREATE TABLE IF NOT EXISTS RepoTokenPeerInfo (token CHAR(41) PRIMARY KEY, peer_id CHAR(41), peer_ip VARCHAR(41), peer_name VARCHAR(255), sync_time BIGINT, client_ver VARCHAR(20)); +CREATE TABLE IF NOT EXISTS RepoSyncError (token CHAR(41) PRIMARY KEY, error_time BIGINT, error_con VARCHAR(1024)); +CREATE TABLE IF NOT EXISTS RepoHead (repo_id CHAR(37) PRIMARY KEY, branch_name VARCHAR(10)); +CREATE TABLE IF NOT EXISTS RepoSize (repo_id CHAR(37) PRIMARY KEY, size BIGINT UNSIGNED, head_id CHAR(41)); +CREATE TABLE IF NOT EXISTS RepoHistoryLimit (repo_id CHAR(37) PRIMARY KEY, days INTEGER); +CREATE TABLE IF NOT EXISTS RepoValidSince (repo_id CHAR(37) PRIMARY KEY, timestamp BIGINT); +CREATE TABLE IF NOT EXISTS WebAP (repo_id CHAR(37) PRIMARY KEY, access_property CHAR(10)); +CREATE TABLE IF NOT EXISTS VirtualRepo (repo_id CHAR(36) PRIMARY KEY, origin_repo CHAR(36), path TEXT, base_commit CHAR(40)); +CREATE INDEX IF NOT EXISTS virtualrepo_origin_repo_idx ON VirtualRepo (origin_repo); +CREATE TABLE IF NOT EXISTS GarbageRepos (repo_id CHAR(36) PRIMARY KEY); +CREATE TABLE IF NOT EXISTS RepoTrash (repo_id CHAR(36) PRIMARY KEY, repo_name VARCHAR(255), head_id CHAR(40), owner_id VARCHAR(255), size BIGINT UNSIGNED, org_id INTEGER, del_time BIGINT); +CREATE INDEX IF NOT EXISTS repotrash_owner_id_idx ON RepoTrash(owner_id); +CREATE INDEX IF NOT EXISTS repotrash_org_id_idx ON RepoTrash(org_id); +CREATE TABLE IF NOT EXISTS RepoFileCount (repo_id CHAR(36) PRIMARY KEY, file_count BIGINT UNSIGNED); +CREATE TABLE IF NOT EXISTS FolderUserPerm (repo_id CHAR(36) NOT NULL, path TEXT NOT NULL, permission CHAR(15), user VARCHAR(255) NOT NULL); +CREATE INDEX IF NOT EXISTS folder_user_perm_idx ON FolderUserPerm(repo_id); +CREATE TABLE IF NOT EXISTS FolderGroupPerm (repo_id CHAR(36) NOT NULL, path TEXT NOT NULL, permission CHAR(15), group_id INTEGER NOT NULL); +CREATE INDEX IF NOT EXISTS folder_group_perm_idx ON FolderGroupPerm(repo_id); +CREATE TABLE IF NOT EXISTS FolderPermTimestamp (repo_id CHAR(36) PRIMARY KEY, timestamp INTEGER); +CREATE TABLE IF NOT EXISTS WebUploadTempFiles (repo_id CHAR(40) NOT NULL, file_path TEXT NOT NULL, tmp_file_path TEXT NOT NULL); +CREATE TABLE IF NOT EXISTS RepoInfo (repo_id CHAR(36) PRIMARY KEY, name VARCHAR(255) NOT NULL, update_time INTEGER, version INTEGER, is_encrypted INTEGER, last_modifier VARCHAR(255), status INTEGER DEFAULT 0); +CREATE TABLE IF NOT EXISTS RepoStorageId (repo_id CHAR(40) NOT NULL, storage_id VARCHAR(255) NOT NULL); +CREATE TABLE IF NOT EXISTS UserQuota (user VARCHAR(255) PRIMARY KEY, quota BIGINT); +CREATE TABLE IF NOT EXISTS UserShareQuota (user VARCHAR(255) PRIMARY KEY, quota BIGINT); +CREATE TABLE IF NOT EXISTS OrgQuota (org_id INTEGER PRIMARY KEY, quota BIGINT); +CREATE TABLE IF NOT EXISTS OrgUserQuota (org_id INTEGER, user VARCHAR(255), quota BIGINT, PRIMARY KEY (org_id, user)); +CREATE TABLE IF NOT EXISTS RoleQuota (role VARCHAR(255) PRIMARY KEY, quota BIGINT); +CREATE TABLE IF NOT EXISTS SeafileConf (cfg_group VARCHAR(255) NOT NULL, cfg_key VARCHAR(255) NOT NULL, value VARCHAR(255), property INTEGER); +CREATE TABLE IF NOT EXISTS FileLocks (repo_id CHAR(40) NOT NULL, path TEXT NOT NULL, user_name VARCHAR(255) NOT NULL, lock_time BIGINT, expire BIGINT); +CREATE INDEX IF NOT EXISTS FileLocksIndex ON FileLocks (repo_id); +CREATE TABLE IF NOT EXISTS FileLockTimestamp (repo_id CHAR(40) PRIMARY KEY, update_time BIGINT NOT NULL); +CREATE TABLE IF NOT EXISTS SharedRepo (repo_id CHAR(37) , from_email VARCHAR(255), to_email VARCHAR(255), permission CHAR(15)); +CREATE INDEX IF NOT EXISTS RepoIdIndex on SharedRepo (repo_id); +CREATE INDEX IF NOT EXISTS FromEmailIndex on SharedRepo (from_email); +CREATE INDEX IF NOT EXISTS ToEmailIndex on SharedRepo (to_email); +CREATE TABLE IF NOT EXISTS OrgSharedRepo (org_id INTEGER, repo_id CHAR(37) , from_email VARCHAR(255), to_email VARCHAR(255), permission CHAR(15)); +CREATE INDEX IF NOT EXISTS OrgRepoIdIndex on OrgSharedRepo (org_id, repo_id); +CREATE INDEX IF NOT EXISTS OrgFromEmailIndex on OrgSharedRepo (from_email); +CREATE INDEX IF NOT EXISTS OrgToEmailIndex on OrgSharedRepo (to_email); +CREATE INDEX IF NOT EXISTS OrgLibIdIndex on OrgSharedRepo (repo_id); +CREATE TABLE IF NOT EXISTS SystemInfo (info_key VARCHAR(256), info_value VARCHAR(1024)); diff --git a/scripts/sql/sqlite/user.sql b/scripts/sql/sqlite/user.sql index 2706c10..af86cf7 100644 --- a/scripts/sql/sqlite/user.sql +++ b/scripts/sql/sqlite/user.sql @@ -1,16 +1,16 @@ -CREATE TABLE Binding (email TEXT, peer_id TEXT); -CREATE UNIQUE INDEX peer_index on Binding (peer_id); +CREATE TABLE IF NOT EXISTS Binding (email TEXT, peer_id TEXT); +CREATE UNIQUE INDEX IF NOT EXISTS peer_index on Binding (peer_id); -CREATE TABLE EmailUser (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,email TEXT, passwd TEXT, is_staff bool NOT NULL, is_active bool NOT NULL, ctime INTEGER, reference_id TEXT); -CREATE UNIQUE INDEX email_index on EmailUser (email); -CREATE UNIQUE INDEX reference_id_index on EmailUser (reference_id); +CREATE TABLE IF NOT EXISTS EmailUser (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, email TEXT, passwd TEXT, is_staff bool NOT NULL, is_active bool NOT NULL, ctime INTEGER, reference_id TEXT); +CREATE UNIQUE INDEX IF NOT EXISTS email_index on EmailUser (email); +CREATE UNIQUE INDEX IF NOT EXISTS reference_id_index on EmailUser (reference_id); -CREATE TABLE LDAPConfig (cfg_group VARCHAR(255) NOT NULL,cfg_key VARCHAR(255) NOT NULL, value VARCHAR(255), property INTEGER); +CREATE TABLE IF NOT EXISTS LDAPConfig (cfg_group VARCHAR(255) NOT NULL, cfg_key VARCHAR(255) NOT NULL, value VARCHAR(255), property INTEGER); -CREATE TABLE LDAPUsers (id INTEGER PRIMARY KEY AUTOINCREMENT, email TEXT NOT NULL, password TEXT NOT NULL, is_staff BOOL NOT NULL, is_active BOOL NOT NULL, extra_attrs TEXT, reference_id TEXT); -CREATE UNIQUE INDEX ldapusers_email_index on LDAPUsers(email); -CREATE UNIQUE INDEX ldapusers_reference_id_index on LDAPUsers(reference_id); +CREATE TABLE IF NOT EXISTS LDAPUsers (id INTEGER PRIMARY KEY AUTOINCREMENT, email TEXT NOT NULL, password TEXT NOT NULL, is_staff BOOL NOT NULL, is_active BOOL NOT NULL, extra_attrs TEXT, reference_id TEXT); +CREATE UNIQUE INDEX IF NOT EXISTS ldapusers_email_index on LDAPUsers(email); +CREATE UNIQUE INDEX IF NOT EXISTS ldapusers_reference_id_index on LDAPUsers(reference_id); -CREATE TABLE UserRole (email TEXT, role TEXT); -CREATE INDEX userrole_email_index on UserRole (email); -CREATE UNIQUE INDEX userrole_userrole_index on UserRole (email, role); +CREATE TABLE IF NOT EXISTS UserRole (email TEXT, role TEXT, is_manual_set INTEGER DEFAULT 0); +CREATE INDEX IF NOT EXISTS userrole_email_index on UserRole (email); +CREATE UNIQUE INDEX IF NOT EXISTS userrole_userrole_index on UserRole (email, role);