#!/usr/bin/env python3
import re
from pathlib import Path

# Lire le fichier
schema_path = Path(__file__).resolve().parents[1] / 'db' / 'schema' / 'CREATE_TABLE.sql'
with open(schema_path, 'r', encoding='utf-8') as f:
    content = f.read()

issues = []

# 1. Vérifier les CREATE TABLE
create_count = len(re.findall(r'CREATE TABLE', content))
print(f'✓ Nombre de CREATE TABLE détectés: {create_count}')

# 2. Vérifier les PRIMARY KEY
pk_count = len(re.findall(r'PRIMARY KEY', content))
print(f'✓ Nombre de PRIMARY KEY détectés: {pk_count}')

# 3. Vérifier les ; manquants
creates = re.findall(r'CREATE TABLE[^;]+;', content, re.DOTALL)
print(f'✓ Nombre de CREATE TABLE complètement fermés: {len(creates)}')

# 4. Vérifier les parenthèses équilibrées
open_parens = content.count('(')
close_parens = content.count(')')
print(f'✓ Parenthèses: {open_parens} ouvertes, {close_parens} fermées')
if open_parens != close_parens:
    issues.append(f'Parenthèses déséquilibrées: {open_parens} != {close_parens}')

# 5. Chercher les erreurs de virgules (virgule avant ))
bad_commas = re.findall(r',\s*\);', content)
if bad_commas:
    issues.append(f'{len(bad_commas)} virgules superflues avant ); détectées')
    
# 6. Vérifier les types de données SQL valides
valid_types = {'INT', 'BIGINT', 'VARCHAR', 'TEXT', 'DATETIME', 'DATE', 'YEAR', 
               'DECIMAL', 'DOUBLE', 'TINYINT', 'TIMESTAMP', 'BOOLEAN', 'AUTO_INCREMENT', 
               'PRIMARY', 'KEY', 'DEFAULT', 'CURRENT_TIMESTAMP', 'NOT', 'NULL'}

# 7. Compter les colonnes
columns = len(re.findall(r'\n\s+[a-zA-Z_][a-zA-Z0-9_]*\s+', content))
print(f'✓ Nombre de colonnes détectés: ~{columns}')

# 8. Rechercher des sections manquantes de commentaires
sections = re.findall(r'-- =.*?=', content)
print(f'✓ Nombre de sections détectées: {len(sections)}')

if issues:
    print('\n⚠️  PROBLÈMES DÉTECTÉS:')
    for issue in issues:
        print(f'  - {issue}')
else:
    print('\n✅ SYNTAXE OK - Aucun problème majeur détecté!')
    print('\nRésumé:')
    print(f'  - {create_count} tables')
    print(f'  - {columns} colonnes')
    print(f'  - {len(sections)} sections')

