Turns out my dummy-sgx doesn't act the same as production.
Rather than getting a successful registration with no phone, in production I
get false, so I need to handle that.
This should allow us, the admins, to query information about a customer
without having to dive in and run a couple redis queries and some
database queries before getting the full picture of who we're talking
to.
It also allows the users to request some data about themselves. Balance and
phone number are already visible in other places, but their expiry is currently
not, and people have been asking about it.
On start up, check for users with low balance and NOTIFY about them. LISTEN for
such notifications and process by either sending a low-balance warning message
or else attempting an auto-top-up as configured.
Using NOTIFY/LISTEN because then we can NOTIFY after any INSERT that leaves the
balance too low (using a trigger). Doing the sync on start-up in case we missed
a NOTIFY during any downtime. Using the Redis lock to prevent spamming a
low-balance user in case of many restarts or if they have many small
transactions happen in one day.
If the user does not proceed with a command after N time, we don't hold on to it
forever and time out. We cannot return anything to the user because they
haven't sent us anything, so just ignore it.
Stephen Paul Weber
created
2f33536
When user cancels the command, respond with canceled
Click to expand commit body
If the cancel has not been fully handled in the body of the command, at least
respond with canceled status and do not go to sentry.
* command-object:
ErrorToSend => FinalStanza
Since Command#finish causes an error, a then off the end won't work
Refactor commands to have Command and Command::Execution objects
Show things from all of the start of range (today)
Stephen Paul Weber
created
9a1a09e
Refactor commands to have Command and Command::Execution objects
Click to expand commit body
Brings the common elements of all commands together, and threads the most useful
state (such as ability to reply) through automatically using the new EMPromise
fiber trampoline.
Stephen Paul Weber
created
d799a92
Ask electrum to notify on new BTC addresses
Using the Repository pattern to encapsulate the fetch and create operations on
the persistence layer for a domain object. These were not really factories in
the classic sense, but rather "fetch from persisitence layer" methods, and so
they now have a home.
Import structured logging gem ougai and replace current use of puts/warn with
logging calls. Gives us level, timestamp, and formatting for exceptions and/or
hash of arbitrary context data. Can do JSON logging if we ever need that, but
set to human-readable (with colour if isatty) for now.