@Bhathiya Jayasekara <bhath...@wso2.com> yes, this is also an option. In reality though very few customers upload lots of additional docs. We could just rename DOC_META_DATA table to DOCS and store the docs in that table itself. So at the very minimum we have a swagger and ballerina definition per an API stored in the RESOURCES table.
Can we make a call on this soon? Implementation is getting delayed because of this. On Mon, 22 Oct 2018 at 21:08, Bhathiya Jayasekara <bhath...@wso2.com> wrote: > 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/>* > -- Regards, Uvindra Mobile: 777733962
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev