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