app_name: "Super Graph Production" host_port: 0.0.0.0:8080 web_ui: false # debug, info, warn, error, fatal, panic, disable log_level: "info" # Disable this in development to get a list of # queries used. When enabled super graph # will only allow queries from this list # List saved to ./config/allow.list use_allow_list: true # Throw a 401 on auth failure for queries that need auth # valid values: always, per_query, never auth_fail_block: always # Latency tracing for database queries and remote joins # the resulting latency information is returned with the # response enable_tracing: true # File that points to the database seeding script # seed_file: seed.js # Path pointing to where the migrations can be found # migrations_path: migrations # Postgres related environment Variables # SG_DATABASE_HOST # SG_DATABASE_PORT # SG_DATABASE_USER # SG_DATABASE_PASSWORD # Auth related environment Variables # SG_AUTH_RAILS_COOKIE_SECRET_KEY_BASE # SG_AUTH_RAILS_REDIS_URL # SG_AUTH_RAILS_REDIS_PASSWORD # SG_AUTH_JWT_PUBLIC_KEY_FILE # inflections: # person: people # sheep: sheep auth: # Can be 'rails' or 'jwt' type: rails cookie: _app_session rails: # Rails version this is used for reading the # various cookies formats. version: 5.2 # Found in 'Rails.application.config.secret_key_base' secret_key_base: 0a248500a64c01184edb4d7ad3a805488f8097ac761b76aaa6c17c01dcb7af03a2f18ba61b2868134b9c7b79a122bc0dadff4367414a2d173297bfea92be5566 # Remote cookie store. (memcache or redis) # url: redis://127.0.0.1:6379 # password: test # max_idle: 80, # max_active: 12000, # In most cases you don't need these # salt: "encrypted cookie" # sign_salt: "signed encrypted cookie" # auth_salt: "authenticated encrypted cookie" # jwt: # provider: auth0 # secret: abc335bfcfdb04e50db5bb0a4d67ab9 # public_key_file: /secrets/public_key.pem # public_key_type: ecdsa #rsa database: type: postgres host: db port: 5432 dbname: {{app_name_slug}}_development user: postgres password: '' #pool_size: 10 #max_retries: 0 #log_level: "debug" # Define variables here that you want to use in filters # sub-queries must be wrapped in () variables: account_id: "(select account_id from users where id = $user_id)" # Define defaults to for the field key and values below defaults: filters: ["{ user_id: { eq: $user_id } }"] # Field and table names that you wish to block blocklist: - ar_internal_metadata - schema_migrations - secret - password - encrypted - token tables: - name: customers # remotes: # - name: payments # id: stripe_id # url: http://rails_app:3000/stripe/$id # path: data # # pass_headers: # # - cookie # # - host # set_headers: # - name: Authorization # value: Bearer - # You can create new fields that have a # real db table backing them name: me table: users roles_query: "SELECT * FROM users as usr WHERE id = $user_id" roles: - name: anon tables: - name: products limit: 10 query: columns: ["id", "name", "description" ] aggregation: false insert: block: false update: block: false delete: block: false - name: user tables: - name: users query: filters: ["{ id: { _eq: $user_id } }"] - name: products query: limit: 50 filters: ["{ user_id: { eq: $user_id } }"] columns: ["id", "name", "description" ] disable_functions: false insert: filters: ["{ user_id: { eq: $user_id } }"] columns: ["id", "name", "description" ] set: - created_at: "now" update: filters: ["{ user_id: { eq: $user_id } }"] columns: - id - name set: - updated_at: "now" delete: block: true - name: admin match: id = 1 tables: - name: users # query: # filters: ["{ account_id: { _eq: $account_id } }"]