Ho un'applicazione in grado di accettare file CSV per eseguire alcune operazioni. I file assomigliano a:
CREATE USER:username,last_name,first_name,age
user1,Smith,John,23
user2,Poppins,Mary,257
Esistono numerosi comandi che possono essere utilizzati, ciascuno con una specifica "sintassi" in termini di quali colonne sono richieste / autorizzate, il tipo di dati in ogni colonna, valori validi e regole più complesse (ad esempio 2 gli utenti non possono avere lo stesso nome utente, il nome utente non deve essere già presente nel database, ecc.).
Al momento, ognuno di questi comandi corrisponde a una classe specifica nel mio modello OO che esegue la convalida con il codice ( if (type(column) != STRING) blabla
) prima di eseguire i comandi.
Questo sta diventando ingombrante e vorrei estrarre le regole di convalida in formato leggibile dall'uomo, ad esempio:
Command=CREATE USER
Field='username', required, text, max_length=255, min_length=1,
unique, not exists in db table 'User'
Field='age', optional, number, min=0, max=120
....
Il mio codice potrebbe quindi diventare:
List<Error> errors = validate(csvFile, rulesFile);
if (errors.isEmpty()) //good to go
Tuttavia più ci penso, più sembra che sia un grosso mal di testa codificare ed effettivamente un intero progetto in sé, forse non vale il tempo speso.
Quale approccio potrei adottare per estrarre regole in formato leggibile dall'uomo senza complicare eccessivamente il codice di convalida?