Browse Source
- Add interactive clear-database.sh script with platform detection - Support Electron SQLite database clearing (Linux/macOS/Windows) - Provide web browser clearing instructions (custom profiles + DevTools) - Remove complex programmatic database clearing from platform services - Update documentation with comprehensive clearing guide - Add safety features: interactive guidance, platform-specific paths - Simplify approach: avoid browser storage complications and race conditions Enables reliable database clearing for development without complex code.pull/142/head
4 changed files with 372 additions and 2 deletions
@ -0,0 +1,146 @@ |
|||||
|
# Database Clearing for Development |
||||
|
|
||||
|
**Author**: Matthew Raymer |
||||
|
**Date**: 2025-07-11 |
||||
|
**Status**: **ACTIVE** - Production Ready |
||||
|
|
||||
|
## Overview |
||||
|
|
||||
|
TimeSafari provides a simple script-based approach to clear the database for development purposes. This avoids the complexity of programmatic database clearing and provides reliable, platform-specific solutions. |
||||
|
|
||||
|
## Quick Start |
||||
|
|
||||
|
```bash |
||||
|
# Run the interactive database clearing script |
||||
|
./scripts/clear-database.sh |
||||
|
|
||||
|
# Then restart your development server |
||||
|
npm run build:electron:dev # For Electron |
||||
|
npm run build:web:dev # For Web |
||||
|
``` |
||||
|
|
||||
|
## Platform-Specific Approaches |
||||
|
|
||||
|
### Electron (Desktop App) |
||||
|
|
||||
|
The script automatically detects your platform and clears the SQLite database files: |
||||
|
|
||||
|
- **Linux**: `~/.config/TimeSafari/` |
||||
|
- **macOS**: `~/Library/Application Support/TimeSafari/` |
||||
|
- **Windows**: `%APPDATA%\TimeSafari` |
||||
|
|
||||
|
### Web Browser |
||||
|
|
||||
|
For web browsers, the script provides two approaches: |
||||
|
|
||||
|
#### 1. Custom Data Directory (Recommended) |
||||
|
|
||||
|
Create an isolated browser profile for development: |
||||
|
|
||||
|
```bash |
||||
|
# Create isolated profile |
||||
|
mkdir ~/timesafari-dev-data |
||||
|
|
||||
|
# Start browser with custom profile |
||||
|
google-chrome --user-data-dir=~/timesafari-dev-data |
||||
|
|
||||
|
# Clear when needed |
||||
|
rm -rf ~/timesafari-dev-data |
||||
|
``` |
||||
|
|
||||
|
#### 2. Manual Browser Clearing |
||||
|
|
||||
|
Use browser DevTools to clear IndexedDB: |
||||
|
|
||||
|
1. Open Developer Tools (F12) |
||||
|
2. Go to Application/Storage tab |
||||
|
3. Find 'IndexedDB' section |
||||
|
4. Delete 'TimeSafari' database |
||||
|
5. Refresh the page |
||||
|
|
||||
|
## Why Script-Based Approach? |
||||
|
|
||||
|
### **Simplicity** |
||||
|
- No complex programmatic database clearing |
||||
|
- No browser storage complications |
||||
|
- No race conditions or permission issues |
||||
|
|
||||
|
### **Reliability** |
||||
|
- Direct file system access for Electron |
||||
|
- Isolated browser profiles for web |
||||
|
- Clear, predictable behavior |
||||
|
|
||||
|
### **Safety** |
||||
|
- Interactive script guides users |
||||
|
- Platform-specific instructions |
||||
|
- Only clears TimeSafari data |
||||
|
|
||||
|
## Manual Commands |
||||
|
|
||||
|
If you prefer manual commands: |
||||
|
|
||||
|
### Electron |
||||
|
```bash |
||||
|
# Linux |
||||
|
rm -rf ~/.config/TimeSafari/* |
||||
|
|
||||
|
# macOS |
||||
|
rm -rf ~/Library/Application\ Support/TimeSafari/* |
||||
|
|
||||
|
# Windows |
||||
|
rmdir /s /q %APPDATA%\TimeSafari |
||||
|
``` |
||||
|
|
||||
|
### Web Browser |
||||
|
```bash |
||||
|
# Create and use isolated profile |
||||
|
mkdir ~/timesafari-dev-data |
||||
|
google-chrome --user-data-dir=~/timesafari-dev-data |
||||
|
|
||||
|
# Clear when needed |
||||
|
rm -rf ~/timesafari-dev-data |
||||
|
``` |
||||
|
|
||||
|
## Best Practices |
||||
|
|
||||
|
1. **Stop the development server** before clearing |
||||
|
2. **Use isolated browser profiles** for web development |
||||
|
3. **Restart the development server** after clearing |
||||
|
4. **Backup important data** before clearing |
||||
|
5. **Use the script** for consistent behavior |
||||
|
|
||||
|
## Troubleshooting |
||||
|
|
||||
|
### Script Not Found |
||||
|
```bash |
||||
|
# Make sure script is executable |
||||
|
chmod +x scripts/clear-database.sh |
||||
|
|
||||
|
# Run from project root |
||||
|
./scripts/clear-database.sh |
||||
|
``` |
||||
|
|
||||
|
### Permission Errors |
||||
|
```bash |
||||
|
# Check file permissions |
||||
|
ls -la ~/.config/TimeSafari/ |
||||
|
|
||||
|
# Use sudo if needed (rare) |
||||
|
sudo rm -rf ~/.config/TimeSafari/* |
||||
|
``` |
||||
|
|
||||
|
### Browser Profile Issues |
||||
|
```bash |
||||
|
# Ensure browser is completely closed |
||||
|
pkill -f chrome |
||||
|
pkill -f firefox |
||||
|
|
||||
|
# Then clear profile |
||||
|
rm -rf ~/timesafari-dev-data |
||||
|
``` |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
**Last Updated**: 2025-07-11 |
||||
|
**Version**: 1.0.3-beta |
||||
|
**Status**: Production Ready |
@ -0,0 +1,164 @@ |
|||||
|
#!/bin/bash |
||||
|
|
||||
|
# TimeSafari Database Clearing Script |
||||
|
# Author: Matthew Raymer |
||||
|
# Date: 2025-07-11 |
||||
|
|
||||
|
set -e |
||||
|
|
||||
|
echo "=== TimeSafari Database Clearing Script ===" |
||||
|
echo "" |
||||
|
|
||||
|
# Detect platform |
||||
|
if [[ "$OSTYPE" == "linux-gnu"* ]]; then |
||||
|
PLATFORM="linux" |
||||
|
elif [[ "$OSTYPE" == "darwin"* ]]; then |
||||
|
PLATFORM="macos" |
||||
|
elif [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "cygwin" ]]; then |
||||
|
PLATFORM="windows" |
||||
|
else |
||||
|
PLATFORM="unknown" |
||||
|
fi |
||||
|
|
||||
|
echo "Detected platform: $PLATFORM" |
||||
|
echo "" |
||||
|
|
||||
|
# Function to clear Electron database |
||||
|
clear_electron_database() { |
||||
|
echo "🧹 Clearing Electron Database..." |
||||
|
|
||||
|
local db_path="" |
||||
|
case $PLATFORM in |
||||
|
"linux") |
||||
|
db_path="$HOME/Databases/TimeSafari" |
||||
|
;; |
||||
|
"macos") |
||||
|
db_path="$HOME/Library/Application Support/TimeSafari" |
||||
|
;; |
||||
|
"windows") |
||||
|
db_path="$APPDATA/TimeSafari" |
||||
|
;; |
||||
|
*) |
||||
|
echo "❌ Unknown platform: $PLATFORM" |
||||
|
exit 1 |
||||
|
;; |
||||
|
esac |
||||
|
|
||||
|
if [[ -d "$db_path" ]]; then |
||||
|
echo "Found database at: $db_path" |
||||
|
echo "Removing database files..." |
||||
|
rm -rf "$db_path"/* |
||||
|
echo "✅ Electron database cleared successfully!" |
||||
|
else |
||||
|
echo "ℹ️ No database found at: $db_path" |
||||
|
echo " (This is normal if you haven't run the app yet)" |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
# Function to show web browser instructions |
||||
|
show_web_instructions() { |
||||
|
echo "🌐 Web Browser Database Clearing Instructions:" |
||||
|
echo "" |
||||
|
echo "For reliable database clearing in web browsers, use a custom data directory:" |
||||
|
echo "" |
||||
|
|
||||
|
case $PLATFORM in |
||||
|
"linux") |
||||
|
echo "📁 Create custom data directory:" |
||||
|
echo " mkdir -p ~/timesafari-dev-data" |
||||
|
echo "" |
||||
|
echo "🚀 Start browser with custom data directory:" |
||||
|
echo " # Chrome/Chromium:" |
||||
|
echo " google-chrome --user-data-dir=~/timesafari-dev-data" |
||||
|
echo " # Firefox:" |
||||
|
echo " firefox --profile ~/timesafari-dev-data" |
||||
|
echo "" |
||||
|
echo "🧹 Clear database:" |
||||
|
echo " rm -rf ~/timesafari-dev-data" |
||||
|
;; |
||||
|
"macos") |
||||
|
echo "📁 Create custom data directory:" |
||||
|
echo " mkdir -p ~/timesafari-dev-data" |
||||
|
echo "" |
||||
|
echo "🚀 Start browser with custom data directory:" |
||||
|
echo " # Chrome:" |
||||
|
echo " /Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --user-data-dir=~/timesafari-dev-data" |
||||
|
echo " # Firefox:" |
||||
|
echo " /Applications/Firefox.app/Contents/MacOS/firefox --profile ~/timesafari-dev-data" |
||||
|
echo "" |
||||
|
echo "🧹 Clear database:" |
||||
|
echo " rm -rf ~/timesafari-dev-data" |
||||
|
;; |
||||
|
"windows") |
||||
|
echo "📁 Create custom data directory:" |
||||
|
echo " mkdir %USERPROFILE%\\timesafari-dev-data" |
||||
|
echo "" |
||||
|
echo "🚀 Start browser with custom data directory:" |
||||
|
echo " # Chrome:" |
||||
|
echo " \"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe\" --user-data-dir=%USERPROFILE%\\timesafari-dev-data" |
||||
|
echo " # Firefox:" |
||||
|
echo " \"C:\\Program Files\\Mozilla Firefox\\firefox.exe\" --profile %USERPROFILE%\\timesafari-dev-data" |
||||
|
echo "" |
||||
|
echo "🧹 Clear database:" |
||||
|
echo " rmdir /s /q %USERPROFILE%\\timesafari-dev-data" |
||||
|
;; |
||||
|
esac |
||||
|
} |
||||
|
|
||||
|
# Function to show manual browser clearing |
||||
|
show_manual_browser_clearing() { |
||||
|
echo "🔧 Manual Browser Database Clearing:" |
||||
|
echo "" |
||||
|
echo "If you prefer to use your regular browser profile:" |
||||
|
echo "" |
||||
|
echo "1. Open browser Developer Tools (F12)" |
||||
|
echo "2. Go to Application/Storage tab" |
||||
|
echo "3. Find 'IndexedDB' section" |
||||
|
echo "4. Delete 'TimeSafari' database" |
||||
|
echo "5. Refresh the page" |
||||
|
echo "" |
||||
|
echo "⚠️ Note: This only clears the current site's data." |
||||
|
echo " For complete clearing, use the custom data directory method above." |
||||
|
} |
||||
|
|
||||
|
# Main script logic |
||||
|
echo "Choose your platform:" |
||||
|
echo "1. Electron (Desktop App)" |
||||
|
echo "2. Web Browser - Custom Data Directory" |
||||
|
echo "3. Web Browser - Manual Clearing" |
||||
|
echo "4. Show all options" |
||||
|
echo "" |
||||
|
|
||||
|
read -p "Enter your choice (1-4): " choice |
||||
|
|
||||
|
case $choice in |
||||
|
1) |
||||
|
clear_electron_database |
||||
|
;; |
||||
|
2) |
||||
|
show_web_instructions |
||||
|
;; |
||||
|
3) |
||||
|
show_manual_browser_clearing |
||||
|
;; |
||||
|
4) |
||||
|
echo "=== All Database Clearing Options ===" |
||||
|
echo "" |
||||
|
clear_electron_database |
||||
|
echo "" |
||||
|
show_web_instructions |
||||
|
echo "" |
||||
|
show_manual_browser_clearing |
||||
|
;; |
||||
|
*) |
||||
|
echo "❌ Invalid choice. Please run the script again." |
||||
|
exit 1 |
||||
|
;; |
||||
|
esac |
||||
|
|
||||
|
echo "" |
||||
|
echo "✅ Database clearing instructions completed!" |
||||
|
echo "" |
||||
|
echo "💡 Tip: After clearing the database, restart your development server:" |
||||
|
echo " npm run build:electron:dev # For Electron" |
||||
|
echo " npm run build:web:dev # For Web" |
Loading…
Reference in new issue