From 78f239c1e4bccd727c96f4474f083e67971bd43e Mon Sep 17 00:00:00 2001 From: JJ-8 <34778827+JJ-8@users.noreply.github.com> Date: Fri, 5 May 2023 21:38:15 +0200 Subject: [PATCH] Add last active admin functionality The implementation is mostly based on https://github.com/DU4L/CTFNote/pull/16 but we update the timer in the database instead of the frontend. The update is done when the user fetches the profile, so for every first load done in a new tab in the browser. Please note that this commit can NOT be merged before https://github.com/TFNS/CTFNote/pull/213 is merged since the migration files are now not consecutive. The other PR contains a migration with ID 41, so this PR has a migration with ID 42 (and this answers everything of course). The migration will fail in this branch therefore. For testing, please rename the file and use a throw away database. --- api/migrations/42-add-last-active.sql | 33 + front/graphql.schema.json | 1965 +++---------------------- front/src/components/Admin/Users.vue | 14 + front/src/ctfnote/models.ts | 3 +- front/src/generated/graphql.ts | 413 ++---- front/src/graphql/Profile.graphql | 1 + 6 files changed, 348 insertions(+), 2081 deletions(-) create mode 100644 api/migrations/42-add-last-active.sql diff --git a/api/migrations/42-add-last-active.sql b/api/migrations/42-add-last-active.sql new file mode 100644 index 00000000..ec60fa77 --- /dev/null +++ b/api/migrations/42-add-last-active.sql @@ -0,0 +1,33 @@ +ALTER TABLE ctfnote.profile +ADD COLUMN "lastactive" timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP; + + +/* UpdateLastActive */ +CREATE FUNCTION ctfnote.update_last_active () + RETURNS void + AS $$ + BEGIN + UPDATE ctfnote.profile + SET lastactive = now() + WHERE id = ctfnote_private.user_id (); + END; +$$ +LANGUAGE plpgsql VOLATILE +SECURITY DEFINER; +GRANT EXECUTE ON FUNCTION ctfnote.update_last_active () TO user_guest; + +CREATE OR REPLACE FUNCTION ctfnote.me () + RETURNS ctfnote.profile + AS $$ + SELECT ctfnote.update_last_active(); + SELECT + * + FROM + ctfnote.profile + WHERE + id = ctfnote_private.user_id () + LIMIT 1; + +$$ +LANGUAGE SQL +STRICT STABLE; \ No newline at end of file diff --git a/front/graphql.schema.json b/front/graphql.schema.json index b8c1bd55..14d14d20 100644 --- a/front/graphql.schema.json +++ b/front/graphql.schema.json @@ -20,165 +20,6 @@ "enumValues": null, "possibleTypes": null }, - { - "kind": "INPUT_OBJECT", - "name": "BooleanFilter", - "description": "A filter to be used against Boolean fields. All fields are combined with a logical ‘and.’", - "fields": null, - "inputFields": [ - { - "name": "distinctFrom", - "description": "Not equal to the specified value, treating null like an ordinary value.", - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "equalTo", - "description": "Equal to the specified value.", - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "greaterThan", - "description": "Greater than the specified value.", - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "greaterThanOrEqualTo", - "description": "Greater than or equal to the specified value.", - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "in", - "description": "Included in the specified list.", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - } - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "isNull", - "description": "Is null (if `true` is specified) or is not null (if `false` is specified).", - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "lessThan", - "description": "Less than the specified value.", - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "lessThanOrEqualTo", - "description": "Less than or equal to the specified value.", - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notDistinctFrom", - "description": "Equal to the specified value, treating null like an ordinary value.", - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notEqualTo", - "description": "Not equal to the specified value.", - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notIn", - "description": "Not included in the specified list.", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - } - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, { "kind": "INPUT_OBJECT", "name": "ChangePasswordInput", @@ -985,18 +826,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "filter", - "description": "A filter to be used in determining which values should be returned by the collection.", - "type": { - "kind": "INPUT_OBJECT", - "name": "InvitationFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "first", "description": "Only read the first `n` values of the set.", @@ -1400,42 +1229,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "endTime", - "description": "Filter by the object’s `endTime` field.", - "type": { - "kind": "INPUT_OBJECT", - "name": "DatetimeFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "granted", - "description": "Filter by the object’s `granted` field.", - "type": { - "kind": "INPUT_OBJECT", - "name": "BooleanFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": "Filter by the object’s `id` field.", - "type": { - "kind": "INPUT_OBJECT", - "name": "IntFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "not", "description": "Negates the expression.", @@ -1468,30 +1261,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "secretsId", - "description": "Filter by the object’s `secretsId` field.", - "type": { - "kind": "INPUT_OBJECT", - "name": "IntFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "startTime", - "description": "Filter by the object’s `startTime` field.", - "type": { - "kind": "INPUT_OBJECT", - "name": "DatetimeFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "title", "description": "Filter by the object’s `title` field.", @@ -1942,91 +1711,16 @@ }, { "kind": "INPUT_OBJECT", - "name": "CtfSecretFilter", - "description": "A filter to be used against `CtfSecret` object types. All fields are combined with a logical ‘and.’", + "name": "CtfSecretPatch", + "description": "Represents an update to a `CtfSecret`. Fields that are set will be updated.", "fields": null, "inputFields": [ { - "name": "and", - "description": "Checks for all expressions in this list.", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "CtfSecretFilter", - "ofType": null - } - } - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": "Filter by the object’s `id` field.", - "type": { - "kind": "INPUT_OBJECT", - "name": "IntFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "not", - "description": "Negates the expression.", + "name": "credentials", + "description": null, "type": { - "kind": "INPUT_OBJECT", - "name": "CtfSecretFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "or", - "description": "Checks for any expressions in this list.", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "CtfSecretFilter", - "ofType": null - } - } - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "CtfSecretPatch", - "description": "Represents an update to a `CtfSecret`. Fields that are set will be updated.", - "fields": null, - "inputFields": [ - { - "name": "credentials", - "description": null, - "type": { - "kind": "SCALAR", - "name": "String", + "kind": "SCALAR", + "name": "String", "ofType": null }, "defaultValue": null, @@ -2448,165 +2142,6 @@ "enumValues": null, "possibleTypes": null }, - { - "kind": "INPUT_OBJECT", - "name": "DatetimeFilter", - "description": "A filter to be used against Datetime fields. All fields are combined with a logical ‘and.’", - "fields": null, - "inputFields": [ - { - "name": "distinctFrom", - "description": "Not equal to the specified value, treating null like an ordinary value.", - "type": { - "kind": "SCALAR", - "name": "Datetime", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "equalTo", - "description": "Equal to the specified value.", - "type": { - "kind": "SCALAR", - "name": "Datetime", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "greaterThan", - "description": "Greater than the specified value.", - "type": { - "kind": "SCALAR", - "name": "Datetime", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "greaterThanOrEqualTo", - "description": "Greater than or equal to the specified value.", - "type": { - "kind": "SCALAR", - "name": "Datetime", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "in", - "description": "Included in the specified list.", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Datetime", - "ofType": null - } - } - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "isNull", - "description": "Is null (if `true` is specified) or is not null (if `false` is specified).", - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "lessThan", - "description": "Less than the specified value.", - "type": { - "kind": "SCALAR", - "name": "Datetime", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "lessThanOrEqualTo", - "description": "Less than or equal to the specified value.", - "type": { - "kind": "SCALAR", - "name": "Datetime", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notDistinctFrom", - "description": "Equal to the specified value, treating null like an ordinary value.", - "type": { - "kind": "SCALAR", - "name": "Datetime", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notEqualTo", - "description": "Not equal to the specified value.", - "type": { - "kind": "SCALAR", - "name": "Datetime", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notIn", - "description": "Not included in the specified list.", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Datetime", - "ofType": null - } - } - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, { "kind": "INPUT_OBJECT", "name": "DeleteCtfByNodeIdInput", @@ -3356,94 +2891,103 @@ "possibleTypes": null }, { - "kind": "INPUT_OBJECT", - "name": "IntFilter", - "description": "A filter to be used against Int fields. All fields are combined with a logical ‘and.’", - "fields": null, - "inputFields": [ + "kind": "OBJECT", + "name": "Invitation", + "description": null, + "fields": [ { - "name": "distinctFrom", - "description": "Not equal to the specified value, treating null like an ordinary value.", + "name": "ctf", + "description": "Reads a single `Ctf` that is related to this `Invitation`.", + "args": [], "type": { - "kind": "SCALAR", - "name": "Int", + "kind": "OBJECT", + "name": "Ctf", "ofType": null }, - "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "equalTo", - "description": "Equal to the specified value.", + "name": "ctfId", + "description": null, + "args": [], "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } }, - "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "greaterThan", - "description": "Greater than the specified value.", + "name": "nodeId", + "description": "A globally unique identifier. Can be used in various places throughout the system to identify this single value.", + "args": [], "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } }, - "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "greaterThanOrEqualTo", - "description": "Greater than or equal to the specified value.", + "name": "profile", + "description": "Reads a single `Profile` that is related to this `Invitation`.", + "args": [], "type": { - "kind": "SCALAR", - "name": "Int", + "kind": "OBJECT", + "name": "Profile", "ofType": null }, - "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "in", - "description": "Included in the specified list.", + "name": "profileId", + "description": null, + "args": [], "type": { - "kind": "LIST", + "kind": "NON_NULL", "name": null, "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } + "kind": "SCALAR", + "name": "Int", + "ofType": null } }, - "defaultValue": null, "isDeprecated": false, "deprecationReason": null - }, + } + ], + "inputFields": null, + "interfaces": [ { - "name": "isNull", - "description": "Is null (if `true` is specified) or is not null (if `false` is specified).", - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "InvitationCondition", + "description": "A condition to be used against `Invitation` object types. All fields are tested\nfor equality and combined with a logical ‘and.’", + "fields": null, + "inputFields": [ { - "name": "lessThan", - "description": "Less than the specified value.", + "name": "ctfId", + "description": "Checks for equality with the object’s `ctfId` field.", "type": { "kind": "SCALAR", "name": "Int", @@ -3454,8 +2998,8 @@ "deprecationReason": null }, { - "name": "lessThanOrEqualTo", - "description": "Less than or equal to the specified value.", + "name": "profileId", + "description": "Checks for equality with the object’s `profileId` field.", "type": { "kind": "SCALAR", "name": "Int", @@ -3464,261 +3008,6 @@ "defaultValue": null, "isDeprecated": false, "deprecationReason": null - }, - { - "name": "notDistinctFrom", - "description": "Equal to the specified value, treating null like an ordinary value.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notEqualTo", - "description": "Not equal to the specified value.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notIn", - "description": "Not included in the specified list.", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - } - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Invitation", - "description": null, - "fields": [ - { - "name": "ctf", - "description": "Reads a single `Ctf` that is related to this `Invitation`.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Ctf", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ctfId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nodeId", - "description": "A globally unique identifier. Can be used in various places throughout the system to identify this single value.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "profile", - "description": "Reads a single `Profile` that is related to this `Invitation`.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Profile", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "profileId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "Node", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "InvitationCondition", - "description": "A condition to be used against `Invitation` object types. All fields are tested\nfor equality and combined with a logical ‘and.’", - "fields": null, - "inputFields": [ - { - "name": "ctfId", - "description": "Checks for equality with the object’s `ctfId` field.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "profileId", - "description": "Checks for equality with the object’s `profileId` field.", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "InvitationFilter", - "description": "A filter to be used against `Invitation` object types. All fields are combined with a logical ‘and.’", - "fields": null, - "inputFields": [ - { - "name": "and", - "description": "Checks for all expressions in this list.", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "InvitationFilter", - "ofType": null - } - } - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ctfId", - "description": "Filter by the object’s `ctfId` field.", - "type": { - "kind": "INPUT_OBJECT", - "name": "IntFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "not", - "description": "Negates the expression.", - "type": { - "kind": "INPUT_OBJECT", - "name": "InvitationFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "or", - "description": "Checks for any expressions in this list.", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "InvitationFilter", - "ofType": null - } - } - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "profileId", - "description": "Filter by the object’s `profileId` field.", - "type": { - "kind": "INPUT_OBJECT", - "name": "IntFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null } ], "interfaces": null, @@ -5331,18 +4620,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "filter", - "description": "A filter to be used in determining which values should be returned by the collection.", - "type": { - "kind": "INPUT_OBJECT", - "name": "InvitationFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "first", "description": "Only read the first `n` values of the set.", @@ -5413,15 +4690,15 @@ "deprecationReason": null }, { - "name": "nodeId", - "description": "A globally unique identifier. Can be used in various places throughout the system to identify this single value.", + "name": "lastactive", + "description": null, "args": [], "type": { "kind": "NON_NULL", "name": null, "ofType": { "kind": "SCALAR", - "name": "ID", + "name": "Datetime", "ofType": null } }, @@ -5429,8 +4706,24 @@ "deprecationReason": null }, { - "name": "role", - "description": null, + "name": "nodeId", + "description": "A globally unique identifier. Can be used in various places throughout the system to identify this single value.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "role", + "description": null, "args": [], "type": { "kind": "ENUM", @@ -5496,18 +4789,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "filter", - "description": "A filter to be used in determining which values should be returned by the collection.", - "type": { - "kind": "INPUT_OBJECT", - "name": "WorkOnTaskFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "first", "description": "Only read the first `n` values of the set.", @@ -5650,18 +4931,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "id", - "description": "Filter by the object’s `id` field.", - "type": { - "kind": "INPUT_OBJECT", - "name": "IntFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "not", "description": "Negates the expression.", @@ -5694,18 +4963,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "role", - "description": "Filter by the object’s `role` field.", - "type": { - "kind": "INPUT_OBJECT", - "name": "RoleFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "username", "description": "Filter by the object’s `username` field.", @@ -6114,18 +5371,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "filter", - "description": "A filter to be used in determining which values should be returned by the collection.", - "type": { - "kind": "INPUT_OBJECT", - "name": "CtfSecretFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "first", "description": "Only read the first `n` values of the set.", @@ -6336,18 +5581,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "filter", - "description": "A filter to be used in determining which values should be returned by the collection.", - "type": { - "kind": "INPUT_OBJECT", - "name": "ProfileFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "first", "description": "Only read the first `n` values of the set.", @@ -6421,18 +5654,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "filter", - "description": "A filter to be used in determining which values should be returned by the collection.", - "type": { - "kind": "INPUT_OBJECT", - "name": "CtfFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "first", "description": "Only read the first `n` values of the set.", @@ -6592,18 +5813,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "filter", - "description": "A filter to be used in determining which values should be returned by the collection.", - "type": { - "kind": "INPUT_OBJECT", - "name": "InvitationFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "first", "description": "Only read the first `n` values of the set.", @@ -6766,18 +5975,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "filter", - "description": "A filter to be used in determining which values should be returned by the collection.", - "type": { - "kind": "INPUT_OBJECT", - "name": "CtfFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "first", "description": "Only read the first `n` values of the set.", @@ -7547,18 +6744,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "filter", - "description": "A filter to be used in determining which values should be returned by the collection.", - "type": { - "kind": "INPUT_OBJECT", - "name": "WorkOnTaskFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "first", "description": "Only read the first `n` values of the set.", @@ -8120,165 +7305,6 @@ ], "possibleTypes": null }, - { - "kind": "INPUT_OBJECT", - "name": "RoleFilter", - "description": "A filter to be used against Role fields. All fields are combined with a logical ‘and.’", - "fields": null, - "inputFields": [ - { - "name": "distinctFrom", - "description": "Not equal to the specified value, treating null like an ordinary value.", - "type": { - "kind": "ENUM", - "name": "Role", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "equalTo", - "description": "Equal to the specified value.", - "type": { - "kind": "ENUM", - "name": "Role", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "greaterThan", - "description": "Greater than the specified value.", - "type": { - "kind": "ENUM", - "name": "Role", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "greaterThanOrEqualTo", - "description": "Greater than or equal to the specified value.", - "type": { - "kind": "ENUM", - "name": "Role", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "in", - "description": "Included in the specified list.", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "Role", - "ofType": null - } - } - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "isNull", - "description": "Is null (if `true` is specified) or is not null (if `false` is specified).", - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "lessThan", - "description": "Less than the specified value.", - "type": { - "kind": "ENUM", - "name": "Role", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "lessThanOrEqualTo", - "description": "Less than or equal to the specified value.", - "type": { - "kind": "ENUM", - "name": "Role", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notDistinctFrom", - "description": "Equal to the specified value, treating null like an ordinary value.", - "type": { - "kind": "ENUM", - "name": "Role", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notEqualTo", - "description": "Not equal to the specified value.", - "type": { - "kind": "ENUM", - "name": "Role", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notIn", - "description": "Not included in the specified list.", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "Role", - "ofType": null - } - } - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, { "kind": "OBJECT", "name": "Setting", @@ -8754,635 +7780,171 @@ }, "isDeprecated": false, "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "StopWorkingOnInput", - "description": "All input for the `stopWorkingOn` mutation.", - "fields": null, - "inputFields": [ - { - "name": "clientMutationId", - "description": "An arbitrary string value with no semantic meaning. Will be included in the\npayload verbatim. May be used to track mutations by the client.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "taskId", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "StopWorkingOnPayload", - "description": "The output of our `stopWorkingOn` mutation.", - "fields": [ - { - "name": "clientMutationId", - "description": "The exact same `clientMutationId` that was provided in the mutation input,\nunchanged and unused. May be used by a client to track mutations.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "profile", - "description": "Reads a single `Profile` that is related to this `WorkOnTask`.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Profile", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "query", - "description": "Our root query field type. Allows us to run any query from our mutation payload.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Query", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "task", - "description": "Reads a single `Task` that is related to this `WorkOnTask`.", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Task", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "workOnTask", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "WorkOnTask", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "workOnTaskEdge", - "description": "An edge for our `WorkOnTask`. May be used by Relay 1.", - "args": [ - { - "name": "orderBy", - "description": "The method to use when ordering `WorkOnTask`.", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "WorkOnTasksOrderBy", - "ofType": null - } - } - }, - "defaultValue": "[PRIMARY_KEY_ASC]", - "isDeprecated": false, - "deprecationReason": null - } - ], - "type": { - "kind": "OBJECT", - "name": "WorkOnTasksEdge", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "String", - "description": "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.", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "StringFilter", - "description": "A filter to be used against String fields. All fields are combined with a logical ‘and.’", - "fields": null, - "inputFields": [ - { - "name": "distinctFrom", - "description": "Not equal to the specified value, treating null like an ordinary value.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "distinctFromInsensitive", - "description": "Not equal to the specified value, treating null like an ordinary value (case-insensitive).", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "endsWith", - "description": "Ends with the specified string (case-sensitive).", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "endsWithInsensitive", - "description": "Ends with the specified string (case-insensitive).", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "equalTo", - "description": "Equal to the specified value.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "equalToInsensitive", - "description": "Equal to the specified value (case-insensitive).", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "greaterThan", - "description": "Greater than the specified value.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "greaterThanInsensitive", - "description": "Greater than the specified value (case-insensitive).", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "greaterThanOrEqualTo", - "description": "Greater than or equal to the specified value.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "greaterThanOrEqualToInsensitive", - "description": "Greater than or equal to the specified value (case-insensitive).", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "in", - "description": "Included in the specified list.", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - } - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "inInsensitive", - "description": "Included in the specified list (case-insensitive).", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - } - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "includes", - "description": "Contains the specified string (case-sensitive).", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "includesInsensitive", - "description": "Contains the specified string (case-insensitive).", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "isNull", - "description": "Is null (if `true` is specified) or is not null (if `false` is specified).", - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "lessThan", - "description": "Less than the specified value.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "lessThanInsensitive", - "description": "Less than the specified value (case-insensitive).", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "lessThanOrEqualTo", - "description": "Less than or equal to the specified value.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "lessThanOrEqualToInsensitive", - "description": "Less than or equal to the specified value (case-insensitive).", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "like", - "description": "Matches the specified pattern (case-sensitive). An underscore (_) matches any single character; a percent sign (%) matches any sequence of zero or more characters.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "likeInsensitive", - "description": "Matches the specified pattern (case-insensitive). An underscore (_) matches any single character; a percent sign (%) matches any sequence of zero or more characters.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notDistinctFrom", - "description": "Equal to the specified value, treating null like an ordinary value.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notDistinctFromInsensitive", - "description": "Equal to the specified value, treating null like an ordinary value (case-insensitive).", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notEndsWith", - "description": "Does not end with the specified string (case-sensitive).", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notEndsWithInsensitive", - "description": "Does not end with the specified string (case-insensitive).", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notEqualTo", - "description": "Not equal to the specified value.", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notEqualToInsensitive", - "description": "Not equal to the specified value (case-insensitive).", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notIn", - "description": "Not included in the specified list.", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - } - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "StopWorkingOnInput", + "description": "All input for the `stopWorkingOn` mutation.", + "fields": null, + "inputFields": [ { - "name": "notInInsensitive", - "description": "Not included in the specified list (case-insensitive).", + "name": "clientMutationId", + "description": "An arbitrary string value with no semantic meaning. Will be included in the\npayload verbatim. May be used to track mutations by the client.", "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - } + "kind": "SCALAR", + "name": "String", + "ofType": null }, "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "notIncludes", - "description": "Does not contain the specified string (case-sensitive).", + "name": "taskId", + "description": null, "type": { "kind": "SCALAR", - "name": "String", + "name": "Int", "ofType": null }, "defaultValue": null, "isDeprecated": false, "deprecationReason": null - }, + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "StopWorkingOnPayload", + "description": "The output of our `stopWorkingOn` mutation.", + "fields": [ { - "name": "notIncludesInsensitive", - "description": "Does not contain the specified string (case-insensitive).", + "name": "clientMutationId", + "description": "The exact same `clientMutationId` that was provided in the mutation input,\nunchanged and unused. May be used by a client to track mutations.", + "args": [], "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "notLike", - "description": "Does not match the specified pattern (case-sensitive). An underscore (_) matches any single character; a percent sign (%) matches any sequence of zero or more characters.", + "name": "profile", + "description": "Reads a single `Profile` that is related to this `WorkOnTask`.", + "args": [], "type": { - "kind": "SCALAR", - "name": "String", + "kind": "OBJECT", + "name": "Profile", "ofType": null }, - "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "notLikeInsensitive", - "description": "Does not match the specified pattern (case-insensitive). An underscore (_) matches any single character; a percent sign (%) matches any sequence of zero or more characters.", + "name": "query", + "description": "Our root query field type. Allows us to run any query from our mutation payload.", + "args": [], "type": { - "kind": "SCALAR", - "name": "String", + "kind": "OBJECT", + "name": "Query", "ofType": null }, - "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "notStartsWith", - "description": "Does not start with the specified string (case-sensitive).", + "name": "task", + "description": "Reads a single `Task` that is related to this `WorkOnTask`.", + "args": [], "type": { - "kind": "SCALAR", - "name": "String", + "kind": "OBJECT", + "name": "Task", "ofType": null }, - "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "notStartsWithInsensitive", - "description": "Does not start with the specified string (case-insensitive).", + "name": "workOnTask", + "description": null, + "args": [], "type": { - "kind": "SCALAR", - "name": "String", + "kind": "OBJECT", + "name": "WorkOnTask", "ofType": null }, - "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "startsWith", - "description": "Starts with the specified string (case-sensitive).", + "name": "workOnTaskEdge", + "description": "An edge for our `WorkOnTask`. May be used by Relay 1.", + "args": [ + { + "name": "orderBy", + "description": "The method to use when ordering `WorkOnTask`.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "WorkOnTasksOrderBy", + "ofType": null + } + } + }, + "defaultValue": "[PRIMARY_KEY_ASC]", + "isDeprecated": false, + "deprecationReason": null + } + ], "type": { - "kind": "SCALAR", - "name": "String", + "kind": "OBJECT", + "name": "WorkOnTasksEdge", "ofType": null }, - "defaultValue": null, "isDeprecated": false, "deprecationReason": null - }, + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "String", + "description": "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.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "description": "A filter to be used against String fields. All fields are combined with a logical ‘and.’", + "fields": null, + "inputFields": [ { - "name": "startsWithInsensitive", - "description": "Starts with the specified string (case-insensitive).", + "name": "includesInsensitive", + "description": "Contains the specified string (case-insensitive).", "type": { "kind": "SCALAR", "name": "String", @@ -9638,18 +8200,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "filter", - "description": "A filter to be used in determining which values should be returned by the collection.", - "type": { - "kind": "INPUT_OBJECT", - "name": "WorkOnTaskFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "first", "description": "Only read the first `n` values of the set.", @@ -9804,30 +8354,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "ctfId", - "description": "Filter by the object’s `ctfId` field.", - "type": { - "kind": "INPUT_OBJECT", - "name": "IntFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": "Filter by the object’s `id` field.", - "type": { - "kind": "INPUT_OBJECT", - "name": "IntFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "not", "description": "Negates the expression.", @@ -9860,18 +8386,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "solved", - "description": "Filter by the object’s `solved` field.", - "type": { - "kind": "INPUT_OBJECT", - "name": "BooleanFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "title", "description": "Filter by the object’s `title` field.", @@ -11610,93 +10124,6 @@ "enumValues": null, "possibleTypes": null }, - { - "kind": "INPUT_OBJECT", - "name": "WorkOnTaskFilter", - "description": "A filter to be used against `WorkOnTask` object types. All fields are combined with a logical ‘and.’", - "fields": null, - "inputFields": [ - { - "name": "and", - "description": "Checks for all expressions in this list.", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "WorkOnTaskFilter", - "ofType": null - } - } - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "not", - "description": "Negates the expression.", - "type": { - "kind": "INPUT_OBJECT", - "name": "WorkOnTaskFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "or", - "description": "Checks for any expressions in this list.", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "WorkOnTaskFilter", - "ofType": null - } - } - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "profileId", - "description": "Filter by the object’s `profileId` field.", - "type": { - "kind": "INPUT_OBJECT", - "name": "IntFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "taskId", - "description": "Filter by the object’s `taskId` field.", - "type": { - "kind": "INPUT_OBJECT", - "name": "IntFilter", - "ofType": null - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, { "kind": "OBJECT", "name": "WorkOnTasksConnection", diff --git a/front/src/components/Admin/Users.vue b/front/src/components/Admin/Users.vue index d431c154..6ea59c4d 100644 --- a/front/src/components/Admin/Users.vue +++ b/front/src/components/Admin/Users.vue @@ -36,6 +36,11 @@ {{ value }} +