HI Mushtaq,

Can you provide the data types of the columns so that this is more clear? I
believe that DOC_CONTENT should be a VARCHAR, in that case better to call
it something like SHORT_CONTENT, since this communicates that it is meant
to share relatively short text values such as URL and inline text. The name
DOC_CONTENT is misleading and might suggest we can store larger documents
in this column.

On Mon, 22 Oct 2018 at 14:02, Mushthaq Rumy <musht...@wso2.com> wrote:

> Hi All,
>
> We had an internal discussion and decided to do some modifications in the
> DB Schema related to API Docs (AM_API_RESOURCES and AM_API_DOC_META_DATA).
> We will be removing the foreign key constraint added to the
> AM_API_DOC_META_DATA table as it it has a primary key referred to the
> primary key of AM_API_RESOURCES which is not a good practice.
>
> And the following columns will be added to the respective tables.
>
> *AM_API_DOC_META_DATA*
> API_ID (This will be a foreign key referred to AM_API table)
> RESOURCE_ID
> DOC_CONTENT
>
> *AM_API_RESOURCES*
> RESOURCE_NAME
>
> So the content of INLINE and URL of API documents will be saved in 
> *AM_API_DOC_META_DATA
> (*DOC_CONTENT column*) *and content of FILE of API documents will be
> saved in *AM_API_RESOURCES *which will have a reference in 
> *AM_API_DOC_META_DATA
> (*RESOURCE_ID column*)*.
>
> Thanks & Regards,
> Mushthaq
>
>
> On Fri, Oct 19, 2018 at 9:23 PM Harsha Kumara <hars...@wso2.com> wrote:
>
>>
>>
>> On Fri, Oct 19, 2018 at 10:30 AM Uvindra Dias Jayasinha <uvin...@wso2.com>
>> wrote:
>>
>>> Here is my take on this. When I originally designed the schema I wasn't
>>> taking into consideration any of the practical implications associated with
>>> API resources being saved and retrieved at DB level. But now that we are at
>>> implementation stage some of these implications are much more clearer now.
>>>
>>> The AM_API_RESOURCES is a generic API resource table(For storing all
>>> file based resources associated with APIs). It will be storing the Swagger
>>> file, Ballerina file and documentation associated with the API.
>>>
>>> The AM_API_DOC_META_DATA table is specialized to store additional meta
>>> data only associated with documentation.
>>>
>>> Practically we need to do two calls for document uploads and adding meta
>>> data because we are dealing with two different content
>>> types(application/json for meta data and multipart/form-data for the file).
>>>
>>> All files have a name associated with them so it makes sense to have the
>>> file name in the AM_API_RESOURCES table. I don't think its a good idea to
>>> have a NULL value in a column that we are going to update later, this could
>>> lead to all kinds of complications that we will need to handle at code
>>> level. So its better to have the file name in AM_API_RESOURCES where we can
>>> ensure that we always have a valid name at the time of upload. It is also
>>> very easy for us to enforce that a file name for a given type does not get
>>> duplicated with a table level constraint if we go with this option.
>>>
>>> Joining between two tables like this in case we need to get the file
>>> name is trivial so I don't think we should let that affect us coming up
>>> with the best possible solution.
>>>
>> +1 it's a not good practice to add record which will update from null to
>> some value cause of update going for another table.
>>
>>>
>>> So Im +1 for option 2. WDYT?
>>>
>>> On Thu, 18 Oct 2018 at 17:31, Mushthaq Rumy <musht...@wso2.com> wrote:
>>>
>>>> Adding @dev-wso2 <dev@wso2.org>
>>>>
>>>> On Thu, Oct 18, 2018 at 5:25 PM Nuwan Dias <nuw...@wso2.com> wrote:
>>>>
>>>>> Please discuss technical problems externally.
>>>>>
>>>>> On Thu, Oct 18, 2018 at 3:44 PM Mushthaq Rumy <musht...@wso2.com>
>>>>> wrote:
>>>>>
>>>>>> Hi All,
>>>>>>
>>>>>> While I was implementing the view page for API document (File) I came
>>>>>> across an issue where we get the file name as null when using the
>>>>>> micro-service to get the content of the the API document.
>>>>>> While analyzing, when adding a file as an API document, I found out
>>>>>> that first we save only the doc metadata  and then we save the file 
>>>>>> content
>>>>>> using a second call.
>>>>>>
>>>>>> After analyzing the DB scripts I figured out that the fileName is
>>>>>> stored in AM_API_DOC_META_DATA table and the content is stored in
>>>>>> AM_API_RESOURCES. So during the first call we do not have the file name 
>>>>>> and
>>>>>> it is saved as null. During the second call the fileName is passed to the
>>>>>> micro-service but it is not stored anywhere. Hence, the fileName is null
>>>>>> when we get the content of the file. So to solve this issue, I thought of
>>>>>> two solutions.
>>>>>>
>>>>>> 1. During the second call while adding a file document for API as we
>>>>>> get the FileName to the micro-service we can retrieve the document 
>>>>>> metadata
>>>>>> using the documentId and update the fileName apart from saving the 
>>>>>> content.
>>>>>> Hence, it will be available when retrieving the content.
>>>>>>
>>>>>> 2. We can change the fileName field from AM_API_DOC_META_DATA to
>>>>>> AM_API_RESOURCES as the content of the document is stored in this table.
>>>>>> And while saving the content we can save it with the fileName. Hence, it
>>>>>> will be available when retrieving the content.
>>>>>>
>>>>>> IMO as option 1 will have more DB calls, option 2 would be the
>>>>>> preferred solution.
>>>>>>
>>>>>> Appreciate your valuable inputs.
>>>>>>
>>>>>> Thanks & Regards,
>>>>>> Mushthaq
>>>>>> --
>>>>>> Mushthaq Rumy
>>>>>> *Senior Software Engineer*
>>>>>> Mobile : +94 (0) 779 492140
>>>>>> Email : musht...@wso2.com
>>>>>> WSO2, Inc.; http://wso2.com/
>>>>>> lean . enterprise . middleware.
>>>>>>
>>>>>> <http://wso2.com/signature>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Nuwan Dias* | Director | WSO2 Inc.
>>>>> (m) +94 777 775 729 | (e) nuw...@wso2.com
>>>>> [image: Signature.jpg]
>>>>>
>>>>
>>>>
>>>> --
>>>> Mushthaq Rumy
>>>> *Senior Software Engineer*
>>>> Mobile : +94 (0) 779 492140
>>>> Email : musht...@wso2.com
>>>> WSO2, Inc.; http://wso2.com/
>>>> lean . enterprise . middleware.
>>>>
>>>> <http://wso2.com/signature>
>>>>
>>>
>>>
>>> --
>>> Regards,
>>> Uvindra
>>>
>>> Mobile: 777733962
>>>
>>
>>
>> --
>>
>> *Harsha Kumara*
>>
>> Associate Technical Lead, WSO2 Inc.
>> Mobile: +94775505618
>> Email: hars...@wso2.coim
>> Blog: harshcreationz.blogspot.com
>>
>> GET INTEGRATION AGILE
>> Integration Agility for Digitally Driven Business
>>
>
>
> --
> Mushthaq Rumy
> *Senior Software Engineer*
> Mobile : +94 (0) 779 492140
> Email : musht...@wso2.com
> WSO2, Inc.; http://wso2.com/
> lean . enterprise . middleware.
>
> <http://wso2.com/signature>
>


-- 
Regards,
Uvindra

Mobile: 777733962
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to