Merge branch 'main' of github.com:utopia-os/utopia-flex-map

This commit is contained in:
Anton Tranelis 2025-03-14 13:41:03 +00:00
commit a0c20cd69c
25 changed files with 13755 additions and 0 deletions

12
backend/Dockerfile Normal file
View File

@ -0,0 +1,12 @@
FROM node:20-alpine as third-party-ext
RUN apk add python3 g++ make
WORKDIR /extensions
ADD extensions .
RUN npm install
# Move all extensions the starts with directus-extension-, using find, to the /extensions/directus folder
RUN mkdir -p ./directus
RUN cd node_modules && find . -maxdepth 1 -type d -name "directus-extension-*" -exec mv {} ../directus \;
FROM directus/directus:11.4.1
# Copy third party extensions
COPY --from=third-party-ext /extensions/directus ./extensions

16
backend/README.md Normal file
View File

@ -0,0 +1,16 @@
In order to pull data from your locally running backend (see [docker-compose](../docker-compose.yml)) to your local harddrive, you can run the following command
```
npx directus-sync pull \
--directus-url http://localhost:8055 \
--directus-email admin@it4c.dev \
--directus-password admin123
```
To push local changes or to seed directus use the following command
```
npx directus-sync push \
--directus-url http://localhost:8055 \
--directus-email admin@it4c.dev \
--directus-password admin123
```

View File

@ -0,0 +1 @@
[]

View File

@ -0,0 +1 @@
[]

View File

@ -0,0 +1 @@
[]

View File

@ -0,0 +1 @@
[]

View File

@ -0,0 +1 @@
[]

View File

@ -0,0 +1 @@
[]

View File

@ -0,0 +1,34 @@
[
{
"name": "Administrator",
"icon": "verified",
"description": "$t:admin_description",
"ip_access": null,
"enforce_tfa": false,
"admin_access": true,
"app_access": true,
"roles": [
{
"role": "_sync_default_admin_role",
"sort": null
}
],
"_syncId": "_sync_default_admin_policy"
},
{
"name": "$t:public_label",
"icon": "public",
"description": "$t:public_description",
"ip_access": null,
"enforce_tfa": false,
"admin_access": false,
"app_access": false,
"roles": [
{
"role": null,
"sort": 1
}
],
"_syncId": "_sync_default_public_policy"
}
]

View File

@ -0,0 +1 @@
[]

View File

@ -0,0 +1,9 @@
[
{
"name": "Administrator",
"icon": "verified",
"description": "$t:admin_description",
"parent": null,
"_syncId": "_sync_default_admin_role"
}
]

View File

@ -0,0 +1 @@
[]

View File

@ -0,0 +1 @@
[]

View File

@ -0,0 +1,7 @@
{
"collection": "directus_sync_id_map",
"meta": null,
"schema": {
"name": "directus_sync_id_map"
}
}

View File

@ -0,0 +1,24 @@
{
"collection": "directus_sync_id_map",
"field": "created_at",
"type": "dateTime",
"meta": null,
"schema": {
"name": "created_at",
"table": "directus_sync_id_map",
"data_type": "datetime",
"default_value": "CURRENT_TIMESTAMP",
"max_length": null,
"numeric_precision": null,
"numeric_scale": null,
"is_nullable": true,
"is_unique": false,
"is_indexed": true,
"is_primary_key": false,
"is_generated": false,
"generation_expression": null,
"has_auto_increment": false,
"foreign_key_table": null,
"foreign_key_column": null
}
}

View File

@ -0,0 +1,24 @@
{
"collection": "directus_sync_id_map",
"field": "id",
"type": "integer",
"meta": null,
"schema": {
"name": "id",
"table": "directus_sync_id_map",
"data_type": "integer",
"default_value": null,
"max_length": null,
"numeric_precision": null,
"numeric_scale": null,
"is_nullable": false,
"is_unique": false,
"is_indexed": false,
"is_primary_key": true,
"is_generated": false,
"generation_expression": null,
"has_auto_increment": true,
"foreign_key_table": null,
"foreign_key_column": null
}
}

View File

@ -0,0 +1,24 @@
{
"collection": "directus_sync_id_map",
"field": "local_id",
"type": "string",
"meta": null,
"schema": {
"name": "local_id",
"table": "directus_sync_id_map",
"data_type": "varchar",
"default_value": null,
"max_length": 255,
"numeric_precision": null,
"numeric_scale": null,
"is_nullable": false,
"is_unique": false,
"is_indexed": false,
"is_primary_key": false,
"is_generated": false,
"generation_expression": null,
"has_auto_increment": false,
"foreign_key_table": null,
"foreign_key_column": null
}
}

View File

@ -0,0 +1,24 @@
{
"collection": "directus_sync_id_map",
"field": "sync_id",
"type": "string",
"meta": null,
"schema": {
"name": "sync_id",
"table": "directus_sync_id_map",
"data_type": "varchar",
"default_value": null,
"max_length": 255,
"numeric_precision": null,
"numeric_scale": null,
"is_nullable": false,
"is_unique": false,
"is_indexed": false,
"is_primary_key": false,
"is_generated": false,
"generation_expression": null,
"has_auto_increment": false,
"foreign_key_table": null,
"foreign_key_column": null
}
}

