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 }}
+
+
+ {{ value }}
+
+
{{ value }}
@@ -81,6 +86,7 @@