[Pulp-dev] 'id' versus 'pulp_id' on Content

Jeff Ortel jortel at redhat.com
Wed May 23 14:33:28 UTC 2018


In classic relational modeling, using ID as the primary key is common 
practice.  Especially when ORMs are involved.  The "id" added by plugin 
writers is a natural key so naming it ID goes against convention.  Every 
field in base models used by plugins has potential for name collisions.  
Where does it end?  Every column having a pulp_ or _ prefix?  Plugins 
create relatively few tables and it doesn't seem unreasonable for plugin 
writers to select other names to resolve naming conflicts.

On 05/23/2018 07:50 AM, Brian Bouterse wrote:
> Currently the Content model [0] has 'id' as it's primary key which is 
> inherited from MasterModel here [1]. By naming our pk 'id', we are 
> preventing plugin writers from also using that field. That field name 
> is common for content types. For example: both RPM and Nuget content 
> also expect to use the 'id' field to store data about the content type 
> itself (not Pulp's pk). We learned about the Nuget incompatibility at 
> ConfigMgmgtCamp from a community member. I learned about this issue 
> with RPM from @dalley.
>
> The only workaround a plugin writer has is to call their field 
> 'rpm_id' or something like that. I don't see how it's unavoidable that 
> this renaming won't be passed directly onto the user for things like 
> filtering, creating units, etc. I think that is an undesirable outcome 
> just so that the Pulp pk can be named 'id'.
>
> One option would be to rename 'id' to 'pulp_id' at the MasterModel. 
> This is also somewhat ugly for Pulp developers, but it would be (a) 
> crystal clear to the user in all cases and (b) allow Content writers 
> to model their content types correctly.
>
> Another option would be to rename the pk for 'Content' specifically 
> and not at the MasterModel level. I think that would create more 
> confusion than benefit so I recommend doing it at the MasterModel level.
>
> What do you all think?
>
> [0]: 
> https://github.com/pulp/pulp/blob/6f492ee8fac94b8562dc62d87e6886869e052e7e/pulpcore/pulpcore/app/models/content.py#L106
> [1]: 
> https://github.com/pulp/pulp/blob/d1dc089890f167617fe9917af087d5587708296b/pulpcore/pulpcore/app/models/base.py#L25
>
> -Brian
>
>
> _______________________________________________
> Pulp-dev mailing list
> Pulp-dev at redhat.com
> https://www.redhat.com/mailman/listinfo/pulp-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/pulp-dev/attachments/20180523/87e3a80a/attachment.htm>


More information about the Pulp-dev mailing list