diff --git a/.meshrc.yml b/.meshrc.yml index 0c5d7b6..dcff1f2 100644 --- a/.meshrc.yml +++ b/.meshrc.yml @@ -6,7 +6,7 @@ sources: handler: graphql: endpoint: https://directus.andert.me/graphql - source: ./public/schemas/directus.graphql + source: ./src/schemas/directus.graphql operationHeaders: Authorization: Bearer {env.DIRECTUS_API} additionalResolvers: @@ -16,13 +16,13 @@ additionalResolvers: # handler: # openapi: # endpoint: https://my.andert.me/api/v1 - # source: ./public/schemas/cloudron.json + # source: ./src/schemas/cloudron.json # operationHeaders: # Authorization: Bearer {env.CLOUDRON_API} # - name: Gitea # handler: # openapi: # endpoint: https://git.andert.me/api/v1 - # source: ./public/schemas/gitea.yml + # source: ./src/schemas/gitea.yml # operationHeaders: # Authorization: Bearer {env.GITEA_API} diff --git a/src/fetch-schema.js b/src/fetch-schema.js index 0fb368b..68bf292 100644 --- a/src/fetch-schema.js +++ b/src/fetch-schema.js @@ -24,7 +24,7 @@ async function fetchSchema() { }); // Save the schema to a file - fs.writeFileSync('./public/schemas/directus.graphql', schema); + fs.writeFileSync('./src/schemas/directus.graphql', schema); } fetchSchema().catch(console.error); diff --git a/src/resolvers/directus.graphql b/src/resolvers/directus.graphql deleted file mode 100644 index adf4f8c..0000000 --- a/src/resolvers/directus.graphql +++ /dev/null @@ -1,1081 +0,0 @@ -type Query { - projects(filter: projects_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): [projects!]! - projects_by_id(id: ID!): projects - projects_aggregated(groupBy: [String], filter: projects_filter, limit: Int, offset: Int, page: Int, search: String, sort: [String]): [projects_aggregated!]! - todos(filter: todos_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): [todos!]! - todos_by_id(id: ID!): todos - todos_aggregated(groupBy: [String], filter: todos_filter, limit: Int, offset: Int, page: Int, search: String, sort: [String]): [todos_aggregated!]! -} - -type Mutation { - create_projects_items(filter: projects_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String, data: [create_projects_input!]): [projects!]! - create_projects_item(data: create_projects_input!): projects - create_todos_items(filter: todos_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String, data: [create_todos_input!]): [todos!]! - create_todos_item(data: create_todos_input!): todos - update_projects_items(filter: projects_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String, ids: [ID]!, data: update_projects_input!): [projects!]! - update_projects_batch(filter: projects_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String, data: [update_projects_input!]): [projects!]! - update_projects_item(id: ID!, data: update_projects_input!): projects - update_todos_items(filter: todos_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String, ids: [ID]!, data: update_todos_input!): [todos!]! - update_todos_batch(filter: todos_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String, data: [update_todos_input!]): [todos!]! - update_todos_item(id: ID!, data: update_todos_input!): todos - delete_projects_items(ids: [ID]!): delete_many - delete_projects_item(id: ID!): delete_one - delete_todos_items(ids: [ID]!): delete_many - delete_todos_item(id: ID!): delete_one -} - -type Subscription { - projects_mutated(event: EventEnum): projects_mutated - todos_mutated(event: EventEnum): todos_mutated - directus_dashboards_mutated(event: EventEnum): directus_dashboards_mutated - directus_activity_mutated(event: EventEnum): directus_activity_mutated - directus_notifications_mutated(event: EventEnum): directus_notifications_mutated - directus_flows_mutated(event: EventEnum): directus_flows_mutated - directus_folders_mutated(event: EventEnum): directus_folders_mutated - directus_files_mutated(event: EventEnum): directus_files_mutated - directus_panels_mutated(event: EventEnum): directus_panels_mutated - directus_roles_mutated(event: EventEnum): directus_roles_mutated - directus_presets_mutated(event: EventEnum): directus_presets_mutated - directus_revisions_mutated(event: EventEnum): directus_revisions_mutated - directus_settings_mutated(event: EventEnum): directus_settings_mutated - directus_operations_mutated(event: EventEnum): directus_operations_mutated - directus_permissions_mutated(event: EventEnum): directus_permissions_mutated - directus_translations_mutated(event: EventEnum): directus_translations_mutated - directus_users_mutated(event: EventEnum): directus_users_mutated - directus_shares_mutated(event: EventEnum): directus_shares_mutated - directus_webhooks_mutated(event: EventEnum): directus_webhooks_mutated -} - -"""The `Boolean` scalar type represents `true` or `false`.""" -scalar Boolean - -"""ISO8601 Date values""" -scalar Date - -""" -The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point). -""" -scalar Float - -"""BigInt value""" -scalar GraphQLBigInt - -"""A Float or a String""" -scalar GraphQLStringOrFloat - -"""Hashed string values""" -scalar Hash - -""" -The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"4"`) or integer (such as `4`) input value will be accepted as an ID. -""" -scalar ID - -""" -The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1. -""" -scalar Int - -""" -The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). -""" -scalar JSON - -""" -The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text. -""" -scalar String - -enum EventEnum { - create - update - delete -} - -type count_functions { - count: Int -} - -type datetime_functions { - year: Int - month: Int - week: Int - day: Int - weekday: Int - hour: Int - minute: Int - second: Int -} - -type delete_many { - ids: [ID]! -} - -type delete_one { - id: ID! -} - -type directus_activity { - id: ID! - action: String! - user(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users - timestamp: Date - timestamp_func: datetime_functions - ip: String - user_agent: String - collection: String! - item: String! - comment: String - origin: String - revisions(filter: directus_revisions_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): [directus_revisions] - revisions_func: count_functions -} - -type directus_activity_mutated { - key: ID! - event: EventEnum - data: directus_activity -} - -type directus_dashboards { - id: ID! - name: String! - icon: String - note: String - date_created: Date - date_created_func: datetime_functions - user_created(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users - color: String - panels(filter: directus_panels_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): [directus_panels] - panels_func: count_functions -} - -type directus_dashboards_mutated { - key: ID! - event: EventEnum - data: directus_dashboards -} - -type directus_files { - id: ID! - storage: String! - filename_disk: String - filename_download: String! - title: String - type: String - folder(filter: directus_folders_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_folders - uploaded_by(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users - uploaded_on: Date - uploaded_on_func: datetime_functions - modified_by(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users - modified_on: Date - modified_on_func: datetime_functions - charset: String - filesize: GraphQLBigInt - width: Int - height: Int - duration: Int - embed: String - description: String - location: String - tags: JSON - tags_func: count_functions - metadata: JSON - metadata_func: count_functions -} - -type directus_files_mutated { - key: ID! - event: EventEnum - data: directus_files -} - -type directus_flows { - id: ID! - name: String! - icon: String - color: String - description: String - status: String - trigger: String - accountability: String - options: JSON - options_func: count_functions - operation(filter: directus_operations_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_operations - date_created: Date - date_created_func: datetime_functions - user_created(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users - operations(filter: directus_operations_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): [directus_operations] - operations_func: count_functions -} - -type directus_flows_mutated { - key: ID! - event: EventEnum - data: directus_flows -} - -type directus_folders { - id: ID! - name: String! - parent(filter: directus_folders_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_folders -} - -type directus_folders_mutated { - key: ID! - event: EventEnum - data: directus_folders -} - -type directus_notifications { - id: ID! - timestamp: Date - timestamp_func: datetime_functions - status: String - recipient(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users - sender(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users - subject: String! - message: String - collection: String - item: String -} - -type directus_notifications_mutated { - key: ID! - event: EventEnum - data: directus_notifications -} - -type directus_operations { - id: ID! - name: String - key: String! - type: String! - position_x: Int! - position_y: Int! - options: JSON - options_func: count_functions - resolve(filter: directus_operations_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_operations - reject(filter: directus_operations_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_operations - flow(filter: directus_flows_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_flows - date_created: Date - date_created_func: datetime_functions - user_created(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users -} - -type directus_operations_mutated { - key: ID! - event: EventEnum - data: directus_operations -} - -type directus_panels { - id: ID! - dashboard(filter: directus_dashboards_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_dashboards - name: String - icon: String - color: String - show_header: Boolean! - note: String - type: String! - position_x: Int! - position_y: Int! - width: Int! - height: Int! - options: JSON - options_func: count_functions - date_created: Date - date_created_func: datetime_functions - user_created(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users -} - -type directus_panels_mutated { - key: ID! - event: EventEnum - data: directus_panels -} - -type directus_permissions { - id: ID! - role(filter: directus_roles_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_roles - collection: String! - action: String! - permissions: JSON - permissions_func: count_functions - validation: JSON - validation_func: count_functions - presets: JSON - presets_func: count_functions - fields: [String] -} - -type directus_permissions_mutated { - key: ID! - event: EventEnum - data: directus_permissions -} - -type directus_presets { - id: ID! - bookmark: String - user(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users - role(filter: directus_roles_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_roles - collection: String - search: String - layout: String - layout_query: JSON - layout_query_func: count_functions - layout_options: JSON - layout_options_func: count_functions - refresh_interval: Int - filter: JSON - filter_func: count_functions - icon: String - color: String -} - -type directus_presets_mutated { - key: ID! - event: EventEnum - data: directus_presets -} - -type directus_revisions { - id: ID! - activity(filter: directus_activity_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_activity - collection: String! - item: String! - data: JSON - data_func: count_functions - delta: JSON - delta_func: count_functions - parent(filter: directus_revisions_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_revisions -} - -type directus_revisions_mutated { - key: ID! - event: EventEnum - data: directus_revisions -} - -type directus_roles { - id: ID! - name: String! - icon: String - description: String - ip_access: [String] - enforce_tfa: Boolean! - admin_access: Boolean! - app_access: Boolean - users(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): [directus_users] - users_func: count_functions -} - -type directus_roles_mutated { - key: ID! - event: EventEnum - data: directus_roles -} - -type directus_settings { - id: ID! - project_name: String - project_url: String - - """$t:field_options.directus_settings.project_color_note""" - project_color: String - project_logo(filter: directus_files_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_files - public_foreground(filter: directus_files_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_files - public_background(filter: directus_files_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_files - public_note: String - auth_login_attempts: Int - auth_password_policy: String - storage_asset_transform: String - storage_asset_presets: JSON - storage_asset_presets_func: count_functions - custom_css: String - storage_default_folder(filter: directus_folders_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_folders - basemaps: JSON - basemaps_func: count_functions - mapbox_key: String - module_bar: JSON - module_bar_func: count_functions - project_descriptor: String - default_language: String - custom_aspect_ratios: JSON - custom_aspect_ratios_func: count_functions -} - -type directus_settings_mutated { - key: ID! - event: EventEnum - data: directus_settings -} - -type directus_shares { - id: ID! - name: String - collection: String! - item: String! - role(filter: directus_roles_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_roles - - """$t:shared_leave_blank_for_passwordless_access""" - password: Hash - user_created(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users - date_created: Date - date_created_func: datetime_functions - - """$t:shared_leave_blank_for_unlimited""" - date_start: Date - date_start_func: datetime_functions - - """$t:shared_leave_blank_for_unlimited""" - date_end: Date - date_end_func: datetime_functions - times_used: Int - - """$t:shared_leave_blank_for_unlimited""" - max_uses: Int -} - -type directus_shares_mutated { - key: ID! - event: EventEnum - data: directus_shares -} - -type directus_translations { - id: ID! - language: String! - key: String! - value: String! -} - -type directus_translations_mutated { - key: ID! - event: EventEnum - data: directus_translations -} - -type directus_users { - id: ID! - first_name: String - last_name: String - email: String - password: Hash - location: String - title: String - description: String - tags: JSON - tags_func: count_functions - avatar(filter: directus_files_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_files - language: String - theme: String - tfa_secret: Hash - status: String - role(filter: directus_roles_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_roles - token: Hash - last_access: Date - last_access_func: datetime_functions - last_page: String - provider: String - external_identifier: String - auth_data: JSON - auth_data_func: count_functions - email_notifications: Boolean -} - -type directus_users_mutated { - key: ID! - event: EventEnum - data: directus_users -} - -type directus_webhooks { - id: ID! - name: String! - method: String - url: String! - status: String - data: Boolean - actions: [String]! - collections: [String]! - headers: JSON - headers_func: count_functions -} - -type directus_webhooks_mutated { - key: ID! - event: EventEnum - data: directus_webhooks -} - -type projects { - id: ID! - sort: Int - user_created(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users - date_created: Date - date_created_func: datetime_functions - user_updated(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users - date_updated: Date - date_updated_func: datetime_functions - text: String -} - -type projects_aggregated { - group: JSON - countAll: Int - count: projects_aggregated_count - countDistinct: projects_aggregated_count - avg: projects_aggregated_fields - sum: projects_aggregated_fields - avgDistinct: projects_aggregated_fields - sumDistinct: projects_aggregated_fields - min: projects_aggregated_fields - max: projects_aggregated_fields -} - -type projects_aggregated_count { - id: Int - sort: Int - user_created: Int - date_created: Int - user_updated: Int - date_updated: Int - text: Int -} - -type projects_aggregated_fields { - sort: Float -} - -type projects_mutated { - key: ID! - event: EventEnum - data: projects -} - -type todos { - id: ID! - status: String - sort: Int - user_created(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users - date_created: Date - date_created_func: datetime_functions - user_updated(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users - date_updated: Date - date_updated_func: datetime_functions - task: String -} - -type todos_aggregated { - group: JSON - countAll: Int - count: todos_aggregated_count - countDistinct: todos_aggregated_count - avg: todos_aggregated_fields - sum: todos_aggregated_fields - avgDistinct: todos_aggregated_fields - sumDistinct: todos_aggregated_fields - min: todos_aggregated_fields - max: todos_aggregated_fields -} - -type todos_aggregated_count { - id: Int - status: Int - sort: Int - user_created: Int - date_created: Int - user_updated: Int - date_updated: Int - task: Int -} - -type todos_aggregated_fields { - sort: Float -} - -type todos_mutated { - key: ID! - event: EventEnum - data: todos -} - -input boolean_filter_operators { - _eq: Boolean - _neq: Boolean - _null: Boolean - _nnull: Boolean -} - -input count_function_filter_operators { - count: number_filter_operators -} - -input create_directus_files_input { - id: ID - storage: String! - filename_disk: String - filename_download: String! - title: String - type: String - folder: create_directus_folders_input - uploaded_by: create_directus_users_input - uploaded_on: Date - modified_by: create_directus_users_input - modified_on: Date - charset: String - filesize: GraphQLBigInt - width: Int - height: Int - duration: Int - embed: String - description: String - location: String - tags: JSON - metadata: JSON -} - -input create_directus_folders_input { - id: ID - name: String! - parent: create_directus_folders_input -} - -input create_directus_roles_input { - id: ID - name: String! - icon: String - description: String - ip_access: [String] - enforce_tfa: Boolean! - admin_access: Boolean! - app_access: Boolean - users: [create_directus_users_input] -} - -input create_directus_users_input { - id: ID - first_name: String - last_name: String - email: String - password: Hash - location: String - title: String - description: String - tags: JSON - avatar: create_directus_files_input - language: String - theme: String - tfa_secret: Hash - status: String - role: create_directus_roles_input - token: Hash - last_access: Date - last_page: String - provider: String - external_identifier: String - auth_data: JSON - email_notifications: Boolean -} - -input create_projects_input { - id: ID - sort: Int - user_created: create_directus_users_input - date_created: Date - user_updated: create_directus_users_input - date_updated: Date - text: String -} - -input create_todos_input { - id: ID - status: String - sort: Int - user_created: create_directus_users_input - date_created: Date - user_updated: create_directus_users_input - date_updated: Date - task: String -} - -input date_filter_operators { - _eq: String - _neq: String - _gt: String - _gte: String - _lt: String - _lte: String - _null: Boolean - _nnull: Boolean - _in: [String] - _nin: [String] - _between: [GraphQLStringOrFloat] - _nbetween: [GraphQLStringOrFloat] -} - -input datetime_function_filter_operators { - year: number_filter_operators - month: number_filter_operators - week: number_filter_operators - day: number_filter_operators - weekday: number_filter_operators - hour: number_filter_operators - minute: number_filter_operators - second: number_filter_operators -} - -input directus_activity_filter { - id: number_filter_operators - action: string_filter_operators - user: directus_users_filter - timestamp: date_filter_operators - timestamp_func: datetime_function_filter_operators - ip: string_filter_operators - user_agent: string_filter_operators - collection: string_filter_operators - item: string_filter_operators - comment: string_filter_operators - origin: string_filter_operators - revisions: directus_revisions_filter - revisions_func: count_function_filter_operators - _and: [directus_activity_filter] - _or: [directus_activity_filter] -} - -input directus_dashboards_filter { - id: string_filter_operators - name: string_filter_operators - icon: string_filter_operators - note: string_filter_operators - date_created: date_filter_operators - date_created_func: datetime_function_filter_operators - user_created: directus_users_filter - color: string_filter_operators - panels: directus_panels_filter - panels_func: count_function_filter_operators - _and: [directus_dashboards_filter] - _or: [directus_dashboards_filter] -} - -input directus_files_filter { - id: string_filter_operators - storage: string_filter_operators - filename_disk: string_filter_operators - filename_download: string_filter_operators - title: string_filter_operators - type: string_filter_operators - folder: directus_folders_filter - uploaded_by: directus_users_filter - uploaded_on: date_filter_operators - uploaded_on_func: datetime_function_filter_operators - modified_by: directus_users_filter - modified_on: date_filter_operators - modified_on_func: datetime_function_filter_operators - charset: string_filter_operators - filesize: number_filter_operators - width: number_filter_operators - height: number_filter_operators - duration: number_filter_operators - embed: string_filter_operators - description: string_filter_operators - location: string_filter_operators - tags: string_filter_operators - tags_func: count_function_filter_operators - metadata: string_filter_operators - metadata_func: count_function_filter_operators - _and: [directus_files_filter] - _or: [directus_files_filter] -} - -input directus_flows_filter { - id: string_filter_operators - name: string_filter_operators - icon: string_filter_operators - color: string_filter_operators - description: string_filter_operators - status: string_filter_operators - trigger: string_filter_operators - accountability: string_filter_operators - options: string_filter_operators - options_func: count_function_filter_operators - operation: directus_operations_filter - date_created: date_filter_operators - date_created_func: datetime_function_filter_operators - user_created: directus_users_filter - operations: directus_operations_filter - operations_func: count_function_filter_operators - _and: [directus_flows_filter] - _or: [directus_flows_filter] -} - -input directus_folders_filter { - id: string_filter_operators - name: string_filter_operators - parent: directus_folders_filter - _and: [directus_folders_filter] - _or: [directus_folders_filter] -} - -input directus_operations_filter { - id: string_filter_operators - name: string_filter_operators - key: string_filter_operators - type: string_filter_operators - position_x: number_filter_operators - position_y: number_filter_operators - options: string_filter_operators - options_func: count_function_filter_operators - resolve: directus_operations_filter - reject: directus_operations_filter - flow: directus_flows_filter - date_created: date_filter_operators - date_created_func: datetime_function_filter_operators - user_created: directus_users_filter - _and: [directus_operations_filter] - _or: [directus_operations_filter] -} - -input directus_panels_filter { - id: string_filter_operators - dashboard: directus_dashboards_filter - name: string_filter_operators - icon: string_filter_operators - color: string_filter_operators - show_header: boolean_filter_operators - note: string_filter_operators - type: string_filter_operators - position_x: number_filter_operators - position_y: number_filter_operators - width: number_filter_operators - height: number_filter_operators - options: string_filter_operators - options_func: count_function_filter_operators - date_created: date_filter_operators - date_created_func: datetime_function_filter_operators - user_created: directus_users_filter - _and: [directus_panels_filter] - _or: [directus_panels_filter] -} - -input directus_revisions_filter { - id: number_filter_operators - activity: directus_activity_filter - collection: string_filter_operators - item: string_filter_operators - data: string_filter_operators - data_func: count_function_filter_operators - delta: string_filter_operators - delta_func: count_function_filter_operators - parent: directus_revisions_filter - _and: [directus_revisions_filter] - _or: [directus_revisions_filter] -} - -input directus_roles_filter { - id: string_filter_operators - name: string_filter_operators - icon: string_filter_operators - description: string_filter_operators - ip_access: string_filter_operators - enforce_tfa: boolean_filter_operators - admin_access: boolean_filter_operators - app_access: boolean_filter_operators - users: directus_users_filter - users_func: count_function_filter_operators - _and: [directus_roles_filter] - _or: [directus_roles_filter] -} - -input directus_users_filter { - id: string_filter_operators - first_name: string_filter_operators - last_name: string_filter_operators - email: string_filter_operators - password: hash_filter_operators - location: string_filter_operators - title: string_filter_operators - description: string_filter_operators - tags: string_filter_operators - tags_func: count_function_filter_operators - avatar: directus_files_filter - language: string_filter_operators - theme: string_filter_operators - tfa_secret: hash_filter_operators - status: string_filter_operators - role: directus_roles_filter - token: hash_filter_operators - last_access: date_filter_operators - last_access_func: datetime_function_filter_operators - last_page: string_filter_operators - provider: string_filter_operators - external_identifier: string_filter_operators - auth_data: string_filter_operators - auth_data_func: count_function_filter_operators - email_notifications: boolean_filter_operators - _and: [directus_users_filter] - _or: [directus_users_filter] -} - -input hash_filter_operators { - _null: Boolean - _nnull: Boolean - _empty: Boolean - _nempty: Boolean -} - -input number_filter_operators { - _eq: GraphQLStringOrFloat - _neq: GraphQLStringOrFloat - _in: [GraphQLStringOrFloat] - _nin: [GraphQLStringOrFloat] - _gt: GraphQLStringOrFloat - _gte: GraphQLStringOrFloat - _lt: GraphQLStringOrFloat - _lte: GraphQLStringOrFloat - _null: Boolean - _nnull: Boolean - _between: [GraphQLStringOrFloat] - _nbetween: [GraphQLStringOrFloat] -} - -input projects_filter { - id: string_filter_operators - sort: number_filter_operators - user_created: directus_users_filter - date_created: date_filter_operators - date_created_func: datetime_function_filter_operators - user_updated: directus_users_filter - date_updated: date_filter_operators - date_updated_func: datetime_function_filter_operators - text: string_filter_operators - _and: [projects_filter] - _or: [projects_filter] -} - -input string_filter_operators { - _eq: String - _neq: String - _contains: String - _icontains: String - _ncontains: String - _starts_with: String - _nstarts_with: String - _istarts_with: String - _nistarts_with: String - _ends_with: String - _nends_with: String - _iends_with: String - _niends_with: String - _in: [String] - _nin: [String] - _null: Boolean - _nnull: Boolean - _empty: Boolean - _nempty: Boolean -} - -input todos_filter { - id: string_filter_operators - status: string_filter_operators - sort: number_filter_operators - user_created: directus_users_filter - date_created: date_filter_operators - date_created_func: datetime_function_filter_operators - user_updated: directus_users_filter - date_updated: date_filter_operators - date_updated_func: datetime_function_filter_operators - task: string_filter_operators - _and: [todos_filter] - _or: [todos_filter] -} - -input update_directus_files_input { - id: ID - storage: String - filename_disk: String - filename_download: String - title: String - type: String - folder: update_directus_folders_input - uploaded_by: update_directus_users_input - uploaded_on: Date - modified_by: update_directus_users_input - modified_on: Date - charset: String - filesize: GraphQLBigInt - width: Int - height: Int - duration: Int - embed: String - description: String - location: String - tags: JSON - metadata: JSON -} - -input update_directus_folders_input { - id: ID - name: String - parent: update_directus_folders_input -} - -input update_directus_roles_input { - id: ID - name: String - icon: String - description: String - ip_access: [String] - enforce_tfa: Boolean - admin_access: Boolean - app_access: Boolean - users: [update_directus_users_input] -} - -input update_directus_users_input { - id: ID - first_name: String - last_name: String - email: String - password: Hash - location: String - title: String - description: String - tags: JSON - avatar: update_directus_files_input - language: String - theme: String - tfa_secret: Hash - status: String - role: update_directus_roles_input - token: Hash - last_access: Date - last_page: String - provider: String - external_identifier: String - auth_data: JSON - email_notifications: Boolean -} - -input update_projects_input { - id: ID - sort: Int - user_created: update_directus_users_input - date_created: Date - user_updated: update_directus_users_input - date_updated: Date - text: String -} - -input update_todos_input { - id: ID - status: String - sort: Int - user_created: update_directus_users_input - date_created: Date - user_updated: update_directus_users_input - date_updated: Date - task: String -} \ No newline at end of file diff --git a/src/resolvers/subs_directus.js b/src/resolvers/subs_directus.js index 6a79863..02acd35 100644 --- a/src/resolvers/subs_directus.js +++ b/src/resolvers/subs_directus.js @@ -2,22 +2,10 @@ const { createClient } = require('graphql-ws'); const WebSocket = require('ws'); const { PubSub } = require('graphql-subscriptions'); const { parse } = require('graphql'); -const fs = require('fs'); -const path = require('path') const pubsub = new PubSub(); -// let schemaFilePath; -// if (process.env.NODE_ENV === 'production') { -// schemaFilePath = path.resolve(process.cwd(), 'schemas/directus.graphql'); -// } else { -// schemaFilePath = path.resolve(process.cwd(), 'public/schemas/directus.graphql'); -// } - -const schema = require('raw-loader!./directus.graphql').default; - -// Read the schema file -// const schema = fs.readFileSync(schemaFilePath, 'utf8'); +const schema = require('raw-loader!../schemas/directus.graphql').default; // Parse the schema const document = parse(schema); diff --git a/public/schemas/cloudron.json b/src/schemas/cloudron.json similarity index 100% rename from public/schemas/cloudron.json rename to src/schemas/cloudron.json diff --git a/public/schemas/directus.graphql b/src/schemas/directus.graphql similarity index 100% rename from public/schemas/directus.graphql rename to src/schemas/directus.graphql diff --git a/public/schemas/gitea.yml b/src/schemas/gitea.yml similarity index 100% rename from public/schemas/gitea.yml rename to src/schemas/gitea.yml diff --git a/public/schemas/gridproxy.json b/src/schemas/gridproxy.json similarity index 100% rename from public/schemas/gridproxy.json rename to src/schemas/gridproxy.json