View File

@ -0,0 +1,24 @@
{
"collection": "directus_sync_id_map",
"field": "table",
"type": "string",
"meta": null,
"schema": {
"name": "table",
"table": "directus_sync_id_map",
"data_type": "varchar",
"default_value": null,
"max_length": 255,
"numeric_precision": null,
"numeric_scale": null,
"is_nullable": false,
"is_unique": false,
"is_indexed": false,
"is_primary_key": false,
"is_generated": false,
"generation_expression": null,
"has_auto_increment": false,
"foreign_key_table": null,
"foreign_key_column": null
}
}

View File

@ -0,0 +1,5 @@
{
"version": 1,
"directus": "11.4.1",
"vendor": "sqlite"
}

View File

@ -0,0 +1,973 @@
type Query {
"""There's no data to query."""
_empty: Void
}
type Mutation
type Subscription {
directus_folders_mutated(event: EventEnum): directus_folders_mutated
directus_files_mutated(event: EventEnum): directus_files_mutated
directus_operations_mutated(event: EventEnum): directus_operations_mutated
directus_notifications_mutated(event: EventEnum): directus_notifications_mutated
directus_translations_mutated(event: EventEnum): directus_translations_mutated
directus_shares_mutated(event: EventEnum): directus_shares_mutated
directus_versions_mutated(event: EventEnum): directus_versions_mutated
directus_revisions_mutated(event: EventEnum): directus_revisions_mutated
directus_users_mutated(event: EventEnum): directus_users_mutated
directus_webhooks_mutated(event: EventEnum): directus_webhooks_mutated
directus_settings_mutated(event: EventEnum): directus_settings_mutated
directus_policies_mutated(event: EventEnum): directus_policies_mutated
directus_permissions_mutated(event: EventEnum): directus_permissions_mutated
directus_access_mutated(event: EventEnum): directus_access_mutated
directus_dashboards_mutated(event: EventEnum): directus_dashboards_mutated
directus_flows_mutated(event: EventEnum): directus_flows_mutated
directus_panels_mutated(event: EventEnum): directus_panels_mutated
directus_presets_mutated(event: EventEnum): directus_presets_mutated
directus_roles_mutated(event: EventEnum): directus_roles_mutated
directus_comments_mutated(event: EventEnum): directus_comments_mutated
directus_activity_mutated(event: EventEnum): directus_activity_mutated
}
"""The `Boolean` scalar type represents `true` or `false`."""
scalar Boolean
"""ISO8601 Date values"""
scalar Date
"""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
"""Represents NULL values"""
scalar Void
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 directus_access {
id: ID!
role(filter: directus_roles_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_roles
user(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users
policy(filter: directus_policies_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_policies
sort: Int
}
type directus_access_mutated {
key: ID!
event: EventEnum
data: directus_access
}
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!
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_comments {
id: ID!
collection: String!
item: String!
comment: String!
date_created: Date
date_created_func: datetime_functions
date_updated: Date
date_updated_func: datetime_functions
user_created(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users
user_updated(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users
}
type directus_comments_mutated {
key: ID!
event: EventEnum
data: directus_comments
}
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
created_on: Date
created_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
focal_point_x: Int
focal_point_y: Int
tus_id: String
tus_data: JSON
tus_data_func: count_functions
uploaded_on: Date
uploaded_on_func: datetime_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
collection: String!
action: String!
permissions: JSON
permissions_func: count_functions
validation: JSON
validation_func: count_functions
presets: JSON
presets_func: count_functions
fields: [String]
policy(filter: directus_policies_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_policies
}
type directus_permissions_mutated {
key: ID!
event: EventEnum
data: directus_permissions
}
type directus_policies {
id: ID!
name: String!
icon: String
description: String
ip_access: [String]
"""$t:field_options.directus_policies.enforce_tfa"""
enforce_tfa: Boolean!
admin_access: Boolean!
app_access: Boolean!
permissions(filter: directus_permissions_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): [directus_permissions]
permissions_func: count_functions
users(filter: directus_access_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): [directus_access]
users_func: count_functions
roles(filter: directus_access_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): [directus_access]
roles_func: count_functions
}
type directus_policies_mutated {
key: ID!
event: EventEnum
data: directus_policies
}
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
version(filter: directus_versions_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_versions
}
type directus_revisions_mutated {
key: ID!
event: EventEnum
data: directus_revisions
}
type directus_roles {
id: ID!
name: String!
icon: String
description: String
parent(filter: directus_roles_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_roles
children(filter: directus_roles_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): [directus_roles]
children_func: count_functions
policies(filter: directus_access_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): [directus_access]
policies_func: count_functions
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
public_favicon(filter: directus_files_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_files
default_appearance: String
default_theme_light: String
theme_light_overrides: JSON
theme_light_overrides_func: count_functions
default_theme_dark: String
theme_dark_overrides: JSON
theme_dark_overrides_func: count_functions
report_error_url: String
report_bug_url: String
report_feature_url: String
"""$t:fields.directus_settings.public_registration_note"""
public_registration: Boolean!
"""$t:fields.directus_settings.public_registration_verify_email_note"""
public_registration_verify_email: Boolean
public_registration_role(filter: directus_roles_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_roles
"""$t:fields.directus_settings.public_registration_email_filter_note"""
public_registration_email_filter: JSON
public_registration_email_filter_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
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
appearance: String
theme_dark: String
theme_light: String
theme_light_overrides: JSON
theme_light_overrides_func: count_functions
theme_dark_overrides: JSON
theme_dark_overrides_func: count_functions
policies(filter: directus_access_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): [directus_access]
policies_func: count_functions
}
type directus_users_mutated {
key: ID!
event: EventEnum
data: directus_users
}
type directus_versions {
id: ID!
key: String!
name: String
collection: String!
item: String!
hash: String
date_created: Date
date_created_func: datetime_functions
date_updated: Date
date_updated_func: datetime_functions
user_created(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users
user_updated(filter: directus_users_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_users
delta: JSON
delta_func: count_functions
}
type directus_versions_mutated {
key: ID!
event: EventEnum
data: directus_versions
}
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
was_active_before_deprecation: Boolean!
migrated_flow(filter: directus_flows_filter, sort: [String], limit: Int, offset: Int, page: Int, search: String): directus_flows
}
type directus_webhooks_mutated {
key: ID!
event: EventEnum
data: directus_webhooks
}
input big_int_filter_operators {
_eq: GraphQLBigInt
_neq: GraphQLBigInt
_in: [GraphQLBigInt]
_nin: [GraphQLBigInt]
_gt: GraphQLBigInt
_gte: GraphQLBigInt
_lt: GraphQLBigInt
_lte: GraphQLBigInt
_null: Boolean
_nnull: Boolean
_between: [GraphQLBigInt]
_nbetween: [GraphQLBigInt]
}
input boolean_filter_operators {
_eq: Boolean
_neq: Boolean
_null: Boolean
_nnull: Boolean
}
input count_function_filter_operators {
count: number_filter_operators
}
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_access_filter {
id: string_filter_operators
role: directus_roles_filter
user: directus_users_filter
policy: directus_policies_filter
sort: number_filter_operators
_and: [directus_access_filter]
_or: [directus_access_filter]
}
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
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
created_on: date_filter_operators
created_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: big_int_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
focal_point_x: number_filter_operators
focal_point_y: number_filter_operators
tus_id: string_filter_operators
tus_data: string_filter_operators
tus_data_func: count_function_filter_operators
uploaded_on: date_filter_operators
uploaded_on_func: datetime_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_permissions_filter {
id: number_filter_operators
collection: string_filter_operators
action: string_filter_operators
permissions: string_filter_operators
permissions_func: count_function_filter_operators
validation: string_filter_operators
validation_func: count_function_filter_operators
presets: string_filter_operators
presets_func: count_function_filter_operators
fields: string_filter_operators
policy: directus_policies_filter
_and: [directus_permissions_filter]
_or: [directus_permissions_filter]
}
input directus_policies_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
permissions: directus_permissions_filter
permissions_func: count_function_filter_operators
users: directus_access_filter
users_func: count_function_filter_operators
roles: directus_access_filter
roles_func: count_function_filter_operators
_and: [directus_policies_filter]
_or: [directus_policies_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
version: directus_versions_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
parent: directus_roles_filter
children: directus_roles_filter
children_func: count_function_filter_operators
policies: directus_access_filter
policies_func: count_function_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
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
appearance: string_filter_operators
theme_dark: string_filter_operators
theme_light: string_filter_operators
theme_light_overrides: string_filter_operators
theme_light_overrides_func: count_function_filter_operators
theme_dark_overrides: string_filter_operators
theme_dark_overrides_func: count_function_filter_operators
policies: directus_access_filter
policies_func: count_function_filter_operators
_and: [directus_users_filter]
_or: [directus_users_filter]
}
input directus_versions_filter {
id: string_filter_operators
key: string_filter_operators
name: string_filter_operators
collection: string_filter_operators
item: string_filter_operators
hash: string_filter_operators
date_created: date_filter_operators
date_created_func: datetime_function_filter_operators
date_updated: date_filter_operators
date_updated_func: datetime_function_filter_operators
user_created: directus_users_filter
user_updated: directus_users_filter
delta: string_filter_operators
delta_func: count_function_filter_operators
_and: [directus_versions_filter]
_or: [directus_versions_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 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
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,6 @@
{
"name": "directus-extensions",
"dependencies": {
"directus-extension-sync": "^3.0.2"
}
}

20
docker-compose.yml Normal file
View File

@ -0,0 +1,20 @@
services:
server:
image: cupcakearmy/static
restart: unless-stopped
ports:
- 8080:80
volumes:
- ./dist:/srv:ro
backend:
container_name: backend
build:
context: ./backend
ports:
- 8055:8055
environment:
- SECRET=SECRET
- PUBLIC_URL=http://localhost
- ADMIN_EMAIL=admin@it4c.dev
- ADMIN_PASSWORD=admin123