djrobstep / migra

Like diff but for PostgreSQL schemas
https://databaseci.com/docs/migra
The Unlicense
2.92k stars 125 forks source link

Developer Guide #208

Open dhutchison opened 2 years ago

dhutchison commented 2 years ago

This isn't really an issue with this project per-se, but there are a number of features that I would like to see implemented in this project (or the dependant schemainspect). Some of these have had open PRs for a while awaiting some polish. While I'd like to help contribute, I don't know where to start.

Python isn't my first choice language, so this may just be my lack of understanding of the python ecosystem, but is there any sort of high level guide available for how this project is setup/build/tested that could be shared to help new contributors?

mmkal commented 9 months ago

@dhutchison @peterldowns this is a very old issue, but I'm looking into porting this into nodejs/typescript. Let me know if you would be interested in helping. FYI @djrobstep in case you are aware of any existing efforts to do that!

peterldowns commented 9 months ago

@mmkal thanks for the tag. I'm not interested in working with node/typescript, but you might find my re-implementation of schemainspect to be useful as a reference. The relevant code is this schema package, which essentially does the same thing as schemainspect. It works slightly differently:

There's no capabilities built in for diffing schemas, but there are a bunch of options for explicitly adding dependencies between schema objects ("this table depends on this function").

I'd be interested to see your implementation and work, and happy to rubber duck or review or discuss any of the problems — but unfortunately I don't have the time to contribute any code myself. I think if you pull it off you'll probably help a ton of people, good luck!

dhutchison commented 9 months ago

@mmkal I'm in the same boat I'm afraid - already spread too thin. It's a shame this project seems not to be maintained anymore, as at one time it seemed to be the best of the bunch.

For my use cases, I think if I was looking into doing development in this area I would be trying to layer a CLI on top of the pgadmin schema diff functionality. I have no idea how good it actually is, but I'd assume as a postgres project it has a better chance of long term support (famous last words).

Good luck with it, it is an area where we need good tools - I've just got enough workarounds in place for the current shortcomings that it isn't a major worry just now.