This looks ok. Btw, I was wondering if it's a good idea to have all files
(swaggers, wsdls, docs etc.) in a single table. Won't that make the table
grow faster and make querying slower? How about keeping a separate table
for this? Then we can have a foreign key as well.

Thanks,
Bhathiya

On Mon, Oct 22, 2018 at 2:57 PM Uvindra Dias Jayasinha <uvin...@wso2.com>
wrote:

> +1, CONTENT  is fine
>
> On Mon, 22 Oct 2018 at 14:45, Mushthaq Rumy <musht...@wso2.com> wrote:
>
>> Hi Uvindra,
>>
>> Please find the data types below
>>
>> *AM_API_DOC_META_DATA*
>> API_ID (This will be a foreign key referred to AM_API table) VARCHAR(255)
>> RESOURCE_ID VARCHAR(255)
>> DOC_CONTENT VARCHAR(1024)
>>
>> *AM_API_RESOURCES*
>> RESOURCE_NAME VARCHAR(255)
>>
>> And I think we can change it DOC_CONTENT to CONTENT .
>> WDYT?
>>
>> Thanks & Regards,
>> Mushthaq
>>
>> On Mon, Oct 22, 2018 at 2:35 PM Uvindra Dias Jayasinha <uvin...@wso2.com>
>> wrote:
>>
>>> 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
>>>
>>
>>
>> --
>> 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
>


-- 
*Bhathiya Jayasekara*
*Technical Lead,*
*WSO2 inc., http://wso2.com <http://wso2.com>*

*Phone: +94715478185*
*LinkedIn: http://www.linkedin.com/in/bhathiyaj
<http://www.linkedin.com/in/bhathiyaj>*
*Twitter: https://twitter.com/bhathiyax <https://twitter.com/bhathiyax>*
*Blog: http://movingaheadblog.blogspot.com
<http://movingaheadblog.blogspot.com/>*
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to