-
-
Notifications
You must be signed in to change notification settings - Fork 191
Description
I would like to be able to..
Replace the current aggregate/overview endpoints
This requires:
- React-query/Tanstack-query for maintaining cache of valid data on the browser side
- An endpoint that allows easier definition of datapoints and access to them, similar to the query endpoint, but for individual datapoints
- Websocket connection for invalidating data that has updated on server side
- Jetty 12 for websocket configuration (Documentation for 11 was hard to find)
- Java 17 for Jetty 12
- Jetty 12 for websocket configuration (Documentation for 11 was hard to find)
- Some way for database to notify some rows have changed (Networks where servers independently insert data)
- TPS data
- Ping data
- (Others can probably be handled by the player join/leave/switch event listeners)
Is your feature request related to a problem? Please describe.
This is mostly a professional curiosity on how such a system can be built.
Typescript types offering dynamic typing on data returned by endpoints based on type specifier and sealed interfaces with switch expressions in newer Java versions have sparked a new interest in trying to build a more dynamic data model definition where the classes can model data points more accurately, where class Playtime actually contains all the logic required for constructing playtime queries to the database, rather than needing to link an endpoint to database method calls directly.
The vision is that each individual DataPoint (Text-value pair) could be fetched from this endpoint.
This would then allow users more control over what they are seeing, as the endpoint will need support timeframes/window to the data.
The aggregate endpoints exist because back when using HTML rendering it was easier to construct each page separately and fill the information in the DOM from single JSON result.
React has taken this need away, and even though the rewrite still uses top-down approach for data-fetching (similar to HTML), it's not limited by it, allowing rendered components to fetch their own data. Taking this approach to the DataPoint level allows each individual datapoint to fetch its own data, eventually reducing data-point lists to configuration objects which can then, at a later stage, be given to the user to modify via time range selectors.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status