6 ms·
Postgraphql: A GraphQL schema created by reflection over a PostgreSQL schema
- therealmarv 11y agoI really like the README in this project. I had a lot of questions (especially going to production and extending GraphQL myself) which are answered in the README. https://github.com/calebmer/postgraphql/blob/master/README.md https://github.com/calebmer/postgraphql/blob/master/README.m... But I don't know how to do it yet.
- j_s 11y agoCurious how response depth is usually handled in something like this, especially if recursion comes into play. Don't know much yet about Relay.
- tuukkah 11y agoThere's no unbounded recursion in GraphQL: response depth equals query depth.
- tlrobinson 11y agoYou have to specify the depth in the query by explicitly describing each level. There's no way to specify infinite depth (by design). https://github.com/facebook/graphql/issues/91 https://github.com/facebook/graphql/issues/91 If you really wanted to get all the comments on a post, for example, you would have to have a flattened "comments" listing (but each comment could have an id and parent id, which you could use to re-build the nested structure on the client)
- calebmer 11y agoFacebook handles malicious queries by setting a list of permitted queries. I want to get this implemented soon at the server layer, check out my PR here: https://github.com/graphql/express-graphql/pull/77 https://github.com/graphql/express-graphql/pull/77
- bageldaughter 11y agoPeople might also be interested in Postgrest. Postgrest is an open-source project that creates a REST api based on a Postgres schema: https://github.com/begriffs/postgrest https://github.com/begriffs/postgrest It ain't GraphQL, and I don't understand GraphQL enough to note functional differences. Postgrest made it extremely easy to serve a more-than-sufficient api for my db though.
- calebmer 11y agoDefinitely, PostgREST is an awesome project and definitely an inspiration for PostGraphQL. I gave the project credit in the README: https://github.com/calebmer/postgraphql#thanks https://github.com/calebmer/postgraphql#thanks
- gjolund 11y agoGreat work on PostGraphQL. Easy to setup, and well documented. I'm going to start doing some load testing, I'll let you know what I find.
- gjolund 11y agoPostgrest is one of the most underrated projects out right now for automating api creation. Easy to work with, reliable, and scalable. It motivated me to learn Haskell also.
- rattray 11y agoThis looks amazing. I can't wait to dig into the internals and play around. I've been thinking about a "Postgres-first" application design for some time, where a thin GraqhQL/REST layer sits on top, and most of the business logic lives in Postgres directly, or operates as a triggered async function (eg; AWS Lambda).
- gjolund 11y agoYou might want to look at the serverless project. You can setup a cloudfront distribution postgres rds. Use Postgraphql/postgrest as stateless api layer. I would use a docker container and ECS to keep it horizontally scalable. Then just whip together a client app that consumes your api. https://github.com/serverless/serverless https://github.com/serverless/serverless
- sametmax 11y agoWith WAMP and crossbar.io, you can already directly query in SQL you PostGres db from the browser. So this does not give you real advanstages over existing solutions. The real benefit of GraphQL is that it unifies stuff: - several queries can be masqued as one; - several storages systems can be queried in one shot; - the cache layer can be integrated in the graphql server; - queries can actually no type in any backend and just run code; - the query doesn't hold logic, just data mapping. - queries can propagate events, trigger tasks, etc. The graphql server is nice because it's an intermediary layer, separating your data manipulation from the rest of the logic in your system. You definitly don't want you DB to be the only one doing the authentification/permissions nowaday, unless you want to script it to do social auth, OAuth, connect to a ldap, etc. And you do want to be able to graphql your way into stuff that are not into your db.
- regularfry 11y agoWhere I can see this being really useful is for people trying out GraphQL for the first time. If you already know PostgreSQL, throwing this interface over it means the GraphQL bit is the only thing you've got to learn.
- sametmax 11y agoIndeed, I haven't though about that.
- andrewingram 11y agoAgreed. My impression is that using this in a real project is almost a non-starter, but it's a good way for trying out GraphQL.
- MustardTiger 11y agoWhat? Why would it be a "non-starter"? It is made for being used for real, and people use it for real.
- 11y ago
- bluejekyll 11y agoI know this is simple, but when you need to publish multiple versions of an API on a db, I don't see this as useful. It will only get in the way down the road of defining a strong API. What you end up with in something like this is the data model is the API. Why not just expose SQL directly at that point? (Rhetorical question)
- yeukhon 11y agoThe psql client returns a format web client cannot consume. The translation to JSON for example is really important. The reverse (speak SQL) is also quite true. That being said, my observation (and my own project too is guilty of this) is that a lot of ORM users simply map their model almost 1-1 in the API response. An example would be returning a Book the json basically contains every column as keys.
- chacham15 11y agoThis sounds awesome: I really wish something like this were available for Vitess (http://vitess.io/ http://vitess.io/) so that it could also be automatically sharded.