Creazione di una traduzione migliore per un nodo.js da api a rubino

0

Il mio client ha un SDK nodejs che recupera entries utilizzando un client che effettua richieste http. La loro api ha questo aspetto:

    var Query = Client.ContentType('blog').Query();
    Query
      .where("title", "welcome")
      .includeSchema()
      .includeCount()
      .toJSON()
      .find().then((response) => resolvePromise etc...))

Mi è stato assegnato il compito di rispecchiare questa api ma in modo idiomatico in ruby.

I miei tentativi precedenti di fare entries = client.entries({content_type: 'blog'}) sono stati rifiutati. Ora vogliono che scriva un'ap che si legge in questo modo:

query = client.content_type('blog').query;
entries = query
              .where("title", "welcome")
              .include_schema
              .include_count
              .to_json
              .find;

In qualche modo questo non ha senso per me (forse a causa del livello di errori di lettura coinvolti) e non so esattamente perché.

Se scrivo un metodo come content_type('content_uid') sulla mia classe client, sto scrivendo un setter parametrizzato che già infrange le regole.

Se sei un rubyist, ti sembra un buon design di api? Come posso migliorare su questo?

    
posta Amit Erandole 20.01.2017 - 17:29
fonte

1 risposta

2

Sembra una traslitterazione e la modellazione e la pratica della classe in Ruby è molto diversa e olistica di JavaScript. L'idioma JavaScript è più una rappresentazione di dati rispetto alle classi e agli oggetti OO di Ruby.

Il vantaggio della traslitterazione è che è più breve tempo per consegnare un prodotto funzionante, ma non sarà un Ruby idiomatico in qualcosa di diverso dai nomi dei metodi.

Sembra l'interazione con un generatore di query. Un modo per attaccarlo con un meta approccio. Scrivi ruby che implementa l'interfaccia desiderata ma utilizza il pattern bridge per il ruby query builder già esistente (Rails o Active Record).

    
risposta data 20.01.2017 - 21:43
fonte

Leggi altre domande sui tag