Hi HN!
We wrote this CLI to explore migrating from Firebase to Postgres as easily as possible.<p>We use Hasura[1] to generate the realtime GraphQL API on Postgres automatically. The CLI tool's work then mostly boils down to 2 things, which we do in phases:<p>1. Phase I: We migrate firebase data nodes to Postgres tables in a fairly naive way. We setup automatic IDs and parent-child tables and set up relationships between the tables. This gives you a write-many type GraphQL API on postgres. Realtime GraphQL with subscriptions and live-queries replaces firebase realtime<p>2. Phase II: As an optional next step, we try to normalise data by detecting overlapping data between tables. We delete "subset" tables and set up relationships to the superset table.<p>I've written up a blogpost with more details here: <a href="https://blog.hasura.io/firebase2graphql-moving-from-firebase-to-realtime-graphql-on-postgres-4d36cb7f4eaf" rel="nofollow">https://blog.hasura.io/firebase2graphql-moving-from-firebase...</a><p>[1] <a href="https://github.com/hasura/graphql-engine" rel="nofollow">https://github.com/hasura/graphql-engine</a> , <a href="https://hasura.io" rel="nofollow">https://hasura.io</a>
Do real-time subscriptions also work on sorted, filtered lists?<p>E.g. If a new item is added to the list, will it appear in the list in real-time?
Also, if an item's property is changed so that its position in the list changes, will this update the list in real-time as well?<p>If so, how does it prevent over-fetching?
Is this Hasura GraphQL Engine open source? What's the business model? Are there any features missing if you don't pay anything?<p>How does it get notified by PostgreSQL when the result of a query changes, since AFAIK PostgreSQL has no such built-in functionality? (it works if other apps change the database, right?)