Page MenuHomePhabricator

Avoid polymorphic database columns in the JADE schema
Closed, ResolvedPublic

Description

There was unanimous support in discussion of T200297 for avoiding any database polymorphism, and we'll take that principle further to eliminate all generic parameters to public APIs.

This task is done when:

  • Implement secondary tables. Each entity type will have its own table and indexes. Hooks keep the data in sync.
  • Split get and post APIs out by judgment schema, e.g. "judge diff damaging".

Other moments of the conversation also suggest that we should lose the generic subpage syntax where possible, but that doesn't need to be solved in this task. I've also extended this reasoning to the API, and am happy with the results so far.

It will still be beneficial to generalize backend logic such as the ContentHandler that they share, though it may be subclassed to implement each judgment schema as a slight variation with its own unique validation, rendering, and so on.

Related Objects

Event Timeline

Change 456044 had a related patch set uploaded (by Awight; owner: Awight):
[mediawiki/extensions/JADE@master] [WIP] Replace generic APIs with specific ones

https://gerrit.wikimedia.org/r/456044

Change 456048 had a related patch set uploaded (by Awight; owner: Awight):
[mediawiki/extensions/JADE@master] [WIP] APIs for specific schemas

https://gerrit.wikimedia.org/r/456048

Change 456078 had a related patch set uploaded (by Awight; owner: Awight):
[mediawiki/extensions/JADE@master] [WIP] rough secondary tables

https://gerrit.wikimedia.org/r/456078

Change 456048 abandoned by Awight:
[WIP] APIs for specific schemas

Reason:
squashed

https://gerrit.wikimedia.org/r/456048

awight renamed this task from Distinct APIs and tables for each judgment target type, drop polymorphism and generic interfaces or schemas to Avoid polymorphic database columns in the JADE schema.Sep 27 2018, 5:34 AM

Change 456044 abandoned by Ladsgroup:
[WIP] Replace generic APIs with specific ones

Reason:
This has merge conflict and requires so much work to bring to a state that can be useful. Also, this extension is being archived in favor its clone "Jade"

https://gerrit.wikimedia.org/r/456044