This commit is contained in:
Iliyan Angelov
2025-12-06 03:27:35 +02:00
parent 7667eb5eda
commit 5a8ca3c475
2211 changed files with 28086 additions and 37066 deletions

184
Backend/seeders/run_seeder.py Executable file
View File

@@ -0,0 +1,184 @@
#!/usr/bin/env python3
"""
Seeder Runner
Run all seeders or specific seeders
"""
import sys
import argparse
from pathlib import Path
# Add parent directory to path
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from homepage_seeder import seed_homepage
from about_seeder import seed_about_page
from contact_seeder import seed_contact_page
from privacy_seeder import seed_privacy_page
from faq_seeder import seed_faq_page
from accessibility_seeder import seed_accessibility_page
from refunds_seeder import seed_refunds_page
from terms_seeder import seed_terms_page
from cancellation_seeder import seed_cancellation_page
from footer_seeder import seed_footer_page
from banner_seeder import seed_banners
from user_seeder import seed_users_and_roles
from room_seeder import seed_rooms_and_types
from service_seeder import seed_services
from blog_seeder import seed_blog_posts
from settings_seeder import seed_settings
from src.shared.config.database import SessionLocal
from src.shared.config.logging_config import get_logger
logger = get_logger(__name__)
def main():
parser = argparse.ArgumentParser(description='Run database seeders')
parser.add_argument(
'--seeder',
choices=['homepage', 'about', 'contact', 'privacy', 'faq', 'accessibility', 'refunds', 'terms', 'cancellation', 'footer', 'banners', 'users', 'rooms', 'services', 'blog', 'settings', 'all'],
default='all',
help='Which seeder to run (default: all)'
)
parser.add_argument(
'--clear-banners',
action='store_true',
help='Clear existing banners before seeding (only applies to banners seeder)'
)
parser.add_argument(
'--clear-rooms',
action='store_true',
help='Clear existing rooms before seeding (only applies to rooms seeder)'
)
parser.add_argument(
'--clear-services',
action='store_true',
help='Clear existing services before seeding (only applies to services seeder)'
)
parser.add_argument(
'--clear-blog',
action='store_true',
help='Clear existing blog posts before seeding (only applies to blog seeder)'
)
parser.add_argument(
'--clear-settings',
action='store_true',
help='Clear existing settings before seeding (only applies to settings seeder)'
)
parser.add_argument(
'--admin-email',
default='admin@hotel.com',
help='Admin user email (default: admin@hotel.com)'
)
parser.add_argument(
'--admin-password',
default='admin123',
help='Admin user password (default: admin123)'
)
parser.add_argument(
'--admin-name',
default='Admin User',
help='Admin user full name (default: Admin User)'
)
args = parser.parse_args()
db = SessionLocal()
try:
# Always seed users/roles first if running all or users seeder
if args.seeder == 'users' or args.seeder == 'all':
logger.info('Running user and role seeder...')
seed_users_and_roles(
db,
admin_email=args.admin_email,
admin_password=args.admin_password,
admin_name=args.admin_name
)
logger.info('User and role seeder completed!')
if args.seeder == 'homepage' or args.seeder == 'all':
logger.info('Running homepage seeder...')
seed_homepage(db)
logger.info('Homepage seeder completed!')
if args.seeder == 'about' or args.seeder == 'all':
logger.info('Running about page seeder...')
seed_about_page(db)
logger.info('About page seeder completed!')
if args.seeder == 'contact' or args.seeder == 'all':
logger.info('Running contact page seeder...')
seed_contact_page(db)
logger.info('Contact page seeder completed!')
if args.seeder == 'privacy' or args.seeder == 'all':
logger.info('Running privacy policy page seeder...')
seed_privacy_page(db)
logger.info('Privacy policy page seeder completed!')
if args.seeder == 'faq' or args.seeder == 'all':
logger.info('Running FAQ page seeder...')
seed_faq_page(db)
logger.info('FAQ page seeder completed!')
if args.seeder == 'accessibility' or args.seeder == 'all':
logger.info('Running accessibility page seeder...')
seed_accessibility_page(db)
logger.info('Accessibility page seeder completed!')
if args.seeder == 'refunds' or args.seeder == 'all':
logger.info('Running refunds policy page seeder...')
seed_refunds_page(db)
logger.info('Refunds policy page seeder completed!')
if args.seeder == 'terms' or args.seeder == 'all':
logger.info('Running terms of use page seeder...')
seed_terms_page(db)
logger.info('Terms of use page seeder completed!')
if args.seeder == 'cancellation' or args.seeder == 'all':
logger.info('Running cancellation policy page seeder...')
seed_cancellation_page(db)
logger.info('Cancellation policy page seeder completed!')
if args.seeder == 'footer' or args.seeder == 'all':
logger.info('Running footer page seeder...')
seed_footer_page(db)
logger.info('Footer page seeder completed!')
if args.seeder == 'banners' or args.seeder == 'all':
logger.info('Running banner seeder...')
seed_banners(db, clear_existing=args.clear_banners)
logger.info('Banner seeder completed!')
if args.seeder == 'rooms' or args.seeder == 'all':
logger.info('Running room seeder...')
seed_rooms_and_types(db, clear_existing=args.clear_rooms)
logger.info('Room seeder completed!')
if args.seeder == 'services' or args.seeder == 'all':
logger.info('Running service seeder...')
seed_services(db, clear_existing=args.clear_services)
logger.info('Service seeder completed!')
if args.seeder == 'blog' or args.seeder == 'all':
logger.info('Running blog seeder...')
seed_blog_posts(db, clear_existing=args.clear_blog)
logger.info('Blog seeder completed!')
if args.seeder == 'settings' or args.seeder == 'all':
logger.info('Running settings seeder...')
seed_settings(db, clear_existing=args.clear_settings)
logger.info('Settings seeder completed!')
logger.info('All seeders completed successfully!')
except Exception as e:
logger.error(f'Seeder failed: {str(e)}', exc_info=True)
sys.exit(1)
finally:
db.close()
if __name__ == '__main__':
main()