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@redhat.com
https://www.redhat.com/mailman/listinfo/pulp-dev
_______________________________________________
Pulp-dev mailing list
Pulp-dev@redhat.com
https://www.redhat.com/mailman/listinfo/pulp-dev