mirror of
https://github.com/e107inc/e107.git
synced 2025-08-04 05:37:32 +02:00
CoreImage: Table for versions, slight space savings
This commit is contained in:
31
.github/workflows/build-release/CoreImage.php
vendored
31
.github/workflows/build-release/CoreImage.php
vendored
@@ -24,11 +24,23 @@ class CoreImage
|
|||||||
$this->db->exec('
|
$this->db->exec('
|
||||||
CREATE TABLE IF NOT EXISTS file_hashes (
|
CREATE TABLE IF NOT EXISTS file_hashes (
|
||||||
path TEXT,
|
path TEXT,
|
||||||
release_version TEXT,
|
release_version INTEGER,
|
||||||
hash TEXT'/*.',
|
hash TEXT'/*.',
|
||||||
UNIQUE(path, hash) ON CONFLICT IGNORE'*/ . '
|
UNIQUE(path, hash) ON CONFLICT IGNORE'*/ . '
|
||||||
);
|
);
|
||||||
');
|
');
|
||||||
|
$this->db->exec('
|
||||||
|
CREATE TABLE IF NOT EXISTS versions (
|
||||||
|
version_id INTEGER PRIMARY KEY,
|
||||||
|
version_string TEXT,
|
||||||
|
UNIQUE(version_string) ON CONFLICT IGNORE
|
||||||
|
);
|
||||||
|
');
|
||||||
|
# Retrieval:
|
||||||
|
# SELECT file_hashes.path, versions.version_string, file_hashes.hash
|
||||||
|
# FROM file_hashes
|
||||||
|
# LEFT JOIN versions ON versions.version_id = file_hashes.release_version
|
||||||
|
# ORDER BY path ASC;
|
||||||
|
|
||||||
$this->create_image($exportFolder, $tempFolder, $currentVersion);
|
$this->create_image($exportFolder, $tempFolder, $currentVersion);
|
||||||
}
|
}
|
||||||
@@ -70,6 +82,8 @@ class CoreImage
|
|||||||
$insert_statement = $this->insert_statement($relativePath, $currentVersion, $checksum);
|
$insert_statement = $this->insert_statement($relativePath, $currentVersion, $checksum);
|
||||||
$this->db->beginTransaction();
|
$this->db->beginTransaction();
|
||||||
|
|
||||||
|
$this->insert_version($currentVersion);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var $file DirectoryIterator
|
* @var $file DirectoryIterator
|
||||||
*/
|
*/
|
||||||
@@ -132,6 +146,7 @@ class CoreImage
|
|||||||
$this->db->beginTransaction();
|
$this->db->beginTransaction();
|
||||||
|
|
||||||
foreach ($tags as $tag => $version) {
|
foreach ($tags as $tag => $version) {
|
||||||
|
$this->insert_version($version);
|
||||||
OsHelper::runValidated(
|
OsHelper::runValidated(
|
||||||
'git --no-pager diff --no-renames --name-only --diff-filter D ' . escapeshellarg($tag),
|
'git --no-pager diff --no-renames --name-only --diff-filter D ' . escapeshellarg($tag),
|
||||||
$stdout
|
$stdout
|
||||||
@@ -165,11 +180,23 @@ class CoreImage
|
|||||||
$releaseVersion = $releaseVersion ?: null;
|
$releaseVersion = $releaseVersion ?: null;
|
||||||
$checksum = $checksum ?: null;
|
$checksum = $checksum ?: null;
|
||||||
$insert_statement = $this->db->prepare(
|
$insert_statement = $this->db->prepare(
|
||||||
"INSERT INTO file_hashes (path, release_version, hash) VALUES (:path, :release_version, :hash)"
|
"INSERT INTO file_hashes (
|
||||||
|
path, release_version, hash
|
||||||
|
) VALUES (
|
||||||
|
:path, (SELECT version_id FROM versions WHERE version_string = :release_version), :hash
|
||||||
|
)"
|
||||||
);
|
);
|
||||||
$insert_statement->bindParam(":path", $relativePath);
|
$insert_statement->bindParam(":path", $relativePath);
|
||||||
$insert_statement->bindParam(":release_version", $releaseVersion);
|
$insert_statement->bindParam(":release_version", $releaseVersion);
|
||||||
$insert_statement->bindParam(":hash", $checksum);
|
$insert_statement->bindParam(":hash", $checksum);
|
||||||
return $insert_statement;
|
return $insert_statement;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function insert_version($releaseVersion)
|
||||||
|
{
|
||||||
|
$statement = $this->db->prepare(
|
||||||
|
"INSERT INTO versions (version_id, version_string) VALUES (NULL, ?)"
|
||||||
|
);
|
||||||
|
$statement->execute([$releaseVersion]);
|
||||||
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user