From 40ac71a12353e10cdd6fcde73356b17576008734 Mon Sep 17 00:00:00 2001
From: Louis Capitanchik <contact@louiscap.co>
Date: Tue, 16 Nov 2021 19:42:11 +0000
Subject: [PATCH] Set up hasura metadata

---
 hasura/config.yaml                            |  6 ++
 hasura/jwk_props_dev.json                     | 13 +++
 hasura/metadata/actions.graphql               |  0
 hasura/metadata/actions.yaml                  |  6 ++
 hasura/metadata/allow_list.yaml               |  1 +
 hasura/metadata/cron_triggers.yaml            |  1 +
 hasura/metadata/databases/databases.yaml      | 14 +++
 .../default/tables/public_analytics.yaml      | 32 +++++++
 .../default/tables/public_bundle_codes.yaml   | 25 ++++++
 .../default/tables/public_files.yaml          | 45 ++++++++++
 .../tables/public_files_search_index.yaml     | 15 ++++
 .../default/tables/public_metrics.yaml        | 21 +++++
 .../tables/public_oauth_access_tokens.yaml    | 10 +++
 .../public_oauth_authorization_codes.yaml     | 10 +++
 .../default/tables/public_oauth_clients.yaml  | 47 ++++++++++
 .../tables/public_oauth_refresh_tokens.yaml   | 10 +++
 .../default/tables/public_survey_users.yaml   | 20 +++++
 .../default/tables/public_surveys.yaml        | 33 +++++++
 .../default/tables/public_uploads.yaml        | 25 ++++++
 .../tables/public_user_bundle_codes.yaml      | 18 ++++
 .../tables/public_user_file_likes.yaml        | 21 +++++
 .../default/tables/public_users.yaml          | 89 +++++++++++++++++++
 .../databases/default/tables/tables.yaml      | 15 ++++
 hasura/metadata/query_collections.yaml        |  1 +
 hasura/metadata/remote_schemas.yaml           |  1 +
 hasura/metadata/rest_endpoints.yaml           |  1 +
 hasura/metadata/version.yaml                  |  1 +
 27 files changed, 481 insertions(+)
 create mode 100644 hasura/config.yaml
 create mode 100644 hasura/jwk_props_dev.json
 create mode 100644 hasura/metadata/actions.graphql
 create mode 100644 hasura/metadata/actions.yaml
 create mode 100644 hasura/metadata/allow_list.yaml
 create mode 100644 hasura/metadata/cron_triggers.yaml
 create mode 100644 hasura/metadata/databases/databases.yaml
 create mode 100644 hasura/metadata/databases/default/tables/public_analytics.yaml
 create mode 100644 hasura/metadata/databases/default/tables/public_bundle_codes.yaml
 create mode 100644 hasura/metadata/databases/default/tables/public_files.yaml
 create mode 100644 hasura/metadata/databases/default/tables/public_files_search_index.yaml
 create mode 100644 hasura/metadata/databases/default/tables/public_metrics.yaml
 create mode 100644 hasura/metadata/databases/default/tables/public_oauth_access_tokens.yaml
 create mode 100644 hasura/metadata/databases/default/tables/public_oauth_authorization_codes.yaml
 create mode 100644 hasura/metadata/databases/default/tables/public_oauth_clients.yaml
 create mode 100644 hasura/metadata/databases/default/tables/public_oauth_refresh_tokens.yaml
 create mode 100644 hasura/metadata/databases/default/tables/public_survey_users.yaml
 create mode 100644 hasura/metadata/databases/default/tables/public_surveys.yaml
 create mode 100644 hasura/metadata/databases/default/tables/public_uploads.yaml
 create mode 100644 hasura/metadata/databases/default/tables/public_user_bundle_codes.yaml
 create mode 100644 hasura/metadata/databases/default/tables/public_user_file_likes.yaml
 create mode 100644 hasura/metadata/databases/default/tables/public_users.yaml
 create mode 100644 hasura/metadata/databases/default/tables/tables.yaml
 create mode 100644 hasura/metadata/query_collections.yaml
 create mode 100644 hasura/metadata/remote_schemas.yaml
 create mode 100644 hasura/metadata/rest_endpoints.yaml
 create mode 100644 hasura/metadata/version.yaml

