Skip to content

snello-cms/snello-api

Repository files navigation

snello-api

snello backend api

API SERVICE

  • terminare le api base (CRUD) [X]
  • query di ricerca stile STRAPI [X]
  • gestire i query params e fare le query dinamicamente (usando MVEL) ELIMINATO [X]
  • gestire allegati e relazioni con altre tabelle [X]

BACKEND - SERVER SIDE

  • terminare la persistenza dei METADATI:
    • Condition [X]
    • FieldDefinition [X]
    • Metadata [X]
  • aggiungere eventi per la gestione delle variazioni dei metadati (per la mappa dei metadati in RAM nel service) [X]
  • creare un controller che invia le liste dei nomi (es selectQuery o campi di input) [X]

GESTIONE METADATI

  • gestione dei modelli di contenuti (stile STRAPI..)

  • vedi: nz.fiore.cms.util.ParamUtils:

  • static final String EQU = "=";

  • static final String NE = "_ne";

  • static final String _NE = "!=";

  • static final String LT = "_lt";

  • static final String _LT = "<";

  • static final String GT = "_gt";

  • static final String _GT = ">";

  • static final String LTE = "_lte";

  • static final String _LTE = "<=";

  • static final String GTE = "_gte";

  • static final String _GTE = ">=";

  • static final String CNT = "_contains";

  • static final String _CNT = " LIKE ";

  • static final String _LIKE = "%";

  • static final String CONTSS = "_containss";

  • static final String NCNT = "_ncontains";

  • static final String _NCNT = " NOT LIKE ";

  • static final String SPACE = " ";

    // _limit=2 _start=1 _sort=page_title:desc

  • static final String _LIMIT = "_limit";

  • static final String _START = "_start";

  • static final String _SORT = "_sort";

  • static final String _SELECT_FIELDS = "select_fields";

GESTIONE DEI DATI

  • gestire il backend, con forms dinamici ANG7 [X]
  • gestire i validatori
  • gestire la divisione dei FIELD divisi per GRUPPI
  • gestire i wizard di inserimento MULTI PAGINA

GESTIONE DELLE QUERY 'SCIOLTE'

  • permettere la creazione di query sulle tabelle esistenti o create tramite metadati [X]
  • es /api/queries/cities => mappa la lista delle city uniche nella tabella users
  • query_name: users (uuid, name, surname, city, address, postalcode)
  • select_query: select city from users group by city

SU BACKEND ANGULAR

  • in LIST: gestire la lista delle campi da mostrare nella lista dei dati [modellato usando showInList]
  • in LIST: gestire la lista delle proprieta cercabili con campi su cui cercare nel backend [modellato usando searchable,searchCondition,searchFieldName]

BACKEND - CLIENT SIDE

  • gestire autenticazione tramite API REST (login+JWT tokens)

DATABASE LIBERO

  • gestire la generazione dinamica delle tabelle su MYSQL [X]
@Requires(property = DB_TYPE, value = "mysql")
public class MysqlJdbcRepository implements JdbcRepository {}
  • verificare come estendere POSTGRESQL [X]
@Singleton
@Requires(property = DB_TYPE, value = "postgresql")
public class PostgresqlJdbcRepository implements JdbcRepository {}
  • verificare come estendere H2 - per snello ALL IN ONE [X]
@Singleton
@Requires(property = DB_TYPE, value = "h2")
public class H2JdbcRepository implements JdbcRepository {

RUN IN DEBUG MODE docker-compose -f docs/docker/docker-compose-databases/docker-compose-mysql.yml up java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8787 -jar target/snello-api-0.1.jar ng serve

first login: username: admin password: admin

** RUN API locally **

docker-compose -f docker-compose-mysql.yml up
mvn compile exec:java

RUN TESTS

docker-compose -f docker-compose-mysql.yml up
mvn test

SNELLO MULTIJOIN UNIDIREZIONALI!!!!!! DA TESTARE BENE!!! BENE!!!!

  • quando salvo il metadato, devo generare la tabella di join e le conditions collegate (impostato)
  • quando faccio una insert/update devo inserire i valori nella tabella di join (impostato)

esempio con due tabelle: classi: uuid, name, description studenti uuid, name, classi (multijoin)

la condition per leggere: http://localhost:8080/api/studenti/dasdasd/classi { metadata_uuid: "be79be1b-b23a-4a15-b970-bf3d7a4fc734" metadata_name: "classi", condition: "studenti_id_nn && join_table_nn" metadata_name: "classi" query_params: "studenti_id" sub_query: "uuid in (select classi_id from studenti_classi where studenti_id = ?)" }

RELEASE 1.0 UFFICIALE (cosa manca!!!)

  • bug sulle conditions

    • non c'è nella maschera di insert il campo "separator" [OK]
    • verificare che funzionino con nuove migliorie [FARETEST SULLE QUERY REST]
    • quando si entra il menu a tendina non riporta il valore PRE inserito [OK - se valorizzato uuid]
  • chiudere il giro del cambio password

    • la password di ADMIN dovrebbe essere generata al primo boot (non usando admin/admin => PERICOLOSISSIMO)
  • verificare il funzionamento del multijoin

    • [multijoin e condition: TESTARE LA DELETE DELLE CONDITIONS]
    • gestire la transazionalità delle operazioni per multijoin
  • verificare il draggable & droppable

  • verificare che sia chiaro il path ad un file (dalla maschera di upload/view dei files)

    • [VA ESPLICITATO COME NELLA DOCUMENTAZIONE]
  • permettere una sottocartella come punto di partenza nella gestione dei files remoti (su BITBUQUET) [da PROVARE]

  • gestire gli errori nella pagina (farli vedere quando arrivcno)

    • [VEDI QUANTO FATTO IN SERVIZI ITALIA - CLASSE SCAZZATA COPRE IL MESSAGGIO]
  • verificare la sezione LINKS

    • funziona?
    • crea tabelle?
  • BUG: sui documenti non si elimina. quando entri in edit, c'è una funzione chiamata all'infinito

  • ELIMINA NON PARTE!

  • VA MOSTRATO il path per scarivare

GESTIONE LINKS: non va una mazza--

PARTE JAVA

  • codice da rifattorizzare (mettere a fattor comune con classi astratte o metodi statici)
  • scrivere i TEST
  • rendere native (se si puo) => adesso siamo troppo ciccioni