Giter Site home page Giter Site logo

Comments (2)

kenshaw avatar kenshaw commented on May 3, 2024

Yes, I did not originally intend xo to be used with complicated schemas that are not supported by at least 2 or more databases. I will look into creating a fix for this during the large xo rewrites that will be happening soon. For reference, I believe the most "idiomatic" way to do this in Go would be to have the generated type for the child include the parent type, along these lines:

type Parent struct {
  A string
}

type Child struct {
  Parent
  B string
}

To get this working I really need a real world schema to work with. There are likely so many problems that I foresee might be encountered with the introspection code that it's likely not worth fixing if I don't have a real world example to test against.

FWIW, I would suggest NOT using table inheritance in your schemas. While the concept of table inheritance is nice, "in practice" I've rarely ever seen them used to any real effect. And my experience is that developers will down the road want to change the parent to a different database table, which in turn devolves into a big mess.

I would just suggest copying/pasting the rows into the child table's schema definition when they're needed. And, as far as I'm aware, there's no performance benefit to actually using inherits clauses in a schema, and the inherits clause is simply there as a notation helper for database architects (but it doesn't actually "do" anything). Also, from my experience when using inherits clauses with databases, there has never been a time that I wanted "only" the parent data, nor have I ever seen "multiple" table hierarchies being used in real practice.

I'm happy to be proven wrong, however -- if you have an example of an in-use schema where table inheritance is absolutely necessary (and not just for syntax shorthand) feel free to share here or email me directly if it contains sensitive information that cannot be made public. My email can be obtained through either my GitHub profile or by looking at the commit logs.

from xo.

nsjph avatar nsjph commented on May 3, 2024

In this instance, I've opted to move away from inheritance. Thanks for the detailed reply.

from xo.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.