# [DEF:backend.src.scripts.init_auth_db:Module]
#
# @SEMANTICS: setup, database, auth, migration
# @PURPOSE:   Initializes the auth database and creates the necessary tables.
# @LAYER:     Scripts
# @RELATION:  CALLS -> backend.src.core.database.init_db
#
# @INVARIANT: Safe to run multiple times (idempotent).

# [SECTION: IMPORTS]
import sys
from pathlib import Path

# Add src to path
sys.path.append(str(Path(__file__).parent.parent.parent))

from src.core.database import init_db
from src.core.logger import logger, belief_scope
from src.scripts.seed_permissions import seed_permissions
# [/SECTION]

# [DEF:run_init:Function]
# @PURPOSE: Main entry point for the initialization script.
# @POST:    auth.db is initialized with the correct schema and seeded permissions.
def run_init():
    with belief_scope("init_auth_db"):
        logger.info("Initializing authentication database...")
        try:
            init_db()
            logger.info("Authentication database initialized successfully.")
            
            # Seed permissions
            seed_permissions()
            
        except Exception as e:
            logger.error(f"Failed to initialize authentication database: {e}")
            sys.exit(1)
# [/DEF:run_init:Function]

if __name__ == "__main__":
    run_init()

# [/DEF:backend.src.scripts.init_auth_db:Module]