diff --git a/hasura/config.yaml b/hasura/config.yaml
new file mode 100644
index 0000000..85d6ce2
--- /dev/null
+++ b/hasura/config.yaml
@@ -0,0 +1,6 @@
+version: 3
+endpoint: http://localhost:15432
+metadata_directory: metadata
+actions:
+  kind: synchronous
+  handler_webhook_baseurl: "http://172.17.0.1:7124/api"
diff --git a/hasura/jwk_props_dev.json b/hasura/jwk_props_dev.json
new file mode 100644
index 0000000..84d7106
--- /dev/null
+++ b/hasura/jwk_props_dev.json
@@ -0,0 +1,13 @@
+{
+  "jwk_url": "http://172.17.0.1:7124/.well-known/jwks.json",
+  "header": {
+    "type": "Authorization"
+  },
+  "issuer": "urn:hackerfest:systems:auth",
+  "claims_namespace": "urn:hackerfest:resources:claims",
+  "claims_map": {
+    "x-hasura-user-id": { "path":  "$$['urn:hackerfest:resources:claims']['user-id']" },
+    "x-hasura-default-role": { "path": "$$['urn:hackerfest:resources:claims']['default-role']" },
+    "x-hasura-allowed-roles": { "path": "$$['urn:hackerfest:resources:claims']['allowed-roles']" }
+  }
+}
\ No newline at end of file
diff --git a/hasura/metadata/actions.graphql b/hasura/metadata/actions.graphql
new file mode 100644
index 0000000..e69de29
diff --git a/hasura/metadata/actions.yaml b/hasura/metadata/actions.yaml
new file mode 100644
index 0000000..1edb4c2
--- /dev/null
+++ b/hasura/metadata/actions.yaml
@@ -0,0 +1,6 @@
+actions: []
+custom_types:
+  enums: []
+  input_objects: []
+  objects: []
+  scalars: []
diff --git a/hasura/metadata/allow_list.yaml b/hasura/metadata/allow_list.yaml
new file mode 100644
index 0000000..fe51488
--- /dev/null
+++ b/hasura/metadata/allow_list.yaml
@@ -0,0 +1 @@
+[]
diff --git a/hasura/metadata/cron_triggers.yaml b/hasura/metadata/cron_triggers.yaml
new file mode 100644
index 0000000..fe51488
--- /dev/null
+++ b/hasura/metadata/cron_triggers.yaml
@@ -0,0 +1 @@
+[]
diff --git a/hasura/metadata/databases/databases.yaml b/hasura/metadata/databases/databases.yaml
new file mode 100644
index 0000000..65a11b2
--- /dev/null
+++ b/hasura/metadata/databases/databases.yaml
@@ -0,0 +1,14 @@
+- name: default
+  kind: postgres
+  configuration:
+    connection_info:
+      database_url:
+        from_env: HASURA_GRAPHQL_DATABASE_URL
+      isolation_level: read-committed
+      pool_settings:
+        connection_lifetime: 600
+        idle_timeout: 180
+        max_connections: 50
+        retries: 1
+      use_prepared_statements: true
+  tables: "!include default/tables/tables.yaml"
diff --git a/hasura/metadata/databases/default/tables/public_analytics.yaml b/hasura/metadata/databases/default/tables/public_analytics.yaml
new file mode 100644
index 0000000..ec71a3b
--- /dev/null
+++ b/hasura/metadata/databases/default/tables/public_analytics.yaml
@@ -0,0 +1,32 @@
+table:
+  name: analytics
+  schema: public
+object_relationships:
+- name: parent
+  using:
+    foreign_key_constraint_on: parent_id
+array_relationships:
+- name: children
+  using:
+    foreign_key_constraint_on:
+      column: parent_id
+      table:
+        name: analytics
+        schema: public
+select_permissions:
+- permission:
+    allow_aggregations: true
+    columns:
+    - id
+    - session_id
+    - action
+    - event
+    - start_time
+    - end_time
+    - parent_id
+    - properties
+    - location
+    - device
+    - meta
+    filter: {}
+  role: overseer
diff --git a/hasura/metadata/databases/default/tables/public_bundle_codes.yaml b/hasura/metadata/databases/default/tables/public_bundle_codes.yaml
new file mode 100644
index 0000000..d49af64
--- /dev/null
+++ b/hasura/metadata/databases/default/tables/public_bundle_codes.yaml
@@ -0,0 +1,25 @@
+table:
+  name: bundle_codes
+  schema: public
+array_relationships:
+- name: user_bundle_codes
+  using:
+    foreign_key_constraint_on:
+      column: bundle_code_id
+      table:
+        name: user_bundle_codes
+        schema: public
+select_permissions:
+- permission:
+    allow_aggregations: true
+    columns:
+    - id
+    - name
+    - description
+    - platforms
+    - meta
+    - created_at
+    - updated_at
+    - deleted_at
+    filter: {}
+  role: overseer
diff --git a/hasura/metadata/databases/default/tables/public_files.yaml b/hasura/metadata/databases/default/tables/public_files.yaml
new file mode 100644
index 0000000..e82bf5f
--- /dev/null
+++ b/hasura/metadata/databases/default/tables/public_files.yaml
@@ -0,0 +1,45 @@
+table:
+  name: files
+  schema: public
+object_relationships:
+- name: files_search_index
+  using:
+    foreign_key_constraint_on:
+      column: file_id
+      table:
+        name: files_search_index
+        schema: public
+- name: user
+  using:
+    foreign_key_constraint_on: user_id
+array_relationships:
+- name: user_file_likes
+  using:
+    foreign_key_constraint_on:
+      column: file_id
+      table:
+        name: user_file_likes
+        schema: public
+select_permissions:
+- permission:
+    allow_aggregations: true
+    columns:
+    - id
+    - user_id
+    - provider
+    - file_root
+    - file_name
+    - stream
+    - comment
+    - tags
+    - labels
+    - featured
+    - requires_approval
+    - approved
+    - meta
+    - created_at
+    - updated_at
+    - deleted_at
+    - featured_at
+    filter: {}
+  role: overseer
diff --git a/hasura/metadata/databases/default/tables/public_files_search_index.yaml b/hasura/metadata/databases/default/tables/public_files_search_index.yaml
new file mode 100644
index 0000000..183be4b
--- /dev/null
+++ b/hasura/metadata/databases/default/tables/public_files_search_index.yaml
@@ -0,0 +1,15 @@
+table:
+  name: files_search_index
+  schema: public
+object_relationships:
+- name: file
+  using:
+    foreign_key_constraint_on: file_id
+select_permissions:
+- permission:
+    allow_aggregations: true
+    columns:
+    - file_id
+    - search_index
+    filter: {}
+  role: overseer
diff --git a/hasura/metadata/databases/default/tables/public_metrics.yaml b/hasura/metadata/databases/default/tables/public_metrics.yaml
new file mode 100644
index 0000000..72a2830
--- /dev/null
+++ b/hasura/metadata/databases/default/tables/public_metrics.yaml
@@ -0,0 +1,21 @@
+table:
+  name: metrics
+  schema: public
+object_relationships:
+- name: user
+  using:
+    foreign_key_constraint_on: author_id
+select_permissions:
+- permission:
+    allow_aggregations: true
+    columns:
+    - id
+    - value
+    - type
+    - location
+    - author_id
+    - meta
+    - recorded_at
+    - deleted_at
+    filter: {}
+  role: overseer
diff --git a/hasura/metadata/databases/default/tables/public_oauth_access_tokens.yaml b/hasura/metadata/databases/default/tables/public_oauth_access_tokens.yaml
new file mode 100644
index 0000000..fbcc300
--- /dev/null
+++ b/hasura/metadata/databases/default/tables/public_oauth_access_tokens.yaml
@@ -0,0 +1,10 @@
+table:
+  name: oauth_access_tokens
+  schema: public
+object_relationships:
+- name: oauth_client
+  using:
+    foreign_key_constraint_on: client_id
+- name: user
+  using:
+    foreign_key_constraint_on: user_id
diff --git a/hasura/metadata/databases/default/tables/public_oauth_authorization_codes.yaml b/hasura/metadata/databases/default/tables/public_oauth_authorization_codes.yaml
new file mode 100644
index 0000000..eafee9b
--- /dev/null
+++ b/hasura/metadata/databases/default/tables/public_oauth_authorization_codes.yaml
@@ -0,0 +1,10 @@
+table:
+  name: oauth_authorization_codes
+  schema: public
+object_relationships:
+- name: oauth_client
+  using:
+    foreign_key_constraint_on: client_id
+- name: user
+  using:
+    foreign_key_constraint_on: user_id
diff --git a/hasura/metadata/databases/default/tables/public_oauth_clients.yaml b/hasura/metadata/databases/default/tables/public_oauth_clients.yaml
new file mode 100644
index 0000000..749d7f3
--- /dev/null
+++ b/hasura/metadata/databases/default/tables/public_oauth_clients.yaml
@@ -0,0 +1,47 @@
+table:
+  name: oauth_clients
+  schema: public
+object_relationships:
+- name: user
+  using:
+    foreign_key_constraint_on: owner_id
+array_relationships:
+- name: oauth_access_tokens
+  using:
+    foreign_key_constraint_on:
+      column: client_id
+      table:
+        name: oauth_access_tokens
+        schema: public
+- name: oauth_authorization_codes
+  using:
+    foreign_key_constraint_on:
+      column: client_id
+      table:
+        name: oauth_authorization_codes
+        schema: public
+- name: oauth_refresh_tokens
+  using:
+    foreign_key_constraint_on:
+      column: client_id
+      table:
+        name: oauth_refresh_tokens
+        schema: public
+select_permissions:
+- permission:
+    allow_aggregations: true
+    columns:
+    - id
+    - secret
+    - owner_id
+    - redirect_uris
+    - grant_types
+    - internal
+    - meta
+    - created_at
+    - updated_at
+    - deleted_at
+    - name
+    - description
+    filter: {}
+  role: overseer
diff --git a/hasura/metadata/databases/default/tables/public_oauth_refresh_tokens.yaml b/hasura/metadata/databases/default/tables/public_oauth_refresh_tokens.yaml
new file mode 100644
index 0000000..4aed769
--- /dev/null
+++ b/hasura/metadata/databases/default/tables/public_oauth_refresh_tokens.yaml
@@ -0,0 +1,10 @@
+table:
+  name: oauth_refresh_tokens
+  schema: public
+object_relationships:
+- name: oauth_client
+  using:
+    foreign_key_constraint_on: client_id
+- name: user
+  using:
+    foreign_key_constraint_on: user_id
diff --git a/hasura/metadata/databases/default/tables/public_survey_users.yaml b/hasura/metadata/databases/default/tables/public_survey_users.yaml
new file mode 100644
index 0000000..c598f86
--- /dev/null
+++ b/hasura/metadata/databases/default/tables/public_survey_users.yaml
@@ -0,0 +1,20 @@
+table:
+  name: survey_users
+  schema: public
+object_relationships:
+- name: survey
+  using:
+    foreign_key_constraint_on: survey_id
+- name: user
+  using:
+    foreign_key_constraint_on: user_id
+select_permissions:
+- permission:
+    allow_aggregations: true
+    columns:
+    - survey_id
+    - user_id
+    - properties
+    - created_at
+    filter: {}
+  role: overseer
diff --git a/hasura/metadata/databases/default/tables/public_surveys.yaml b/hasura/metadata/databases/default/tables/public_surveys.yaml
new file mode 100644
index 0000000..c39d8d0
--- /dev/null
+++ b/hasura/metadata/databases/default/tables/public_surveys.yaml
@@ -0,0 +1,33 @@
+table:
+  name: surveys
+  schema: public
+array_relationships:
+- name: survey_users
+  using:
+    foreign_key_constraint_on:
+      column: survey_id
+      table:
+        name: survey_users
+        schema: public
+select_permissions:
+- permission:
+    allow_aggregations: true
+    columns:
+    - id
+    - slug
+    - name
+    - header_image_url
+    - partner_names
+    - description
+    - requirements
+    - settings
+    - properties
+    - public
+    - published_at
+    - expires_at
+    - meta
+    - created_at
+    - updated_at
+    - deleted_at
+    filter: {}
+  role: overseer
diff --git a/hasura/metadata/databases/default/tables/public_uploads.yaml b/hasura/metadata/databases/default/tables/public_uploads.yaml
new file mode 100644
index 0000000..0d2f61c
--- /dev/null
+++ b/hasura/metadata/databases/default/tables/public_uploads.yaml
@@ -0,0 +1,25 @@
+table:
+  name: uploads
+  schema: public
+object_relationships:
+- name: user
+  using:
+    foreign_key_constraint_on: user_id
+select_permissions:
+- permission:
+    allow_aggregations: true
+    columns:
+    - id
+    - user_id
+    - provider
+    - upload_url
+    - request_params
+    - expires_at
+    - status
+    - status_reason
+    - meta
+    - created_at
+    - updated_at
+    - deleted_at
+    filter: {}
+  role: overseer
diff --git a/hasura/metadata/databases/default/tables/public_user_bundle_codes.yaml b/hasura/metadata/databases/default/tables/public_user_bundle_codes.yaml
new file mode 100644
index 0000000..2044a9c
--- /dev/null
+++ b/hasura/metadata/databases/default/tables/public_user_bundle_codes.yaml
@@ -0,0 +1,18 @@
+table:
+  name: user_bundle_codes
+  schema: public
+object_relationships:
+- name: bundle_code
+  using:
+    foreign_key_constraint_on: bundle_code_id
+- name: user
+  using:
+    foreign_key_constraint_on: user_id
+select_permissions:
+- permission:
+    allow_aggregations: true
+    columns:
+    - user_id
+    - bundle_code_id
+    filter: {}
+  role: overseer
diff --git a/hasura/metadata/databases/default/tables/public_user_file_likes.yaml b/hasura/metadata/databases/default/tables/public_user_file_likes.yaml
new file mode 100644
index 0000000..cb1016f
--- /dev/null
+++ b/hasura/metadata/databases/default/tables/public_user_file_likes.yaml
@@ -0,0 +1,21 @@
+table:
+  name: user_file_likes
+  schema: public
+object_relationships:
+- name: file
+  using:
+    foreign_key_constraint_on: file_id
+- name: user
+  using:
+    foreign_key_constraint_on: user_id
+select_permissions:
+- permission:
+    allow_aggregations: true
+    columns:
+    - user_id
+    - file_id
+    - created_at
+    - updated_at
+    - deleted_at
+    filter: {}
+  role: overseer
diff --git a/hasura/metadata/databases/default/tables/public_users.yaml b/hasura/metadata/databases/default/tables/public_users.yaml
new file mode 100644
index 0000000..3a2f1ba
--- /dev/null
+++ b/hasura/metadata/databases/default/tables/public_users.yaml
@@ -0,0 +1,89 @@
+table:
+  name: users
+  schema: public
+array_relationships:
+- name: files
+  using:
+    foreign_key_constraint_on:
+      column: user_id
+      table:
+        name: files
+        schema: public
+- name: metrics
+  using:
+    foreign_key_constraint_on:
+      column: author_id
+      table:
+        name: metrics
+        schema: public
+- name: oauth_access_tokens
+  using:
+    foreign_key_constraint_on:
+      column: user_id
+      table:
+        name: oauth_access_tokens
+        schema: public
+- name: oauth_authorization_codes
+  using:
+    foreign_key_constraint_on:
+      column: user_id
+      table:
+        name: oauth_authorization_codes
+        schema: public
+- name: oauth_clients
+  using:
+    foreign_key_constraint_on:
+      column: owner_id
+      table:
+        name: oauth_clients
+        schema: public
+- name: oauth_refresh_tokens
+  using:
+    foreign_key_constraint_on:
+      column: user_id
+      table:
+        name: oauth_refresh_tokens
+        schema: public
+- name: survey_users
+  using:
+    foreign_key_constraint_on:
+      column: user_id
+      table:
+        name: survey_users
+        schema: public
+- name: uploads
+  using:
+    foreign_key_constraint_on:
+      column: user_id
+      table:
+        name: uploads
+        schema: public
+- name: user_bundle_codes
+  using:
+    foreign_key_constraint_on:
+      column: user_id
+      table:
+        name: user_bundle_codes
+        schema: public
+- name: user_file_likes
+  using:
+    foreign_key_constraint_on:
+      column: user_id
+      table:
+        name: user_file_likes
+        schema: public
+select_permissions:
+- permission:
+    allow_aggregations: true
+    columns:
+    - id
+    - name
+    - email
+    - password
+    - reset_token
+    - meta
+    - created_at
+    - updated_at
+    - deleted_at
+    filter: {}
+  role: overseer
diff --git a/hasura/metadata/databases/default/tables/tables.yaml b/hasura/metadata/databases/default/tables/tables.yaml
new file mode 100644
index 0000000..ae8e81f
--- /dev/null
+++ b/hasura/metadata/databases/default/tables/tables.yaml
@@ -0,0 +1,15 @@
+- "!include public_analytics.yaml"
+- "!include public_bundle_codes.yaml"
+- "!include public_files.yaml"
+- "!include public_files_search_index.yaml"
+- "!include public_metrics.yaml"
+- "!include public_oauth_access_tokens.yaml"
+- "!include public_oauth_authorization_codes.yaml"
+- "!include public_oauth_clients.yaml"
+- "!include public_oauth_refresh_tokens.yaml"
+- "!include public_survey_users.yaml"
+- "!include public_surveys.yaml"
+- "!include public_uploads.yaml"
+- "!include public_user_bundle_codes.yaml"
+- "!include public_user_file_likes.yaml"
+- "!include public_users.yaml"
diff --git a/hasura/metadata/query_collections.yaml b/hasura/metadata/query_collections.yaml
new file mode 100644
index 0000000..fe51488
--- /dev/null
+++ b/hasura/metadata/query_collections.yaml
@@ -0,0 +1 @@
+[]
diff --git a/hasura/metadata/remote_schemas.yaml b/hasura/metadata/remote_schemas.yaml
new file mode 100644
index 0000000..fe51488
--- /dev/null
+++ b/hasura/metadata/remote_schemas.yaml
@@ -0,0 +1 @@
+[]
diff --git a/hasura/metadata/rest_endpoints.yaml b/hasura/metadata/rest_endpoints.yaml
new file mode 100644
index 0000000..fe51488
--- /dev/null
+++ b/hasura/metadata/rest_endpoints.yaml
@@ -0,0 +1 @@
+[]
diff --git a/hasura/metadata/version.yaml b/hasura/metadata/version.yaml
new file mode 100644
index 0000000..0a70aff
--- /dev/null
+++ b/hasura/metadata/version.yaml
@@ -0,0 +1 @@
+version: 3
-- 
GitLab