185 lines
6.8 KiB
Python
Executable File
185 lines
6.8 KiB
Python
Executable File
#!/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()
|
|
|