Skip to content
Snippets Groups Projects
Verified Commit 2d455272 authored by Timm Fitschen's avatar Timm Fitschen
Browse files

add parent_directory column to files table

parent 8c20200a
Branches
Tags
1 merge request!12DRAFT: ENH: file system: core
Pipeline #7920 failed
...@@ -9,6 +9,7 @@ ALTER TABLE files ADD UNIQUE (`path`); ...@@ -9,6 +9,7 @@ ALTER TABLE files ADD UNIQUE (`path`);
ALTER TABLE files ADD COLUMN IF NOT EXISTS ( ALTER TABLE files ADD COLUMN IF NOT EXISTS (
parent_directory INT UNSIGNED DEFAULT NULL,
mimetype VARBINARY(255) DEFAULT NULL, mimetype VARBINARY(255) DEFAULT NULL,
file_storage_id VARBINARY(255) NOT NULL DEFAULT "DEFAULT", file_storage_id VARBINARY(255) NOT NULL DEFAULT "DEFAULT",
file_key VARBINARY(255) DEFAULT NULL, file_key VARBINARY(255) DEFAULT NULL,
...@@ -16,6 +17,7 @@ ALTER TABLE files ADD COLUMN IF NOT EXISTS ( ...@@ -16,6 +17,7 @@ ALTER TABLE files ADD COLUMN IF NOT EXISTS (
); );
ALTER TABLE archive_files ADD COLUMN IF NOT EXISTS ( ALTER TABLE archive_files ADD COLUMN IF NOT EXISTS (
parent_directory INT UNSIGNED DEFAULT NULL,
mimetype VARBINARY(255) DEFAULT NULL, mimetype VARBINARY(255) DEFAULT NULL,
file_storage_id VARBINARY(255) NOT NULL DEFAULT "DEFAULT", file_storage_id VARBINARY(255) NOT NULL DEFAULT "DEFAULT",
file_key VARBINARY(255) DEFAULT NULL, file_key VARBINARY(255) DEFAULT NULL,
...@@ -44,6 +46,7 @@ BEGIN ...@@ -44,6 +46,7 @@ BEGIN
DECLARE _path VARCHAR(255) DEFAULT NULL; DECLARE _path VARCHAR(255) DEFAULT NULL;
DECLARE dir_id INT UNSIGNED DEFAULT NULL; DECLARE dir_id INT UNSIGNED DEFAULT NULL;
DECLARE dir_path VARCHAR(255) DEFAULT ""; DECLARE dir_path VARCHAR(255) DEFAULT "";
DECLARE dir_path_no_trailing_slash VARCHAR(255) DEFAULT "";
DECLARE dir_exists BOOLEAN DEFAULT FALSE; DECLARE dir_exists BOOLEAN DEFAULT FALSE;
DECLARE cur CURSOR FOR SELECT file_id, path FROM files; DECLARE cur CURSOR FOR SELECT file_id, path FROM files;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
...@@ -63,7 +66,8 @@ BEGIN ...@@ -63,7 +66,8 @@ BEGIN
SET done = FALSE; SET done = FALSE;
LEAVE loop2; LEAVE loop2;
END IF; END IF;
SELECT TRUE INTO dir_exists FROM files WHERE path = LEFT(dir_path, CHAR_LENGTH(dir_path)-1); SET dir_path_no_trailing_slash = LEFT(dir_path, CHAR_LENGTH(dir_path)-1);
SELECT TRUE INTO dir_exists FROM files WHERE path = dir_path_no_trailing_slash;
IF dir_exists IS TRUE THEN IF dir_exists IS TRUE THEN
SET dir_exists = FALSE; SET dir_exists = FALSE;
ITERATE loop2; ITERATE loop2;
...@@ -72,9 +76,11 @@ BEGIN ...@@ -72,9 +76,11 @@ BEGIN
SET dir_id = LAST_INSERT_ID(); SET dir_id = LAST_INSERT_ID();
INSERT INTO files (file_id, path, size, hash, checked_timestamp, INSERT INTO files (file_id, path, size, hash, checked_timestamp,
mimetype, file_storage_id, file_key) mimetype, file_storage_id, file_key)
VALUES (dir_id, LEFT(dir_path, CHAR_LENGTH(dir_path)-1), 0, VALUES (dir_id, dir_path_no_trailing_slash, 0, NULL, 0,
NULL, 0, "inode/directory", "DEFAULT", LEFT(dir_path, "inode/directory", "DEFAULT", dir_path_no_trailing_slash
CHAR_LENGTH(dir_path)-1)); );
UPDATE files SET parent_directory = dir_id WHERE path LIKE CONCAT(dir_path, "%");
UPDATE files SET parent_directory = 0 WHERE path LIKE CONCAT(dir_path, "%");
END LOOP; END LOOP;
END LOOP; END LOOP;
......
...@@ -45,19 +45,21 @@ drop procedure if exists db_2_0.retrieveEntity // ...@@ -45,19 +45,21 @@ drop procedure if exists db_2_0.retrieveEntity //
* *
* ResultSet * ResultSet
* --------- * ---------
* Tuple of (Datatype, Collection, EntityID, EntityName, EntityDesc, * Tuple of (DatatypeID, Collection, EntityID, EntityName, EntityDesc,
* EntityRole, FileSize, FilePath, FileHash, ACL, Version) * EntityRole, FileSize, FilePath, FileHash, FileHashChecked,
* FileMimetype, FileStorageID, FileKey, FileParentID, ACL, Version)
*/ */
create procedure db_2_0.retrieveEntity( create procedure db_2_0.retrieveEntity(
in EntityID INT UNSIGNED, in EntityID INT UNSIGNED,
in Version VARBINARY(255)) in Version VARBINARY(255))
retrieveEntityBody: BEGIN retrieveEntityBody: BEGIN
DECLARE FilePath VARCHAR(255) DEFAULT NULL; DECLARE FilePath VARCHAR(255) DEFAULT NULL;
DECLARE FileParentID INT UNSIGNED DEFAULT NULL;
DECLARE FileSize VARCHAR(255) DEFAULT NULL; DECLARE FileSize VARCHAR(255) DEFAULT NULL;
DECLARE FileHash VARCHAR(255) DEFAULT NULL; DECLARE FileHash VARCHAR(255) DEFAULT NULL;
DECLARE FileHashChecked BIGINT DEFAULT NULL; DECLARE FileHashChecked BIGINT DEFAULT NULL;
DECLARE FileMimetype VARBINARY(255) DEFAULT NULL; DECLARE FileMimetype VARBINARY(255) DEFAULT NULL;
DECLARE FileStorageId VARBINARY(255) DEFAULT NULL; DECLARE FileStorageID VARBINARY(255) DEFAULT NULL;
DECLARE FileKey VARBINARY(65525) DEFAULT NULL; DECLARE FileKey VARBINARY(65525) DEFAULT NULL;
DECLARE DatatypeID INT UNSIGNED DEFAULT NULL; DECLARE DatatypeID INT UNSIGNED DEFAULT NULL;
DECLARE CollectionName VARCHAR(255) DEFAULT NULL; DECLARE CollectionName VARCHAR(255) DEFAULT NULL;
...@@ -86,7 +88,7 @@ retrieveEntityBody: BEGIN ...@@ -86,7 +88,7 @@ retrieveEntityBody: BEGIN
END IF; END IF;
SELECT path, size, hex(hash), checked_timestamp, mimetype, file_storage_id, file_key SELECT path, size, hex(hash), checked_timestamp, mimetype, file_storage_id, file_key
INTO FilePath, FileSize, FileHash, FileHashChecked, FileMimetype, FileStorageId, FileKey INTO FilePath, FileSize, FileHash, FileHashChecked, FileMimetype, FileStorageID, FileKey
FROM archive_files FROM archive_files
WHERE file_id = EntityID WHERE file_id = EntityID
AND _iversion = IVersion AND _iversion = IVersion
...@@ -135,7 +137,7 @@ retrieveEntityBody: BEGIN ...@@ -135,7 +137,7 @@ retrieveEntityBody: BEGIN
FileHash AS FileHash, FileHash AS FileHash,
FileHashChecked AS FileHashChecked, FileHashChecked AS FileHashChecked,
FileMimetype as FileMimetype, FileMimetype as FileMimetype,
FileStorageId as FileStorageId, FileStorageID as FileStorageID,
FileKey as FileKey, FileKey as FileKey,
(SELECT acl FROM entity_acl AS a WHERE a.id = e.acl) AS ACL, (SELECT acl FROM entity_acl AS a WHERE a.id = e.acl) AS ACL,
Version AS Version Version AS Version
...@@ -150,8 +152,8 @@ retrieveEntityBody: BEGIN ...@@ -150,8 +152,8 @@ retrieveEntityBody: BEGIN
END IF; END IF;
END IF; END IF;
SELECT path, size, hex(hash), checked_timestamp, mimetype, file_storage_id, file_key SELECT path, parent_directory, size, hex(hash), checked_timestamp, mimetype, file_storage_id, file_key
INTO FilePath, FileSize, FileHash, FileHashChecked, FileMimetype, FileStorageId, FileKey INTO FilePath, FileParentID, FileSize, FileHash, FileHashChecked, FileMimetype, FileStorageID, FileKey
FROM files FROM files
WHERE file_id = EntityID WHERE file_id = EntityID
LIMIT 1; LIMIT 1;
...@@ -188,8 +190,9 @@ retrieveEntityBody: BEGIN ...@@ -188,8 +190,9 @@ retrieveEntityBody: BEGIN
FileHash AS FileHash, FileHash AS FileHash,
FileHashChecked AS FileHashChecked, FileHashChecked AS FileHashChecked,
FileMimetype as FileMimetype, FileMimetype as FileMimetype,
FileStorageId as FileStorageId, FileStorageID as FileStorageID,
FileKey as FileKey, FileKey as FileKey,
FileParentID as FileParentID,
(SELECT acl FROM entity_acl AS a WHERE a.id = e.acl) AS ACL, (SELECT acl FROM entity_acl AS a WHERE a.id = e.acl) AS ACL,
Version AS Version Version AS Version
FROM entities e WHERE id = EntityID LIMIT 1; FROM entities e WHERE id = EntityID LIMIT 1;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment