34 lines
1.0 KiB
JavaScript
34 lines
1.0 KiB
JavaScript
/**
|
|
* Strip known backup/export extensions from a file name.
|
|
*/
|
|
function stripBackupExtension(name) {
|
|
const lower = name.toLowerCase();
|
|
if (lower.endsWith(".tar.gz")) {
|
|
return name.slice(0, -7);
|
|
}
|
|
if (lower.endsWith(".tgz")) {
|
|
return name.slice(0, -4);
|
|
}
|
|
if (lower.endsWith(".tar")) {
|
|
return name.slice(0, -4);
|
|
}
|
|
if (lower.endsWith(".zip")) {
|
|
return name.slice(0, -4);
|
|
}
|
|
if (lower.endsWith(".sql")) {
|
|
return name.slice(0, -4);
|
|
}
|
|
return name;
|
|
}
|
|
/**
|
|
* Parse timestamped backup/export names: `{db_name}-{timestamp}[.sql|.tar.gz|...]`
|
|
*/
|
|
export default function grabBackupData({ backup_name }) {
|
|
const normalized = stripBackupExtension(backup_name);
|
|
const backup_parts = normalized.split("-");
|
|
const backup_date_timestamp = Number(backup_parts.pop());
|
|
const origin_backup_name = backup_parts.join("-");
|
|
const backup_date = new Date(backup_date_timestamp);
|
|
return { backup_date, backup_date_timestamp, origin_backup_name };
|
|
}
|