+ New notify driver function which does the network magic we need
+ Adding event emitters for the following events
"delete-channel"
"create-channel"
"update-nick"
+ Server claims are now also generated per request so this could get some benefit from caching the jwt
One idea is to cache a jwt for a temporary amount of time
+ event! macro also lets us generate json payloads more easily
! Still requiring this module to built under an optional feature however that should be done easily
Basically the peer map system that we had before isn't going to work simply because
succesful client connections already have the data we need inside them.
Adding a whole wrapper around this just complicates things in a way that doesn't
really give any benefit.
For now every message is echo'd to all connections but that is easy enough to change
The JSON-API can't _really_ use regular http requests because this server then has to do a lot of
multi-threading nonsense.
For the sake of simplicity for myself and others that try to write their own FC
compliant servers: the rtc server(for now) only takes in websocket requests,
and attemptes to discern servers from users connections for event handling
This version comes with the benefit of having much more concise exec_map functionality among other things
This commit and the following ones also move db-lib to using a more 'try' based approach
+ Rtc server takes in new-message correctly but with basically no ux/auth for now
This should be fine as we can layer on security afterwards with no issue
* Renamed db helper function to be (debatably) more clear in its intentions
That function and everything in that module is quickly become awful however
+ Adding some notes for later db-lib development
! Initial id size will stay as u64 but u128 are easily the next major change
This change shouldn't break clients written in high level languages since most already use 128's under the hood anyway
- This commit also removes the auto_increment flag from basically everything that uses RNG id's
! Requirements for variable message fetching not yet met
! /message/get?id=<id> needs a way of passing back file contents
! The file upload is sketchy at best and not necessarily guaranteed to sync the
database with the file system
Authorization is required for implementation
So is a proper messaging model to make implementation clean and scalable
For now this serves as a good starting point for the rest of this project
* Fixed weird match with get_online_members
+ Now using special(smoll) Public Member struct for public member data fetches as.
They're size on networks should be pretty small so we can package a ton of them in a single request
DOCS changes:
- Removing references to unix timestamps in seconds
- Removing references to joindate
* Exact content-type values now specified
+ Auth module now uses std::time for time based calculations
! All time notations are i64 and rounded to the Millisecond
* Moving db pool to a lazy static to avoid constructing a whole pool on every request
+ Adding more logging per request, even if its lazy logging
* Content-Types are now correctly written per type
Removig chrono from api code as well
Removing chrono as dep in api code
+ Using Content-Type for /message/send content type
Updating cargo lists for removal of fluff deps
Removal of more fluff
Addking makefile to avoid compiling debug builds by accident while developing
This patch is simply meant to mark the beginning of the newest phase for the tui build.
I've 100% settled on using termion as the backend and marking what is done so far
Renderer side:
Termion has a similar issue where moving data happens very quietly so its best
if the two (renderer and cache) have the their data to use as they please
Cache Side:
Basically we own the data we're using because we constantly have to mutate data
ourselves
Config in the middle:
Mutable but only from the rendering side because the cache is completely transient
It technically to own its data but it does anyway because the render(backend)
likes to consume data like there's no tomorrow
The main reason for this change is for writing more descriptive code
Such a change isn't impossible with JS but requires annoying doccing that most dev environments don't really pick up on ever
Also the cache system is goingto be much more complex than anything else in this project so static compilation should help remove annoyances
✨ Channels list now fully asynchronous
✨ html pusher is now its own function for cleanness
➕ New ANY_CHANNEL integer is supported by the backend for requesting all channels in one go instead of voice|text
➖ Removed more callback hell code
✨ JSDocs updated to reflect their respective function signatures