I've tried a bunch of other migration tools but I don't think anyone has done a better job of it than Rails has.
>and code-generate the basic CRUD Go stuff from the schema
I guess you read schema.rb and output some structs and methods? Because a quick Google search only yielded some Yeoman plugins …
There's a bunch of tools that do this already (one I know works is "xo"), but I wanted join-table support.
We're using it in production on a few CoreOS projects.
Code for this here - it'd be pretty simple to put it in its own little tool or even a bash script or something, and there are surely some other tools that do something similar... This one psql only as it relies on the psql binary to load the sql, but hopefully gives you the idea. I haven't bothered developing it further to do things like run a single migration or down migrations as haven't required that so far.
Quite simple, does the job.
I use something I wrote myself (see link in other comment). Nothing fancy and could be replicated easily - save sql files for migrations, run migration if not in db already, then store in the db the name of the migration run.
Also for modern Docker/Kubernetes ops environments you need some additional infrastructure for table stakes. Here's my standard Nulladmin.com stack:
Routing - https://github.com/go-chi/chi
Command flags - https://github.com/spf13/pflag
Config - https://github.com/spf13/viper
Logging - https://github.com/Sirupsen/logrus
Metrics - https://github.com/prometheus/client_golang/prometheus
SQL helper - https://github.com/jmoiron/sqlx
OpenTracing - https://github.com/opentracing/opentracing-go
I love this about Go. A router and you are off and running.
It is so simple to wrap handlers with your own middleware for auth, pre-flighting etc.
I put together a little example web app based based on a few popular packages, including gorilla / mux. It's not a framework, just a nice starting point for little apps.
For building a REST API
And unless you have very specific requirements, the performance is probably not a relevant concern in a real application either.
I really like how a proto file defines our whole Api. It makes designing and referencing the Api easy.
Really nice interface for adding tracing, middleware/finalizer logging/metrics, circuit-breakers, etc to your application.
at my day job in fintech I use the standard library and gorilla/mux
Do augment it a bit here and there with other libraries.
I've tinkered with echo and a couple other frameworks, but Gin is widely used enough that I can usually stack overflow most issues.
Crazy fast and has worked fine under heavy load.
That's a pretty good summary of the rest of it for me too...pretty good, but sad that it doesn't adhere to the standard libs `http` interfaces