validation.py•1.05 kB
"""Input validation utilities."""
import re
from typing import Any, Dict
VALID_TABLE_NAME = re.compile(r"^[a-zA-Z_][a-zA-Z0-9_]*$")
VALID_COLUMN_NAME = re.compile(r"^[a-zA-Z_][a-zA-Z0-9_]*$")
def validate_table_name(name: str) -> bool:
    """Validate table name against SQL identifier rules."""
    return bool(VALID_TABLE_NAME.match(name))
def validate_column_name(name: str) -> bool:
    """Validate column name against SQL identifier rules."""
    return bool(VALID_COLUMN_NAME.match(name))
def validate_sql_type(sql_type: str) -> bool:
    """Validate SQLite data type.
    Supports base types and compound types like 'INTEGER PRIMARY KEY'.
    Extracts the base type and validates it.
    """
    valid_types = {
        "INTEGER",
        "TEXT",
        "REAL",
        "BLOB",
        "NUMERIC",
        "BOOLEAN",
        "DATE",
        "DATETIME",
    }
    # Extract base type (first word) to handle compound types like "INTEGER PRIMARY KEY"
    base_type = sql_type.strip().split()[0].upper()
    return base_type in valid_types