Skip to content

Instantly share code, notes, and snippets.

@fabriciofmsilva
Created February 12, 2018 14:38
Show Gist options
  • Save fabriciofmsilva/c00727419f617ca4d5661ee2b13a5739 to your computer and use it in GitHub Desktop.
Save fabriciofmsilva/c00727419f617ca4d5661ee2b13a5739 to your computer and use it in GitHub Desktop.
Method Chaining in an API that not allows that
// conexão criada com o banco antes
const store = 'books';
object = { name: 'Cangaceiro JavaScript', isbn: 9788594188014 };

const request = connection
    .transaction([store],"readwrite")
    .objectStore(store)
    .add(object);
        
request.onsuccess = () => console.log('persistiu com sucesso');

request.onerror = e => console.log(e.target.error);
// conexão criada com o banco antes
const store = 'books';
object = { name: 'Cangaceiro JavaScript', isbn: 9788594188014 };

// cria um wrapper a partir da requisição
ChainableRequest.of(connection
    .transaction([store],"readwrite")
    .objectStore(store)
    .add(object)
).success(() => console.log('persistiu com sucesso'))
).error(e => console.log(e.target.error))
// ChainableRequest.js
class ChainableRequest {

    constructor(request) {
        this._request = request;
    }

    static of(request) {
        return new ChainableRequest(request);
    },

    success(fn) {
        this._request.onsuccess = fn;
        return this;
    }

    error(fn) {
        this._request.onerror = fn;
        return this;
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment