One of HasuraDB's engineers here. Permissions are declaratively configured. You can look at the source for the demo here :
https://github.com/hasura/demo1-config/tree/master/hasura-db
*_permissions.yml are used to configure permissions.
HN user
One of HasuraDB's engineers here. Permissions are declaratively configured. You can look at the source for the demo here :
https://github.com/hasura/demo1-config/tree/master/hasura-db
*_permissions.yml are used to configure permissions.
We have considered this. We really liked what heroku did with their postgres service, especially the 'followers' feature. Considering hasura's core principle is not to reinvent things, we really want this integration to happen. However there are few technical challenges before this becomes a realistic option.
1. hasura-db requires few custom extensions (written in c) to be installed into postgres which is not possible in heroku's postgres.
2. hasura-db also makes some assumptions about authentication which is handled by the hasura platform.
Your 'cloud code' is just another microservice. You write it in whatever language you wish, package it with its dependencies as a docker image which will then be deployed onto hasura's platform and linked with the rest of your app's infrastructure.
Essentially, you don't have to deploy anything on your own server. Whatever functionality hasura's 'batteries' can't provide (yet), you write it as another microservice. At the end of the day, your app is composed of several microservices (containers running in the cloud), few hasura provided and few custom written.
The title suggests that Hasura is a platform for developing Haskell apps. It is not true. Hasura is language/framework agnostic. The core parts of Hasura are built using Haskell.
Edit: If the op can remove the word 'Haskell' from the title, it would be great.
hasura-db is built on top of postgres. It provides monogodb like document api.
One of the core hasura devs here. 'hasura-db' is a wrapper over postgres. The idea is to provide a very neat json api to talk to postgres with a permissions model. However, you still have the raw access to postgres. So, you can always fire up a django/rails/etc app and connect to your postgres instance and implement any custom functionality that can't be done using hasura-db's json api.
Coming to your question: Since the underlying db which actually stores your data is postgres, you get all the power of a relational database. With hasura-db you get a 'monogodb' like document api. So, hasura-db + postgres tries to capture the best of both worlds.
Since your data is (designed to be) completely normalized in postgres, 'hasura-search' integrates with elastic search to create denormalised documents for efficient full text search in a declarative way. So, hasura-search esentially listens to any changes to your data in postgres and builds denormalised documents that are inserted/updated/deleted into elasticsearch. So, your elasticsearch data stays in sync with your postgres data in real time without any effort from your side ! Deployment will be at least as easy as on Heroku.