Files
sysPass/schemas/30018010101.sql
2018-03-19 12:32:20 +01:00

756 lines
28 KiB
SQL

SET FOREIGN_KEY_CHECKS=0;
CREATE TABLE `CustomFieldType` (
`id` TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`text` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_CustomFieldType_01` (`name`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
INSERT INTO CustomFieldType (id, name, text)
VALUES (1, 'text', 'Texto'), (2, 'password', 'Clave'), (3, 'date', 'Fecha'), (4, 'number', 'Número'),
(5, 'email', 'Email'), (6, 'telephone', 'Teléfono'), (7, 'url', 'URL'), (8, 'color', 'Color'), (9, 'wiki', 'Wiki'),
(10, 'textarea', 'Área de texto');
-- Foreign Keys;
ALTER TABLE accFavorites
DROP FOREIGN KEY `fk_accFavorites_users_id`,
DROP FOREIGN KEY `fk_accFavorites_accounts_id`;
ALTER TABLE accHistory
DROP FOREIGN KEY fk_accHistory_userGroup_id,
DROP FOREIGN KEY fk_accHistory_users_id,
DROP FOREIGN KEY fk_accHistory_users_edit_id,
DROP FOREIGN KEY fk_accHistory_customer_id,
DROP FOREIGN KEY fk_accHistory_category_id;
ALTER TABLE usrData
DROP FOREIGN KEY fk_usrData_profiles_id,
DROP FOREIGN KEY fk_usrData_groups_id,
DROP INDEX fk_usrData_groups_id_idx,
DROP INDEX fk_usrData_profiles_id_idx;
ALTER TABLE accounts
DROP FOREIGN KEY fk_accounts_userGroup_id,
DROP FOREIGN KEY fk_accounts_user_id,
DROP FOREIGN KEY fk_accounts_user_edit_id,
DROP FOREIGN KEY fk_accounts_customer_id,
DROP FOREIGN KEY fk_accounts_category_id,
DROP INDEX fk_accounts_user_id,
DROP INDEX fk_accounts_user_edit_id;
ALTER TABLE accTags
DROP FOREIGN KEY fk_accTags_accounts_id,
DROP FOREIGN KEY fk_accTags_tags_id,
DROP INDEX IDX_id,
DROP INDEX fk_accTags_tags_id_idx;
ALTER TABLE accUsers
DROP FOREIGN KEY fk_accUsers_accounts_id,
DROP FOREIGN KEY fk_accUsers_users_id,
DROP INDEX fk_accUsers_users_id_idx;
ALTER TABLE accGroups
DROP FOREIGN KEY fk_accGroups_accounts_id,
DROP FOREIGN KEY fk_accGroups_groups_id,
DROP INDEX fk_accGroups_groups_id_idx;
ALTER TABLE accHistory
DROP INDEX fk_accHistory_userGroup_id,
DROP INDEX fk_accHistory_users_id,
DROP INDEX fk_accHistory_users_edit_id_idx,
DROP INDEX fk_accHistory_customers_id,
DROP INDEX fk_accHistory_categories_id;
ALTER TABLE accFiles
DROP FOREIGN KEY fk_accFiles_accounts_id;
ALTER TABLE authTokens
DROP FOREIGN KEY fk_authTokens_user_id,
DROP FOREIGN KEY fk_authTokens_createdBy_id,
DROP INDEX fk_authTokens_user_id,
DROP INDEX fk_authTokens_users_createdby_id;
ALTER TABLE usrPassRecover
DROP FOREIGN KEY fk_usrPassRecover_users;
ALTER TABLE usrToGroups
DROP FOREIGN KEY fk_usrToGroups_groups_id,
DROP FOREIGN KEY fk_usrToGroups_users_id,
DROP INDEX fk_usrToGroups_groups_id_idx;
ALTER TABLE customFieldsData
DROP FOREIGN KEY fk_customFieldsData_def_id;
-- CustomFieldData;
ALTER TABLE customFieldsData
CHANGE customfielddata_defId definitionId INT(10) UNSIGNED NOT NULL,
CHANGE customfielddata_id id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
CHANGE customfielddata_moduleId moduleId SMALLINT(5) UNSIGNED NOT NULL,
CHANGE customfielddata_itemId itemId INT(10) UNSIGNED NOT NULL,
CHANGE customfielddata_data data LONGBLOB,
CHANGE customfielddata_key `key` VARBINARY(1000),
DROP INDEX IDX_DEFID,
ADD INDEX idx_CustomFieldData_01 (definitionId ASC),
DROP INDEX IDX_DELETE,
ADD INDEX idx_CustomFieldData_02 (itemId ASC, moduleId ASC),
DROP INDEX IDX_UPDATE,
DROP INDEX IDX_MODULE,
ADD INDEX idx_CustomFieldData_03 (moduleId ASC),
ADD INDEX uk_CustomFieldData_01 (moduleId ASC, itemId ASC, definitionId ASC),
DROP INDEX IDX_ITEM,
RENAME TO CustomFieldData;
-- CustomFieldDefinition;
ALTER TABLE customFieldsDef
ADD required TINYINT(1) UNSIGNED NULL,
ADD help VARCHAR(255) NULL,
ADD showInList TINYINT(1) UNSIGNED NULL,
ADD name VARCHAR(100) NOT NULL
AFTER id,
ADD typeId TINYINT UNSIGNED NOT NULL,
CHANGE customfielddef_id id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
CHANGE customfielddef_module moduleId SMALLINT(5) UNSIGNED NOT NULL,
CHANGE customfielddef_field field BLOB NULL,
RENAME TO CustomFieldDefinition;
-- EventLog;
ALTER TABLE log
CHANGE log_id id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
CHANGE log_date date INT(10) UNSIGNED NOT NULL,
CHANGE log_login login VARCHAR(25),
CHANGE log_userId userId SMALLINT(5) UNSIGNED,
CHANGE log_ipAddress ipAddress VARCHAR(45) NOT NULL,
CHANGE log_action action VARCHAR(50) NOT NULL,
CHANGE log_description description TEXT,
CHANGE log_level level VARCHAR(20) NOT NULL,
DROP INDEX `fk_log_users_id_idx`,
RENAME TO EventLog;
-- Track;
ALTER TABLE track
CHANGE track_id id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
CHANGE track_userId userId SMALLINT(5) UNSIGNED,
CHANGE track_source source VARCHAR(100) NOT NULL,
CHANGE track_time time INT(10) UNSIGNED NOT NULL,
CHANGE track_ipv4 ipv4 BINARY(4) NOT NULL,
CHANGE track_ipv6 ipv6 BINARY(16),
DROP INDEX IDX_userId,
ADD INDEX idx_Track_01 (userId ASC),
DROP INDEX `IDX_time-ip-source`,
ADD INDEX `idx_Track_02` (time ASC, ipv4 ASC, ipv6 ASC, source ASC),
RENAME TO Track;
-- AccountFile;
ALTER TABLE accFiles
CHANGE accfile_accountId accountId MEDIUMINT(5) UNSIGNED NOT NULL,
CHANGE accfile_id id INT(11) NOT NULL AUTO_INCREMENT,
CHANGE accfile_name name VARCHAR(100) NOT NULL,
CHANGE accfile_type type VARCHAR(100) NOT NULL,
CHANGE accfile_size size INT(11) NOT NULL,
CHANGE accfile_content content MEDIUMBLOB NOT NULL,
CHANGE accfile_extension extension VARCHAR(10) NOT NULL,
CHANGE accFile_thumb thumb MEDIUMBLOB,
DROP INDEX IDX_accountId,
ADD INDEX idx_AccountFile_01 (accountId ASC),
RENAME TO AccountFile;
-- User;
ALTER TABLE usrData
DROP user_secGroupId,
CHANGE user_id id SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
CHANGE user_name name VARCHAR(80) NOT NULL,
CHANGE user_groupId userGroupId SMALLINT(5) UNSIGNED NOT NULL,
CHANGE user_login login VARCHAR(50) NOT NULL,
ADD ssoLogin VARCHAR(100) NULL
AFTER login,
CHANGE user_pass pass VARBINARY(1000) NOT NULL,
CHANGE user_mPass mPass VARBINARY(1000) DEFAULT NULL,
CHANGE user_mKey mKey VARBINARY(1000) DEFAULT NULL,
CHANGE user_email email VARCHAR(80),
CHANGE user_notes notes TEXT,
CHANGE user_count loginCount INT(10) UNSIGNED NOT NULL DEFAULT '0',
CHANGE user_profileId userProfileId SMALLINT(5) UNSIGNED NOT NULL,
CHANGE user_lastLogin lastLogin DATETIME,
CHANGE user_lastUpdate lastUpdate DATETIME,
CHANGE user_lastUpdateMPass lastUpdateMPass INT(11) UNSIGNED NOT NULL DEFAULT '0',
CHANGE user_isAdminApp isAdminApp TINYINT(1) DEFAULT 0,
CHANGE user_isAdminAcc isAdminAcc TINYINT(1) DEFAULT 0,
CHANGE user_isLdap isLdap TINYINT(1) DEFAULT 0,
CHANGE user_isDisabled isDisabled TINYINT(1) DEFAULT 0,
CHANGE user_hashSalt hashSalt VARBINARY(128) NOT NULL,
CHANGE user_isMigrate isMigrate TINYINT(1) DEFAULT 0,
CHANGE user_isChangePass isChangePass TINYINT(1) DEFAULT 0,
CHANGE user_isChangedPass isChangedPass TINYINT(1) DEFAULT 0,
CHANGE user_preferences preferences BLOB,
DROP INDEX IDX_pass,
ADD INDEX idx_User_01 (pass ASC),
DROP INDEX IDX_login,
ADD UNIQUE INDEX `uk_User_01` (`login`, `ssoLogin`),
RENAME TO User;
-- UserProfile;
ALTER TABLE usrProfiles
CHANGE userprofile_id id SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
CHANGE userprofile_name name VARCHAR(45) NOT NULL,
CHANGE userProfile_profile profile BLOB NOT NULL,
RENAME TO UserProfile;
-- Notice;
ALTER TABLE notices
CHANGE notice_id id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
CHANGE notice_type type VARCHAR(100),
CHANGE notice_component component VARCHAR(100) NOT NULL,
CHANGE notice_description description VARCHAR(500) NOT NULL,
CHANGE notice_date date INT(10) UNSIGNED NOT NULL,
CHANGE notice_checked checked TINYINT(1) DEFAULT 0,
CHANGE notice_userId userId SMALLINT(5) UNSIGNED,
CHANGE notice_sticky sticky TINYINT(1) DEFAULT 0,
CHANGE notice_onlyAdmin onlyAdmin TINYINT(1) DEFAULT 0,
DROP INDEX IDX_userId,
ADD INDEX idx_Notification_01 (userId ASC, checked ASC, date ASC),
DROP INDEX IDX_component,
ADD INDEX idx_Notification_02 (component ASC, date ASC, checked ASC, userId ASC),
RENAME TO Notification;
-- Plugin;
ALTER TABLE plugins
CHANGE plugin_id id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
CHANGE plugin_name name VARCHAR(100) NOT NULL,
CHANGE plugin_data data VARBINARY(5000),
CHANGE plugin_enabled enabled TINYINT(1) NOT NULL DEFAULT 0,
ADD available TINYINT(1) DEFAULT 0,
DROP INDEX plugin_name_UNIQUE,
ADD UNIQUE INDEX uk_Plugin_01 (name ASC),
RENAME TO Plugin;
-- PublicLink;
ALTER TABLE publicLinks
ADD COLUMN `userId` SMALLINT(5) UNSIGNED NOT NULL,
ADD COLUMN `typeId` INT(10) UNSIGNED NOT NULL
AFTER `userId`,
ADD COLUMN `notify` TINYINT(1) NULL DEFAULT 0
AFTER `typeId`,
ADD COLUMN `dateAdd` INT UNSIGNED NOT NULL
AFTER `notify`,
ADD COLUMN `dateExpire` INT UNSIGNED NOT NULL
AFTER `dateAdd`,
ADD COLUMN `dateUpdate` INT UNSIGNED NOT NULL
AFTER `dateExpire`,
ADD COLUMN `countViews` SMALLINT(5) UNSIGNED NULL DEFAULT 0
AFTER `dateUpdate`,
ADD COLUMN `totalCountViews` MEDIUMINT UNSIGNED NULL DEFAULT 0
AFTER `countViews`,
ADD COLUMN `maxCountViews` SMALLINT(5) UNSIGNED NOT NULL DEFAULT 0
AFTER `totalCountViews`,
ADD COLUMN `useinfo` BLOB NULL
AFTER `maxCountViews`,
CHANGE publicLink_id id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
CHANGE publicLink_itemId itemId INT(10) UNSIGNED NOT NULL,
CHANGE publicLink_hash `hash` VARBINARY(100) NOT NULL,
CHANGE publicLink_linkData `data` LONGBLOB,
DROP INDEX IDX_hash,
ADD UNIQUE INDEX uk_PublicLink_01 (`hash` ASC),
DROP INDEX unique_publicLink_accountId,
ADD UNIQUE INDEX uk_PublicLink_02 (itemId ASC),
DROP INDEX IDX_itemId,
DROP INDEX unique_publicLink_hash,
RENAME TO PublicLink;
-- Category;
ALTER TABLE categories
CHANGE category_id id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
CHANGE category_name name VARCHAR(50) NOT NULL,
CHANGE category_hash hash VARBINARY(40) NOT NULL,
CHANGE category_description description VARCHAR(255),
ADD UNIQUE INDEX uk_Category_01 (`hash` ASC),
RENAME TO Category;
-- Config;
ALTER TABLE config
CHANGE config_parameter parameter VARCHAR(50) NOT NULL,
CHANGE config_value VALUE VARCHAR(4000),
DROP INDEX vacParameter,
ADD PRIMARY KEY (parameter),
RENAME TO Config;
-- Customer;
ALTER TABLE customers
CHANGE customer_id id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
CHANGE customer_name name VARCHAR(100) NOT NULL,
CHANGE customer_hash hash VARBINARY(40) NOT NULL,
CHANGE customer_description description VARCHAR(255),
ADD `isGlobal` TINYINT(1) DEFAULT 0,
ADD INDEX uk_Client_01 (`hash` ASC),
DROP INDEX IDX_name,
RENAME TO Client;
-- Account;
ALTER TABLE accounts
CHANGE account_id id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
CHANGE account_userGroupId userGroupId SMALLINT(5) UNSIGNED NOT NULL,
CHANGE account_userId userId SMALLINT(5) UNSIGNED NOT NULL,
CHANGE account_userEditId userEditId SMALLINT(5) UNSIGNED NOT NULL,
CHANGE account_customerId clientId MEDIUMINT(8) UNSIGNED NOT NULL,
CHANGE account_name name VARCHAR(50) NOT NULL,
CHANGE account_categoryId categoryId MEDIUMINT UNSIGNED NOT NULL,
CHANGE account_login login VARCHAR(50),
CHANGE account_url url VARCHAR(255),
CHANGE account_pass pass VARBINARY(1000) NOT NULL,
CHANGE account_key `key` VARBINARY(1000) NOT NULL,
CHANGE account_notes notes TEXT,
CHANGE account_countView countView INT(10) UNSIGNED NOT NULL DEFAULT 0,
CHANGE account_countDecrypt countDecrypt INT(10) UNSIGNED NOT NULL DEFAULT 0,
CHANGE account_dateAdd dateAdd DATETIME NOT NULL,
CHANGE account_dateEdit dateEdit DATETIME,
CHANGE account_otherGroupEdit otherUserGroupEdit TINYINT(1) DEFAULT 0,
CHANGE account_otherUserEdit otherUserEdit TINYINT(1) DEFAULT 0,
CHANGE account_isPrivate isPrivate TINYINT(1) DEFAULT 0,
CHANGE account_isPrivateGroup isPrivateGroup TINYINT(1) DEFAULT 0,
CHANGE account_passDate passDate INT(11) UNSIGNED,
CHANGE account_passDateChange passDateChange INT(11) UNSIGNED,
CHANGE account_parentId parentId MEDIUMINT UNSIGNED,
DROP INDEX IDX_categoryId,
ADD INDEX idx_Account_01 (`categoryId` ASC),
DROP INDEX IDX_userId,
ADD INDEX idx_Account_02 (`userGroupId` ASC, `userId` ASC),
DROP INDEX IDX_customerId,
ADD INDEX idx_Account_03 (`clientId` ASC),
DROP INDEX account_parentId,
ADD INDEX idx_Account_04 (`parentId` ASC),
DROP INDEX IDX_parentId,
RENAME TO Account;
-- AccountToFavorite;
ALTER TABLE accFavorites
DROP INDEX fk_accFavorites_users_idx,
DROP INDEX fk_accFavorites_accounts_idx,
CHANGE accfavorite_accountId accountId MEDIUMINT UNSIGNED NOT NULL,
CHANGE accfavorite_userId userId SMALLINT(5) UNSIGNED NOT NULL,
DROP INDEX search_idx,
ADD INDEX idx_AccountToFavorite_01 (accountId ASC, userId ASC),
RENAME TO AccountToFavorite;
-- AccountHistory;
ALTER TABLE accHistory
CHANGE acchistory_id id INT(11) NOT NULL AUTO_INCREMENT,
CHANGE acchistory_accountId accountId MEDIUMINT UNSIGNED NOT NULL,
CHANGE acchistory_userGroupId userGroupId SMALLINT(5) UNSIGNED NOT NULL,
CHANGE acchistory_userId userId SMALLINT(5) UNSIGNED NOT NULL,
CHANGE acchistory_userEditId userEditId SMALLINT(5) UNSIGNED NOT NULL,
CHANGE acchistory_customerId clientId MEDIUMINT UNSIGNED NOT NULL,
CHANGE acchistory_name name VARCHAR(255) NOT NULL,
CHANGE acchistory_categoryId categoryId MEDIUMINT UNSIGNED NOT NULL,
CHANGE acchistory_login login VARCHAR(50),
CHANGE acchistory_url url VARCHAR(255),
CHANGE acchistory_pass pass VARBINARY(1000) NOT NULL,
CHANGE acchistory_key `key` VARBINARY(1000) NOT NULL,
CHANGE acchistory_notes notes TEXT NOT NULL,
CHANGE acchistory_countView countView INT(10) UNSIGNED NOT NULL DEFAULT 0,
CHANGE acchistory_countDecrypt countDecrypt INT(10) UNSIGNED NOT NULL DEFAULT 0,
CHANGE acchistory_dateAdd dateAdd DATETIME NOT NULL,
CHANGE acchistory_dateEdit dateEdit DATETIME,
CHANGE acchistory_isModify isModify TINYINT(1) DEFAULT 0,
CHANGE acchistory_isDeleted isDeleted TINYINT(1) DEFAULT 0,
CHANGE acchistory_mPassHash mPassHash VARBINARY(255) NOT NULL,
CHANGE accHistory_otherUserEdit otherUserEdit TINYINT(1) DEFAULT 0,
CHANGE accHistory_otherGroupEdit otherUserGroupEdit TINYINT(1) DEFAULT 0,
CHANGE accHistory_passDate passDate INT(10) UNSIGNED,
CHANGE accHistory_passDateChange passDateChange INT(10) UNSIGNED,
CHANGE accHistory_parentId parentId MEDIUMINT UNSIGNED,
CHANGE accHistory_isPrivate isPrivate TINYINT(1) DEFAULT 0,
CHANGE accHistory_isPrivateGroup isPrivateGroup TINYINT(1) DEFAULT 0,
DROP INDEX IDX_accountId,
ADD INDEX idx_AccountHistory_01 (accountId ASC),
DROP INDEX acchistory_parentId,
ADD INDEX idx_AccountHistory_02 (parentId ASC),
RENAME TO AccountHistory;
-- Tag;
ALTER TABLE tags
CHANGE tag_id id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
CHANGE tag_name name VARCHAR(45) NOT NULL,
CHANGE tag_hash hash VARBINARY(40) NOT NULL,
DROP INDEX tag_hash_UNIQUE,
ADD UNIQUE INDEX uk_Tag_01 (`hash` ASC),
DROP INDEX IDX_name,
ADD INDEX idx_Tag_01 (`name` ASC),
RENAME TO Tag;
-- AccountToTag;
ALTER TABLE accTags
CHANGE acctag_accountId accountId MEDIUMINT UNSIGNED NOT NULL,
CHANGE acctag_tagId tagId INT(10) UNSIGNED NOT NULL,
RENAME TO AccountToTag;
-- AccountToUserGroup;
ALTER TABLE accGroups
CHANGE accgroup_accountId accountId MEDIUMINT UNSIGNED NOT NULL,
CHANGE accgroup_groupId userGroupId SMALLINT(5) UNSIGNED NOT NULL,
DROP INDEX IDX_accountId,
ADD INDEX idx_AccountToUserGroup_01 (`accountId` ASC),
RENAME TO AccountToUserGroup;
-- AccountToUser;
ALTER TABLE accUsers
CHANGE accuser_accountId accountId MEDIUMINT UNSIGNED NOT NULL,
CHANGE accuser_userId userId SMALLINT(5) UNSIGNED NOT NULL,
DROP INDEX idx_account,
ADD INDEX idx_AccountToUser_01 (accountId ASC),
RENAME TO AccountToUser;
-- UserToUserGroup;
ALTER TABLE usrToGroups
CHANGE usertogroup_userId userId SMALLINT(5) UNSIGNED NOT NULL,
CHANGE usertogroup_groupId userGroupId SMALLINT(5) UNSIGNED NOT NULL,
DROP INDEX IDX_usertogroup_userId,
ADD INDEX idx_UserToUserGroup_01 (userId ASC),
RENAME TO UserToUserGroup;
-- UserGroup;
ALTER TABLE usrGroups
CHANGE usergroup_id id SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
CHANGE usergroup_name name VARCHAR(50) NOT NULL,
CHANGE usergroup_description description VARCHAR(255),
RENAME TO UserGroup;
-- AuthToken;
ALTER TABLE authTokens
CHANGE authtoken_id id INT(11) NOT NULL AUTO_INCREMENT,
CHANGE authtoken_userId userId SMALLINT(5) UNSIGNED NOT NULL,
CHANGE authtoken_token token VARBINARY(100) NOT NULL,
CHANGE authtoken_actionId actionId SMALLINT(5) UNSIGNED NOT NULL,
CHANGE authtoken_createdBy createdBy SMALLINT(5) UNSIGNED NOT NULL,
CHANGE authtoken_startDate startDate INT(10) UNSIGNED NOT NULL,
CHANGE authtoken_vault vault VARBINARY(2000),
CHANGE authtoken_hash hash VARBINARY(1000),
DROP INDEX unique_authtoken_id,
ADD UNIQUE INDEX uk_AuthToken_01 (token ASC, actionId ASC),
DROP INDEX IDX_checkToken,
ADD INDEX idx_AuthToken_01 (userId ASC, actionId ASC, token ASC),
RENAME TO AuthToken;
-- UserPassRecover;
ALTER TABLE usrPassRecover
CHANGE userpassr_id id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
CHANGE userpassr_userId userId SMALLINT(5) UNSIGNED NOT NULL,
CHANGE userpassr_hash hash VARBINARY(128) NOT NULL,
CHANGE userpassr_date date INT(10) UNSIGNED NOT NULL,
CHANGE userpassr_used used TINYINT(1) DEFAULT 0,
DROP INDEX IDX_userId,
ADD INDEX idx_UserPassRecover_01 (userId ASC, date ASC),
RENAME TO UserPassRecover;
-- Views;
CREATE OR REPLACE VIEW account_search_v AS
SELECT DISTINCT
`Account`.`id` AS `id`,
`Account`.`clientId` AS `clientId`,
`Account`.`categoryId` AS `categoryId`,
`Account`.`name` AS `name`,
`Account`.`login` AS `login`,
`Account`.`url` AS `url`,
`Account`.`notes` AS `notes`,
`Account`.`userId` AS `userId`,
`Account`.`userGroupId` AS `userGroupId`,
`Account`.`otherUserEdit` AS `otherUserEdit`,
`Account`.`otherUserGroupEdit` AS `otherUserGroupEdit`,
`Account`.`isPrivate` AS `isPrivate`,
`Account`.`isPrivateGroup` AS `isPrivateGroup`,
`Account`.`passDate` AS `passDate`,
`Account`.`passDateChange` AS `passDateChange`,
`Account`.`parentId` AS `parentId`,
`Account`.`countView` AS `countView`,
`Account`.`dateEdit` AS `dateEdit`,
`User`.`name` AS `userName`,
`User`.`login` AS `userLogin`,
`UserGroup`.`name` AS `userGroupName`,
`Category`.`name` AS `categoryName`,
`Client`.`name` AS `clientName`,
(SELECT count(0)
FROM `AccountFile`
WHERE (`AccountFile`.`accountId` = `Account`.`id`)) AS `num_files`
FROM `Account`
INNER JOIN `Category` ON `Account`.`categoryId` = `Category`.`id`
INNER JOIN `Client` ON `Client`.`id` = `Account`.`clientId`
INNER JOIN `User` ON Account.userId = `User`.id
INNER JOIN `UserGroup` ON `Account`.`userGroupId` = `UserGroup`.`id`;
CREATE OR REPLACE VIEW account_data_v AS
SELECT
`Account`.`id` AS `id`,
`Account`.`name` AS `name`,
`Account`.`categoryId` AS `categoryId`,
`Account`.`userId` AS `userId`,
`Account`.`clientId` AS `clientId`,
`Account`.`userGroupId` AS `userGroupId`,
`Account`.`userEditId` AS `userEditId`,
`Account`.`login` AS `login`,
`Account`.`url` AS `url`,
`Account`.`notes` AS `notes`,
`Account`.`countView` AS `countView`,
`Account`.`countDecrypt` AS `countDecrypt`,
`Account`.`dateAdd` AS `dateAdd`,
`Account`.`dateEdit` AS `dateEdit`,
conv(`Account`.`otherUserEdit`, 10, 2) AS `otherUserEdit`,
conv(`Account`.`otherUserGroupEdit`, 10, 2) AS `otherUserGroupEdit`,
conv(`Account`.`isPrivate`, 10, 2) AS `isPrivate`,
conv(`Account`.`isPrivateGroup`, 10, 2) AS `isPrivateGroup`,
`Account`.`passDate` AS `passDate`,
`Account`.`passDateChange` AS `passDateChange`,
`Account`.`parentId` AS `parentId`,
`Category`.`name` AS `categoryName`,
`Client`.`name` AS `clientName`,
`ug`.`name` AS `userGroupName`,
`u1`.`name` AS `userName`,
`u1`.`login` AS `userLogin`,
`u2`.`name` AS `userEditName`,
`u2`.`login` AS `userEditLogin`,
`PublicLink`.`hash` AS `publicLinkHash`
FROM ((((((`Account`
LEFT JOIN `Category`
ON ((`Account`.`categoryId` = `Category`.`id`))) INNER JOIN
`UserGroup` `ug` ON ((`Account`.`userGroupId` = `ug`.`id`))) INNER JOIN
`User` `u1` ON ((`Account`.`userId` = `u1`.`id`))) INNER JOIN
`User` `u2` ON ((`Account`.`userEditId` = `u2`.`id`))) LEFT JOIN
`Client`
ON ((`Account`.`clientId` = `Client`.`id`))) LEFT JOIN
`PublicLink` ON ((`Account`.`id` = `PublicLink`.`itemId`)));
-- Foreign Keys;
CREATE INDEX fk_Account_userId
ON Account (userId);
CREATE INDEX fk_Account_userEditId
ON Account (userEditId);
ALTER TABLE Account
ADD CONSTRAINT fk_Account_userGroupId
FOREIGN KEY (userGroupId) REFERENCES UserGroup (id);
ALTER TABLE Account
ADD CONSTRAINT fk_Account_userId
FOREIGN KEY (userId) REFERENCES User (id);
ALTER TABLE Account
ADD CONSTRAINT fk_Account_userEditId
FOREIGN KEY (userEditId) REFERENCES User (id);
ALTER TABLE Account
ADD CONSTRAINT fk_Account_clientId
FOREIGN KEY (clientId) REFERENCES Client (id);
ALTER TABLE Account
ADD CONSTRAINT fk_Account_categoryId
FOREIGN KEY (categoryId) REFERENCES Category (id);
ALTER TABLE AccountFile
ADD CONSTRAINT fk_AccountFile_accountId
FOREIGN KEY (accountId) REFERENCES Account (id)
ON UPDATE CASCADE
ON DELETE CASCADE;
CREATE INDEX fk_AccountHistory_userGroupId
ON AccountHistory (userGroupId);
CREATE INDEX fk_AccountHistory_userId
ON AccountHistory (userId);
CREATE INDEX fk_AccountHistory_userEditId
ON AccountHistory (userEditId);
CREATE INDEX fk_AccountHistory_clientId
ON AccountHistory (clientId);
CREATE INDEX fk_AccountHistory_categoryId
ON AccountHistory (categoryId);
ALTER TABLE AccountHistory
ADD CONSTRAINT fk_AccountHistory_userGroupId
FOREIGN KEY (userGroupId) REFERENCES UserGroup (id);
ALTER TABLE AccountHistory
ADD CONSTRAINT fk_AccountHistory_userId
FOREIGN KEY (userId) REFERENCES User (id);
ALTER TABLE AccountHistory
ADD CONSTRAINT fk_AccountHistory_userEditId
FOREIGN KEY (userEditId) REFERENCES User (id);
ALTER TABLE AccountHistory
ADD CONSTRAINT fk_AccountHistory_clientId
FOREIGN KEY (clientId) REFERENCES Client (id);
ALTER TABLE AccountHistory
ADD CONSTRAINT fk_AccountHistory_categoryId
FOREIGN KEY (categoryId) REFERENCES Category (id);
CREATE INDEX fk_AccountToFavorite_userId
ON AccountToFavorite (userId);
ALTER TABLE AccountToFavorite
ADD CONSTRAINT fk_AccountToFavorite_accountId
FOREIGN KEY (accountId) REFERENCES Account (id)
ON UPDATE CASCADE
ON DELETE CASCADE;
ALTER TABLE AccountToFavorite
ADD CONSTRAINT fk_AccountToFavorite_userId
FOREIGN KEY (userId) REFERENCES User (id)
ON UPDATE CASCADE
ON DELETE CASCADE;
ALTER TABLE AccountToFavorite
ADD PRIMARY KEY (accountId, userId);
CREATE INDEX fk_AccountToUserGroup_userGroupId
ON AccountToUserGroup (userGroupId);
ALTER TABLE AccountToUserGroup
ADD CONSTRAINT fk_AccountToUserGroup_accountId
FOREIGN KEY (accountId) REFERENCES Account (id)
ON UPDATE CASCADE
ON DELETE CASCADE;
ALTER TABLE AccountToUserGroup
ADD CONSTRAINT fk_AccountToUserGroup_userGroupId
FOREIGN KEY (userGroupId) REFERENCES UserGroup (id)
ON UPDATE CASCADE
ON DELETE CASCADE;
ALTER TABLE AccountToUserGroup
ADD PRIMARY KEY (accountId, userGroupId);
CREATE INDEX fk_AccountToTag_accountId
ON AccountToTag (accountId);
CREATE INDEX fk_AccountToTag_tagId
ON AccountToTag (tagId);
-- Fix duplicated tags;
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_tags AS (SELECT
accountId,
tagId
FROM AccountToTag
GROUP BY accountId, tagId
HAVING COUNT(*) > 1);
DELETE a FROM AccountToTag AS a
INNER JOIN tmp_tags AS tmp ON tmp.accountId = a.accountId AND tmp.tagId = a.tagId;
INSERT INTO AccountToTag SELECT *
FROM tmp_tags;
DROP TEMPORARY TABLE tmp_tags;
ALTER TABLE AccountToTag
ADD CONSTRAINT fk_AccountToTag_accountId
FOREIGN KEY (accountId) REFERENCES Account (id)
ON UPDATE CASCADE
ON DELETE CASCADE;
ALTER TABLE AccountToTag
ADD CONSTRAINT fk_AccountToTag_tagId
FOREIGN KEY (tagId) REFERENCES Tag (id)
ON UPDATE CASCADE
ON DELETE CASCADE;
ALTER TABLE AccountToTag
ADD PRIMARY KEY (accountId, tagId);
CREATE INDEX fk_AccountToUser_userId
ON AccountToUser (userId);
ALTER TABLE AccountToUser
ADD CONSTRAINT fk_AccountToUser_accountId
FOREIGN KEY (accountId) REFERENCES Account (id)
ON UPDATE CASCADE
ON DELETE CASCADE;
ALTER TABLE AccountToUser
ADD CONSTRAINT fk_AccountToUser_userId
FOREIGN KEY (userId) REFERENCES User (id)
ON UPDATE CASCADE
ON DELETE CASCADE;
ALTER TABLE AccountToUser
ADD PRIMARY KEY (accountId, userId);
CREATE INDEX fk_AuthToken_actionId
ON AuthToken (actionId);
-- Fix missing user's id;
DELETE FROM AuthToken
WHERE userId NOT IN (SELECT id
FROM User);
ALTER TABLE AuthToken
ADD CONSTRAINT fk_AuthToken_userId
FOREIGN KEY (userId) REFERENCES User (id)
ON UPDATE CASCADE
ON DELETE CASCADE;
ALTER TABLE CustomFieldData
ADD CONSTRAINT fk_CustomFieldData_definitionId
FOREIGN KEY (definitionId) REFERENCES CustomFieldDefinition (id);
CREATE INDEX fk_CustomFieldDefinition_typeId
ON CustomFieldDefinition (typeId);
ALTER TABLE CustomFieldDefinition
ADD CONSTRAINT fk_CustomFieldDefinition_typeId
FOREIGN KEY (typeId) REFERENCES CustomFieldType (id)
ON UPDATE CASCADE;
ALTER TABLE Notification
ADD CONSTRAINT fk_Notification_userId
FOREIGN KEY (userId) REFERENCES User (id)
ON UPDATE CASCADE
ON DELETE CASCADE;
CREATE INDEX fk_PublicLink_userId
ON PublicLink (userId);
ALTER TABLE PublicLink
ADD CONSTRAINT fk_PublicLink_userId
FOREIGN KEY (userId) REFERENCES User (id);
CREATE INDEX fk_User_userGroupId
ON User (userGroupId);
CREATE INDEX fk_User_userProfileId
ON User (userProfileId);
ALTER TABLE User
ADD CONSTRAINT fk_User_userGroupId
FOREIGN KEY (userGroupId) REFERENCES UserGroup (id);
ALTER TABLE User
ADD CONSTRAINT fk_User_userProfileId
FOREIGN KEY (userProfileId) REFERENCES UserProfile (id);
ALTER TABLE UserPassRecover
ADD CONSTRAINT fk_UserPassRecover_userId
FOREIGN KEY (userId) REFERENCES User (id)
ON UPDATE CASCADE
ON DELETE CASCADE;
CREATE INDEX fk_UserToGroup_userGroupId
ON UserToUserGroup (userGroupId);
ALTER TABLE UserToUserGroup
ADD CONSTRAINT fk_UserToGroup_userId
FOREIGN KEY (userId) REFERENCES User (id)
ON UPDATE CASCADE
ON DELETE CASCADE;
ALTER TABLE UserToUserGroup
ADD CONSTRAINT fk_UserToGroup_userGroupId
FOREIGN KEY (userGroupId) REFERENCES UserGroup (id)
ON UPDATE CASCADE
ON DELETE CASCADE;
SET FOREIGN_KEY_CHECKS=1;