mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-03-01 13:39:41 +00:00
104 lines
3.4 KiB
Bash
Executable file
104 lines
3.4 KiB
Bash
Executable file
#!/bin/bash
|
|
#
|
|
# Migration Script: Convert absolute paths to relative paths
|
|
# Makes the database portable within the current working directory
|
|
#
|
|
|
|
set -e
|
|
|
|
DB_SOURCE="/mnt/docker/work/books/audiobookshelf/config/absdatabase.sqlite"
|
|
DB_BACKUP="/mnt/docker/work/books/audiobookshelf/config/absdatabase.sqlite.backup"
|
|
DB_MIGRATED="/mnt/docker/work/books/audiobookshelf/config/absdatabase.sqlite"
|
|
|
|
echo "=== Audiobookshelf Path Migration ==="
|
|
echo "Converting absolute paths to relative paths for portability"
|
|
echo ""
|
|
|
|
# Step 1: Create backup
|
|
echo "[1/4] Creating backup at $DB_BACKUP..."
|
|
if [ -f "$DB_BACKUP" ]; then
|
|
echo " Backup already exists, removing..."
|
|
rm -f "$DB_BACKUP"
|
|
fi
|
|
cp "$DB_SOURCE" "$DB_BACKUP"
|
|
echo " Backup created successfully"
|
|
echo ""
|
|
|
|
# Step 2: Show current state
|
|
echo "[2/4] Current state:"
|
|
echo " Library folders:"
|
|
sqlite3 "$DB_SOURCE" "SELECT id, path FROM libraryFolders;" | while read line; do
|
|
echo " - $line"
|
|
done
|
|
echo ""
|
|
echo " Settings with paths:"
|
|
sqlite3 "$DB_SOURCE" "SELECT key, value FROM settings WHERE key LIKE '%path%' OR key IN ('backupPath');" | while read line; do
|
|
echo " - $line"
|
|
done
|
|
echo ""
|
|
|
|
# Step 3: Run migration
|
|
echo "[3/4] Migrating paths..."
|
|
|
|
# Migrate libraryFolders paths
|
|
echo " Converting libraryFolders paths..."
|
|
sqlite3 "$DB_SOURCE" "
|
|
UPDATE libraryFolders SET path = 'audiobooks' WHERE path = '/audiobooks';
|
|
UPDATE libraryFolders SET path = 'romance' WHERE path = '/libraries/romance';
|
|
"
|
|
echo " libraryFolders: OK"
|
|
|
|
# Migrate libraryItems paths
|
|
echo " Converting libraryItems paths..."
|
|
sqlite3 "$DB_SOURCE" "
|
|
UPDATE libraryItems SET path = REPLACE(path, '/audiobooks/', 'audiobooks/');
|
|
UPDATE libraryItems SET path = REPLACE(path, '/libraries/romance/', 'romance/');
|
|
UPDATE libraryItems SET relPath = REPLACE(relPath, '/audiobooks/', 'audiobooks/');
|
|
UPDATE libraryItems SET relPath = REPLACE(relPath, '/libraries/romance/', 'romance/');
|
|
"
|
|
echo " libraryItems: OK"
|
|
|
|
# Migrate book cover paths
|
|
echo " Converting book cover paths..."
|
|
sqlite3 "$DB_SOURCE" "
|
|
UPDATE books SET coverPath = REPLACE(coverPath, '/metadata/items/', 'metadata/items/');
|
|
"
|
|
echo " books: OK"
|
|
|
|
# Migrate settings (backupPath)
|
|
echo " Converting settings..."
|
|
sqlite3 "$DB_SOURCE" "
|
|
UPDATE settings SET value = 'metadata/backups' WHERE key = 'backupPath' AND value = '/metadata/backups';
|
|
"
|
|
echo " settings: OK"
|
|
|
|
# Verify migration
|
|
echo ""
|
|
echo "[4/4] Verification:"
|
|
echo " Library folders after migration:"
|
|
sqlite3 "$DB_SOURCE" "SELECT id, path FROM libraryFolders;" | while read line; do
|
|
echo " - $line"
|
|
done
|
|
echo ""
|
|
echo " Sample libraryItems paths:"
|
|
sqlite3 "$DB_SOURCE" "SELECT DISTINCT substr(path, 1, 50) FROM libraryItems LIMIT 5;" | while read line; do
|
|
echo " - $line"
|
|
done
|
|
echo ""
|
|
echo " Sample cover paths:"
|
|
sqlite3 "$DB_SOURCE" "SELECT DISTINCT substr(coverPath, 1, 50) FROM books LIMIT 5;" | while read line; do
|
|
echo " - $line"
|
|
done
|
|
echo ""
|
|
echo " Settings after migration:"
|
|
sqlite3 "$DB_SOURCE" "SELECT key, value FROM settings WHERE key LIKE '%path%' OR key IN ('backupPath');" | while read line; do
|
|
echo " - $line"
|
|
done
|
|
|
|
echo ""
|
|
echo "=== Migration Complete ==="
|
|
echo "Backup saved at: $DB_BACKUP"
|
|
echo "Database migrated: $DB_SOURCE"
|
|
echo ""
|
|
echo "To use the migrated database, run audiobookshelf from /mnt/docker/work/books/audiobookshelf:"
|
|
echo " cd /mnt/docker/work/books/audiobookshelf && npm start"
|