Hi Fazlan,

In general, we should be trying to fetch the required data using Siddhi
provider.

Going forward our recommendation is to use Siddhi provider due to reasons
such as it's not coupled with a specidic database and provides protection
for vulnerabilities such as SQL injection.

Thanks
*,Sajith Ravindra*
Associate Technical Lead
WSO2 Inc.; http://wso2.com
lean.enterprise.middleware

mobile: +94 77 2273550
blog: http://sajithr.blogspot.com/
<http://lk.linkedin.com/pub/shani-ranasinghe/34/111/ab>


On Thu, Nov 15, 2018 at 5:13 PM Niveathika Rajendran <niveath...@wso2.com>
wrote:

> Hi Fazlan,
>
> As per the offline discussion with Sandalu, we have decided to go with 2
> step query approach for now since, we do not have a feature which allows
> running queries on top of a database from Widget level, as this is a
> security vulnerability. In this case, the entire database would have to be
> exposed rather than a single table.
>
> As of now, the issue was that *applicationId* needed for the query is
> available in a separate table. This table "AM_SUBSCRIPTION" can be queried
> first to get the applicationId, after which the needed table can be queried
> for the data needed in the widgets.
>
>
> Best Regards,
> *Niveathika Rajendran,*
> *Senior Software Engineer.*
> *Mobile : +94 077 903 7536*
>
>
>
>
>
> On Thu, Nov 15, 2018 at 4:55 PM Fazlan Nazeem <fazl...@wso2.com> wrote:
>
>> Analytics team,
>>
>> Will we have a solution for joining multiple tables from a widget config
>> in a future release? If not, is there an alternative solution.
>>
>> On Thu, Nov 15, 2018 at 11:58 AM Sandalu Kalpanee <sand...@wso2.com>
>> wrote:
>>
>>> Hi all,
>>>
>>> A small addition to the above mail.
>>>
>>> For the above graph, I just need to get the count(APPLICATION_ID) and
>>> CREATED_TIME from AM_APPLICATION table which will be filtered using AM_API,
>>> AM_SUBSCRIBER, AM_SUBSCRIPTION tables.
>>>
>>> *AM_API (API_ID int,API_PROVIDER string,API_NAME string,API_VERSION
>>> string,CONTEXT string,CONTEXT_TEMPLATE string,API_TIER string,CREATED_BY
>>> string,CREATED_TIME string,UPDATED_BY string,UPDATED_TIME string)*
>>>
>>> *AM_APPLICATION (APPLICATION_ID int,NAME string,SUBSCRIBER_ID
>>> int,APPLICATION_TIER string,CALLBACK_URL string,DESCRIPTION
>>> string,APPLICATION_STATUS string,GROUP_ID string,CREATED_BY
>>> string,CREATED_TIME string,UPDATED_BY string,UPDATED_TIME string,UUID
>>> string,TOKEN_TYPE string)*
>>>
>>> *AM_SUBSCRIPTION (SUBSCRIPTION_ID int,TIER_ID string,API_ID
>>> int,LAST_ACCESSED string,APPLICATION_ID int,SUB_STATUS
>>> string,SUBS_CREATE_STATE string,CREATED_BY string,CREATED_TIME
>>> string,UPDATED_BY string,UPDATED_TIME string,UUID string)*
>>>
>>> *AM_SUBSCRIBER (SUBSCRIBER_ID int,USER_ID string,TENANT_ID
>>> int,EMAIL_ADDRESS string,DATE_SUBSCRIBED string,CREATED_BY
>>> string,CREATED_TIME string,UPDATED_BY string,UPDATED_TIME string)*
>>>
>>> Thanks.
>>>
>>> On Thu, Nov 15, 2018 at 8:36 AM Sandalu Kalpanee <sand...@wso2.com>
>>> wrote:
>>>
>>>> Hi All,
>>>>
>>>> I came up with an issue while working on my publisher dashboard widgets
>>>> creation.
>>>>
>>>> *Issue:* No option to join tables in siddhi queries.
>>>> *Widget:* Applications Created Over Time + (Other widgets which will
>>>> consume AM_DB data)
>>>> *Data source:* I am using Siddhi store data provider with the shared
>>>> AM_DB. (In the deployment.yaml file I have added a data source
>>>> referring the AM_DB at APIM side.)
>>>>
>>>> ************ sample providerConfig in widgetConf.json ****************
>>>> "type": "SiddhiStoreDataProvider",
>>>> "config": {
>>>> "siddhiApp": "@App:name('App Name') @primaryKey('Primary Key')
>>>> @store(type=\"rdbms\" , datasource=\"AM_DB\") define table TableName 
>>>> (Column
>>>> Headings with Types) ;",
>>>> "queryData": {
>>>> "query": "Query"
>>>> },
>>>>
>>>> * 
>>>> ****************************************************************************
>>>>
>>>> *Required Widget View: *
>>>>
>>>> According to the below figure the first combo(All APIs or My APIs) will
>>>> provide the user an option to filter the API list in the third combo. API
>>>> list inside the third combo will be populated by AM_API table using a
>>>> separate query in the widgetConf.json. The second combo will list down the
>>>> APP creators which will be populated by AM_subscriber table using another
>>>> query. And according to the selected options in these combos the data will
>>>> be filtered from AM_APPLICATION table.
>>>>
>>>> [image: App-Registrations.png]
>>>>
>>>> *Query used to generate the graph in APIM 2.6 version: *
>>>> https://github.com/wso2/carbon-apimgt/blob/v6.4.50/components/apimgt/org.wso2.carbon.apimgt.usage/org.wso2.carbon.apimgt.usage.client/src/main/java/org/wso2/carbon/apimgt/usage/client/UsageClient.java#L331
>>>>
>>>> Ex: If a user has selected options other than 'All' for both second and
>>>> third combos, the data should be filtered from AM_APPLICATION table joining
>>>> with 3 other tables AM_API, AM_SUBSCRIBER, and AM_SUBSCRIPTION.
>>>>
>>>> But as there is no way to join tables using siddhi queries (And as
>>>> RDBMS batch data provider will not be OK with changing DB types), there
>>>> will be an issue to generate widgets which consumes data from AM_DB (This
>>>> issue doesn't count for the widgets generated by STAT_DB since the data
>>>> will be extracted from a single table).
>>>>
>>>> Highly appreciated if you can suggest any solution for this. Thanks in
>>>> advance.
>>>>
>>>> Best Regards,
>>>> *Sandalu Kalpanee*
>>>> *Software Engineer - Intern*
>>>> *WSO2*
>>>>
>>>
>>>
>>> --
>>> *Sandalu Kalpanee*
>>> *Software Engineer - Intern*
>>> *WSO2*
>>> _______________________________________________
>>> Architecture mailing list
>>> Architecture@wso2.org
>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>
>>
>>
>> --
>> Thanks & Regards,
>>
>> *Fazlan Nazeem*
>> Senior Software Engineer
>> WSO2 Inc
>> Mobile : +94772338839
>> fazl...@wso2.com
>> _______________________________________________
>> Architecture mailing list
>> Architecture@wso2.org
>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>
>
_______________________________________________
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to