rollthecloudinc / quell

Climate aware CMS breaking web apps free from carbon emissions.
https://demo.carbonfreed.app/pages/create-panel-page
GNU General Public License v3.0
13 stars 1 forks source link

Druid Views / Reusable data sources #4

Open verti-go opened 3 years ago

verti-go commented 3 years ago

Build views of collections using angular query builder.

Select root entity.

Once root entity selected populate fields for entity. Fields will include relational data.

Begin with elastic.

Architecture put into place should support extending system using other providers.

Views will only be responsible for building queries that return data. Panels will be used for display of that data. The integration with panels will be a separate issue.

This is going to require changes to the api. View configuration will be savable independent of panels.

Probably a view lib and extended entity api for saving views.

An api to handle introspection of properties for any given entity will also be required.


alt

Forget query builder

replace with my own way to building those queries.

Integrate with plugin system.

plugin - adaptor (mongo, sql, elastic, etc.) plugin - field - field type determines comparison ops available - probably based on attribute?

Integrate with json rules engine ->

form -> rule -> query

--> rules module

--> create rules

-> take those rules and convert them to query for x service.

RuleConversion -> plugin = accepts rules and converts to query for provider. RuleField -> determines comparison available for field or data necessary for the comparison.

Rules can have contexts.

A rule can require a context. The context can be used to build the rule.

RuleEntityDiscovery

-> given an entity finds all rule fields available for entity (tree).

-> Screw that -> I'm going to build my own using plugins. Forget that pecker stick and his project. A project which is not maintained well. I will just build my own.


RuleType -> type -> comparison ops

string -> eq, like, neq, start with, ends with long -> eq, neq, lt, gt, lte, gte, between bool -> eq, neq date(extends long)


rule -> context -> ad --------> fetch fields for ad ------------------> create select with available fields for ad entity. -----------------------------> entities can have relations to others -> select relation bring in that entities fields (recursive).

---> rule_entity ------> rule_entity_field


Convert object to attribute

attribute types map to conditionals

ViewCondition

ViewCondition -> rules engine -> transformer (storage) -> search query

Problem: Means anyone can build a query and pass it in. – big issue - no good - security vulnerability MAJOR

I can't allow people to build these queries because it is a major security vulnerability.


AXE - Can't allow due to security issues. People should create services to return data. Panels isn't meant to build these queries anyway. Forget it.

windbeneathyourwings commented 3 years ago

This has come back into focus using reusable data sets generated via a combination of api calls, and client side transformations. The combination of each we could consider a view since data source is already taken.

windbeneathyourwings commented 3 years ago

Data sources could be saved as separate entities and shared.