mirror of
https://github.com/jooray/rss2podcast.git
synced 2025-05-23 07:52:00 +00:00
62 lines
2.1 KiB
Python
62 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
import argparse
|
|
from utils import get_engine, create_tables, Episode, User
|
|
from sqlalchemy.orm import sessionmaker
|
|
|
|
def create_db(db_url):
|
|
engine = get_engine(db_url)
|
|
create_tables(engine)
|
|
print(f"Database tables created in {db_url}")
|
|
|
|
def migrate_db(from_db_url, to_db_url):
|
|
from_engine = get_engine(from_db_url)
|
|
to_engine = get_engine(to_db_url)
|
|
|
|
from_Session = sessionmaker(bind=from_engine)
|
|
to_Session = sessionmaker(bind=to_engine)
|
|
|
|
create_tables(to_engine)
|
|
|
|
from_session = from_Session()
|
|
to_session = to_Session()
|
|
|
|
try:
|
|
# Migrate Episodes
|
|
episodes = from_session.query(Episode).all()
|
|
for episode in episodes:
|
|
to_session.merge(episode)
|
|
# Migrate Users
|
|
users = from_session.query(User).all()
|
|
for user in users:
|
|
to_session.merge(user)
|
|
to_session.commit()
|
|
print(f"Migration from {from_db_url} to {to_db_url} completed successfully.")
|
|
except Exception as e:
|
|
to_session.rollback()
|
|
print(f"Error during migration: {e}")
|
|
finally:
|
|
from_session.close()
|
|
to_session.close()
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(description="Database management tool.")
|
|
subparsers = parser.add_subparsers(dest='command')
|
|
|
|
# Create command
|
|
create_parser = subparsers.add_parser('create', help='Create database tables.')
|
|
create_parser.add_argument('--db', required=True, help='Database filename or connection string.')
|
|
|
|
# Migrate command
|
|
migrate_parser = subparsers.add_parser('migrate', help='Migrate database.')
|
|
migrate_parser.add_argument('--from', dest='from_db', required=True, help='Source database filename or connection string.')
|
|
migrate_parser.add_argument('--to', dest='to_db', required=True, help='Destination database filename or connection string.')
|
|
|
|
args = parser.parse_args()
|
|
|
|
if args.command == 'create':
|
|
create_db(args.db)
|
|
elif args.command == 'migrate':
|
|
migrate_db(args.from_db, args.to_db)
|
|
else:
|
|
parser.print_help()
|