RFC: Does this syntax make sense?

Hey! I am writing a RPC solution in TS (that goes out to a lot of other languages), and not really sure what channel this should go in (it is a question, but a question asking for feedback), but I would really like comments on how I wish to handle situations where you might have an atomic set of functions where one result can go into another (batching can also be done this way whilst sharing the transaction). How do people feel about a syntax like this?
const [iban, paymentId] = client.atomic((client, { variable, pluck }) => {
// Defines a variable to store the IBAN. Note that this is syntactic sugar for what will happen
// during the request.
const iban = variable<string>("iban");

// Defines the array of requests the server must process. This is all bundled up and sent as a
// single request.
return [
// Firstly, we will store something in the array by getting an item, plucking a key, and then
// storing the variable. The server gets the pluck info, so it can optimise here if it wishes.
// No requirement, though.
iban.store(pluck(client.charities.getByName("AKT"), "iban")),

// Now say we want to add that IBAN to a list. This would typically require 2 API calls, but we
// have the variable here (it NEEDS to be set first). Lets use that to add it to the list. Note
// that this is atomic, and using the database transaction hook on the backend (or commit/rollback
// hooks).
client.payments.makeIbanPayment(iban, 100),
] as const;
});
const [iban, paymentId] = client.atomic((client, { variable, pluck }) => {
// Defines a variable to store the IBAN. Note that this is syntactic sugar for what will happen
// during the request.
const iban = variable<string>("iban");

// Defines the array of requests the server must process. This is all bundled up and sent as a
// single request.
return [
// Firstly, we will store something in the array by getting an item, plucking a key, and then
// storing the variable. The server gets the pluck info, so it can optimise here if it wishes.
// No requirement, though.
iban.store(pluck(client.charities.getByName("AKT"), "iban")),

// Now say we want to add that IBAN to a list. This would typically require 2 API calls, but we
// have the variable here (it NEEDS to be set first). Lets use that to add it to the list. Note
// that this is atomic, and using the database transaction hook on the backend (or commit/rollback
// hooks).
client.payments.makeIbanPayment(iban, 100),
] as const;
});
0 Replies
No replies yetBe the first to reply to this messageJoin
Want results from more Discord servers?
Add your server