mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-04 20:06:35 +03:00
frontend: apply prettier
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/7668 GitOrigin-RevId: 0ed901780092994ae40c2c57557c5854812a91b2
This commit is contained in:
parent
221af57e53
commit
09c9cf8b46
@ -1,2 +1,3 @@
|
|||||||
11a454c2d69bb05c3471be0d04d2282cc93a557e # reformat with Ormolu
|
11a454c2d69bb05c3471be0d04d2282cc93a557e # reformat with Ormolu
|
||||||
342391f39dd68dd7922ef29215e150dca7811975 # reformat with Ormolu v0.5.0.1
|
342391f39dd68dd7922ef29215e150dca7811975 # reformat with Ormolu v0.5.0.1
|
||||||
|
fb19d80e16092186c6aa61bf90b3d1a55644a5a7 # Prettier reformat
|
3
frontend/.gitignore
vendored
3
frontend/.gitignore
vendored
@ -42,3 +42,6 @@ Thumbs.db
|
|||||||
|
|
||||||
# Env
|
# Env
|
||||||
.env
|
.env
|
||||||
|
|
||||||
|
# This is a snapshot generated during npm install, but not needed
|
||||||
|
/snapshots.js
|
||||||
|
@ -3,3 +3,7 @@
|
|||||||
/dist
|
/dist
|
||||||
/coverage
|
/coverage
|
||||||
/docs
|
/docs
|
||||||
|
/apps/console-ce/src/assets/
|
||||||
|
/apps/console-ee/src/assets/
|
||||||
|
/apps/console-ce-e2e/**/snapshots.js
|
||||||
|
/snapshots.js
|
||||||
|
1
frontend/.vscode/settings.json
vendored
1
frontend/.vscode/settings.json
vendored
@ -2,7 +2,6 @@
|
|||||||
"eslint.validate": ["json"],
|
"eslint.validate": ["json"],
|
||||||
"cSpell.words": ["clsx"],
|
"cSpell.words": ["clsx"],
|
||||||
"tailwindCSS.experimental.classRegex": [
|
"tailwindCSS.experimental.classRegex": [
|
||||||
|
|
||||||
"tw\\w+ ?= ?`([^`]*)`",
|
"tw\\w+ ?= ?`([^`]*)`",
|
||||||
"tw\\w+: ?`([^`]*)`"
|
"tw\\w+: ?`([^`]*)`"
|
||||||
],
|
],
|
||||||
|
@ -6,8 +6,7 @@ Visit the [Nx Documentation](https://nx.dev) to learn more about it.
|
|||||||
|
|
||||||
This `frontend` monorepo contains the Hasura Console, in all the possible modes.
|
This `frontend` monorepo contains the Hasura Console, in all the possible modes.
|
||||||
|
|
||||||
|
_Last import [2023-01-12](https://github.com/hasura/graphql-engine-mono/tree/a8cbb297437e4c2d9ba4cab5da1e464d4eac43e4)_
|
||||||
*Last import [2023-01-12](https://github.com/hasura/graphql-engine-mono/tree/a8cbb297437e4c2d9ba4cab5da1e464d4eac43e4)*
|
|
||||||
|
|
||||||
## Nx Console
|
## Nx Console
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# Test
|
# Test
|
||||||
|
|
||||||
## Useful resources
|
## Useful resources
|
||||||
|
|
||||||
- [Cypress Dashboard for the Console project](https://dashboard.cypress.io/projects/5yiuic)
|
- [Cypress Dashboard for the Console project](https://dashboard.cypress.io/projects/5yiuic)
|
||||||
|
|
||||||
## Running all tests to generate coverage
|
## Running all tests to generate coverage
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -37,71 +37,71 @@
|
|||||||
* @see https://github.com/bahmutov/cypress-network-idle
|
* @see https://github.com/bahmutov/cypress-network-idle
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'cypress-wait-until';
|
import 'cypress-wait-until';
|
||||||
|
|
||||||
export function waitForPostCreationRequests() {
|
export function waitForPostCreationRequests() {
|
||||||
let waitCompleted = false;
|
let waitCompleted = false;
|
||||||
|
|
||||||
cy.log('*--- All requests must be settled*');
|
cy.log('*--- All requests must be settled*');
|
||||||
|
|
||||||
const pendingRequests = new Map();
|
const pendingRequests = new Map();
|
||||||
cy.intercept('POST', 'http://localhost:8080/v1/metadata', req => {
|
cy.intercept('POST', 'http://localhost:8080/v1/metadata', req => {
|
||||||
if (waitCompleted) return;
|
if (waitCompleted) return;
|
||||||
|
|
||||||
Cypress.log({ message: '*--- Request pending*' });
|
Cypress.log({ message: '*--- Request pending*' });
|
||||||
|
|
||||||
pendingRequests.set(req, true);
|
pendingRequests.set(req, true);
|
||||||
|
|
||||||
req.continue(() => {
|
req.continue(() => {
|
||||||
Cypress.log({ message: '*--- Request settled*' });
|
Cypress.log({ message: '*--- Request settled*' });
|
||||||
|
|
||||||
pendingRequests.delete(req);
|
pendingRequests.delete(req);
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
Cypress.log({ message: '*--- Waiting for the first request to start*' });
|
|
||||||
|
Cypress.log({ message: '*--- Waiting for the first request to start*' });
|
||||||
// Check if at least one request has been caught. This check must protect from the following case
|
|
||||||
//
|
// Check if at least one request has been caught. This check must protect from the following case
|
||||||
// check requests start test failure, the requests got the UI re-rendered
|
//
|
||||||
// | | |
|
// check requests start test failure, the requests got the UI re-rendered
|
||||||
// |--🚦🔴----⚠️---🚦🟢-------1-2-3-4-5-6-7-1----------💥
|
// | | |
|
||||||
//
|
// |--🚦🔴----⚠️---🚦🟢-------1-2-3-4-5-6-7-1----------💥
|
||||||
// where checking that "there are no pending requests" falls in the false positive case where
|
//
|
||||||
// there are no pending requests because no one started at all.
|
// where checking that "there are no pending requests" falls in the false positive case where
|
||||||
//
|
// there are no pending requests because no one started at all.
|
||||||
// The check runs every millisecond to be 100% sure that no request can escape (ex. because of a
|
//
|
||||||
// super fast server). A false-negative case represented here
|
// The check runs every millisecond to be 100% sure that no request can escape (ex. because of a
|
||||||
//
|
// super fast server). A false-negative case represented here
|
||||||
// requests start requests end check check test failure, no first request caught
|
//
|
||||||
// | | | | | | |
|
// requests start requests end check check test failure, no first request caught
|
||||||
// |--🚦🔴--1-2-3-4-5-6-7-1-2-3-4-5-6-7--⚠️------------------⚠️------------------💥
|
// | | | | | | |
|
||||||
cy.waitUntil(() => pendingRequests.size > 0, {
|
// |--🚦🔴--1-2-3-4-5-6-7-1-2-3-4-5-6-7--⚠️------------------⚠️------------------💥
|
||||||
timeout: 5000, // 5 seconds is the default Cypress wait for a request to start
|
cy.waitUntil(() => pendingRequests.size > 0, {
|
||||||
interval: 1,
|
timeout: 5000, // 5 seconds is the default Cypress wait for a request to start
|
||||||
errorMsg: 'No first request caught',
|
interval: 1,
|
||||||
});
|
errorMsg: 'No first request caught',
|
||||||
|
});
|
||||||
Cypress.log({ message: '*--- Waiting for all the requests to start*' });
|
|
||||||
|
Cypress.log({ message: '*--- Waiting for all the requests to start*' });
|
||||||
// Let pass some time to collect all the requests. Otherwise, it could detect that the first
|
|
||||||
// request complete and go on with the test, even if another one will be performed in a while.
|
// Let pass some time to collect all the requests. Otherwise, it could detect that the first
|
||||||
//
|
// request complete and go on with the test, even if another one will be performed in a while.
|
||||||
// This fixed wait protects from the following timeline
|
//
|
||||||
//
|
// This fixed wait protects from the following timeline
|
||||||
// 1st request start first request end other requests start test failure, the requests got the UI re-rendered
|
//
|
||||||
// | | | |
|
// 1st request start first request end other requests start test failure, the requests got the UI re-rendered
|
||||||
// |--🚦🔴---1---------------------1----🚦🟢----------------2-3-4-5-6-7-1----------💥
|
// | | | |
|
||||||
//
|
// |--🚦🔴---1---------------------1----🚦🟢----------------2-3-4-5-6-7-1----------💥
|
||||||
// Obviously, it is an empiric waiting, that also slows down the test.
|
//
|
||||||
cy.wait(500);
|
// Obviously, it is an empiric waiting, that also slows down the test.
|
||||||
|
cy.wait(500);
|
||||||
Cypress.log({ message: '*--- Waiting for all the requests to be settled*' });
|
|
||||||
|
Cypress.log({ message: '*--- Waiting for all the requests to be settled*' });
|
||||||
cy.waitUntil(() => pendingRequests.size === 0, {
|
|
||||||
timeout: 30000, // 30 seconds is the default Cypress wait for the request to complete
|
cy.waitUntil(() => pendingRequests.size === 0, {
|
||||||
errorMsg: 'Some requests are not settled yet',
|
timeout: 30000, // 30 seconds is the default Cypress wait for the request to complete
|
||||||
}).then(() => {
|
errorMsg: 'Some requests are not settled yet',
|
||||||
waitCompleted = true;
|
}).then(() => {
|
||||||
});
|
waitCompleted = true;
|
||||||
}
|
});
|
||||||
|
}
|
||||||
|
@ -1,123 +1,128 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0",
|
__version: '10.4.0',
|
||||||
"Actions with Transform": {
|
'Actions with Transform': {
|
||||||
"When the users create, and delete a Action with Transform, everything should work": {
|
'When the users create, and delete a Action with Transform, everything should work':
|
||||||
"Action payload": {
|
{
|
||||||
"bodyToSnapshot": [
|
'Action payload': {
|
||||||
{
|
bodyToSnapshot: [
|
||||||
"type": "set_custom_types",
|
{
|
||||||
"args": {
|
type: 'set_custom_types',
|
||||||
"scalars": [],
|
args: {
|
||||||
"input_objects": [],
|
scalars: [],
|
||||||
"objects": [
|
input_objects: [],
|
||||||
{
|
objects: [
|
||||||
"name": "LoginResponse",
|
|
||||||
"description": null,
|
|
||||||
"fields": [
|
|
||||||
{
|
|
||||||
"name": "accessToken",
|
|
||||||
"type": "String!",
|
|
||||||
"description": null
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"enums": []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "create_action",
|
|
||||||
"args": {
|
|
||||||
"name": "login",
|
|
||||||
"definition": {
|
|
||||||
"arguments": [
|
|
||||||
{
|
{
|
||||||
"name": "username",
|
name: 'LoginResponse',
|
||||||
"type": "String!",
|
description: null,
|
||||||
"description": null
|
fields: [
|
||||||
|
{
|
||||||
|
name: 'accessToken',
|
||||||
|
type: 'String!',
|
||||||
|
description: null,
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "password",
|
|
||||||
"type": "String!",
|
|
||||||
"description": null
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
"kind": "synchronous",
|
enums: [],
|
||||||
"output_type": "LoginResponse",
|
|
||||||
"handler": "https://hasura-actions-demo.glitch.me",
|
|
||||||
"type": "mutation",
|
|
||||||
"headers": [],
|
|
||||||
"forward_client_headers": false,
|
|
||||||
"timeout": null,
|
|
||||||
"request_transform": {
|
|
||||||
"version": 2,
|
|
||||||
"template_engine": "Kriti",
|
|
||||||
"method": "POST",
|
|
||||||
"url": "{{$base_url}}/{{$body.action.name}}",
|
|
||||||
"query_params": {
|
|
||||||
"id": "5",
|
|
||||||
"name": "{{$body.action.name}}"
|
|
||||||
},
|
|
||||||
"body": {
|
|
||||||
"action": "transform",
|
|
||||||
"template": "{\n \"userInfo\": {\n \"name\": {{$body.input.username}},\n \"password\": {{$body.input.password}},\n \"type\": {{$body.action.name}}\n \n }\n}"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"response_transform": {
|
|
||||||
"version": 2,
|
|
||||||
"body": {
|
|
||||||
"action": "transform",
|
|
||||||
"template": "{\n \"userInfo\": {\n \"name\": {{$body.input.username}},\n \"password\": {{$body.input.password}},\n \"type\": {{$body.action.name}}\n \n }\n}"
|
|
||||||
},
|
|
||||||
"template_engine": "Kriti"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"comment": null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Action metadata": {
|
|
||||||
"name": "login",
|
|
||||||
"definition": {
|
|
||||||
"handler": "https://hasura-actions-demo.glitch.me",
|
|
||||||
"output_type": "LoginResponse",
|
|
||||||
"arguments": [
|
|
||||||
{
|
|
||||||
"name": "username",
|
|
||||||
"type": "String!"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "password",
|
type: 'create_action',
|
||||||
"type": "String!"
|
args: {
|
||||||
}
|
name: 'login',
|
||||||
|
definition: {
|
||||||
|
arguments: [
|
||||||
|
{
|
||||||
|
name: 'username',
|
||||||
|
type: 'String!',
|
||||||
|
description: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'password',
|
||||||
|
type: 'String!',
|
||||||
|
description: null,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
kind: 'synchronous',
|
||||||
|
output_type: 'LoginResponse',
|
||||||
|
handler: 'https://hasura-actions-demo.glitch.me',
|
||||||
|
type: 'mutation',
|
||||||
|
headers: [],
|
||||||
|
forward_client_headers: false,
|
||||||
|
timeout: null,
|
||||||
|
request_transform: {
|
||||||
|
version: 2,
|
||||||
|
template_engine: 'Kriti',
|
||||||
|
method: 'POST',
|
||||||
|
url: '{{$base_url}}/{{$body.action.name}}',
|
||||||
|
query_params: {
|
||||||
|
id: '5',
|
||||||
|
name: '{{$body.action.name}}',
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
action: 'transform',
|
||||||
|
template:
|
||||||
|
'{\n "userInfo": {\n "name": {{$body.input.username}},\n "password": {{$body.input.password}},\n "type": {{$body.action.name}}\n \n }\n}',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
response_transform: {
|
||||||
|
version: 2,
|
||||||
|
body: {
|
||||||
|
action: 'transform',
|
||||||
|
template:
|
||||||
|
'{\n "userInfo": {\n "name": {{$body.input.username}},\n "password": {{$body.input.password}},\n "type": {{$body.action.name}}\n \n }\n}',
|
||||||
|
},
|
||||||
|
template_engine: 'Kriti',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
comment: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
],
|
],
|
||||||
"request_transform": {
|
},
|
||||||
"body": {
|
'Action metadata': {
|
||||||
"action": "transform",
|
name: 'login',
|
||||||
"template": "{\n \"userInfo\": {\n \"name\": {{$body.input.username}},\n \"password\": {{$body.input.password}},\n \"type\": {{$body.action.name}}\n \n }\n}"
|
definition: {
|
||||||
|
handler: 'https://hasura-actions-demo.glitch.me',
|
||||||
|
output_type: 'LoginResponse',
|
||||||
|
arguments: [
|
||||||
|
{
|
||||||
|
name: 'username',
|
||||||
|
type: 'String!',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'password',
|
||||||
|
type: 'String!',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
request_transform: {
|
||||||
|
body: {
|
||||||
|
action: 'transform',
|
||||||
|
template:
|
||||||
|
'{\n "userInfo": {\n "name": {{$body.input.username}},\n "password": {{$body.input.password}},\n "type": {{$body.action.name}}\n \n }\n}',
|
||||||
|
},
|
||||||
|
method: 'POST',
|
||||||
|
query_params: {
|
||||||
|
id: '5',
|
||||||
|
name: '{{$body.action.name}}',
|
||||||
|
},
|
||||||
|
template_engine: 'Kriti',
|
||||||
|
url: '{{$base_url}}/{{$body.action.name}}',
|
||||||
|
version: 2,
|
||||||
},
|
},
|
||||||
"method": "POST",
|
response_transform: {
|
||||||
"query_params": {
|
body: {
|
||||||
"id": "5",
|
action: 'transform',
|
||||||
"name": "{{$body.action.name}}"
|
template:
|
||||||
|
'{\n "userInfo": {\n "name": {{$body.input.username}},\n "password": {{$body.input.password}},\n "type": {{$body.action.name}}\n \n }\n}',
|
||||||
|
},
|
||||||
|
template_engine: 'Kriti',
|
||||||
|
version: 2,
|
||||||
},
|
},
|
||||||
"template_engine": "Kriti",
|
type: 'mutation',
|
||||||
"url": "{{$base_url}}/{{$body.action.name}}",
|
kind: 'synchronous',
|
||||||
"version": 2
|
|
||||||
},
|
},
|
||||||
"response_transform": {
|
},
|
||||||
"body": {
|
},
|
||||||
"action": "transform",
|
},
|
||||||
"template": "{\n \"userInfo\": {\n \"name\": {{$body.input.username}},\n \"password\": {{$body.input.password}},\n \"type\": {{$body.action.name}}\n \n }\n}"
|
};
|
||||||
},
|
|
||||||
"template_engine": "Kriti",
|
|
||||||
"version": 2
|
|
||||||
},
|
|
||||||
"type": "mutation",
|
|
||||||
"kind": "synchronous"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -92,7 +92,9 @@ export const failCTWrongDefaultValue = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const passCT = () => {
|
export const passCT = () => {
|
||||||
cy.get(getElementFromAlias('frequently-used-columns')).first().should('exist');
|
cy.get(getElementFromAlias('frequently-used-columns'))
|
||||||
|
.first()
|
||||||
|
.should('exist');
|
||||||
// Set second column
|
// Set second column
|
||||||
cy.get(getElementFromAlias('column-1')).clear().type(getColName(1));
|
cy.get(getElementFromAlias('column-1')).clear().type(getColName(1));
|
||||||
tableColumnTypeSelector('col-type-1');
|
tableColumnTypeSelector('col-type-1');
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -7,9 +7,7 @@ export const toggleOnMigrationMode = () => {
|
|||||||
}).then(response => {
|
}).then(response => {
|
||||||
if (response.body.migration_mode === 'false') {
|
if (response.body.migration_mode === 'false') {
|
||||||
// Go to migrations section
|
// Go to migrations section
|
||||||
cy.get('a')
|
cy.get('a').contains('Migrations').click();
|
||||||
.contains('Migrations')
|
|
||||||
.click();
|
|
||||||
cy.wait(3000);
|
cy.wait(3000);
|
||||||
// Toggle Migration mode
|
// Toggle Migration mode
|
||||||
cy.get('[class=react-toggle-track]').click();
|
cy.get('[class=react-toggle-track]').click();
|
||||||
@ -25,9 +23,7 @@ export const toggleOffMigrationMode = () => {
|
|||||||
}).then(response => {
|
}).then(response => {
|
||||||
if (response.body.migration_mode === 'true') {
|
if (response.body.migration_mode === 'true') {
|
||||||
// Go to migrations section
|
// Go to migrations section
|
||||||
cy.get('a')
|
cy.get('a').contains('Migrations').click();
|
||||||
.contains('Migrations')
|
|
||||||
.click();
|
|
||||||
cy.wait(3000);
|
cy.wait(3000);
|
||||||
// Toggle Migration mode
|
// Toggle Migration mode
|
||||||
cy.get('[class=react-toggle-track]').click();
|
cy.get('[class=react-toggle-track]').click();
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -208,7 +208,9 @@ export const Addcolumnname = (name: string) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const passMTAddColumn = () => {
|
export const passMTAddColumn = () => {
|
||||||
cy.get(getElementFromAlias('frequently-used-columns')).first().should('exist');
|
cy.get(getElementFromAlias('frequently-used-columns'))
|
||||||
|
.first()
|
||||||
|
.should('exist');
|
||||||
cy.get(getElementFromAlias('column-name')).type('{selectall}{del}');
|
cy.get(getElementFromAlias('column-name')).type('{selectall}{del}');
|
||||||
cy.get(getElementFromAlias('column-name')).type(getColName(0));
|
cy.get(getElementFromAlias('column-name')).type(getColName(0));
|
||||||
tableColumnTypeSelector('col-type-0');
|
tableColumnTypeSelector('col-type-0');
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -47,7 +47,10 @@ export const passPTCreateTable = () => {
|
|||||||
cy.wait(7000);
|
cy.wait(7000);
|
||||||
cy.url().should(
|
cy.url().should(
|
||||||
'eq',
|
'eq',
|
||||||
`${baseUrl}/data/default/schema/public/tables/${getTableName(0, testName)}/modify`
|
`${baseUrl}/data/default/schema/public/tables/${getTableName(
|
||||||
|
0,
|
||||||
|
testName
|
||||||
|
)}/modify`
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -107,9 +110,7 @@ export const passPVDeleteView = () => {
|
|||||||
// Delete view
|
// Delete view
|
||||||
setPromptValue(getTableName(1, testName));
|
setPromptValue(getTableName(1, testName));
|
||||||
cy.get(getElementFromAlias('delete-view')).click();
|
cy.get(getElementFromAlias('delete-view')).click();
|
||||||
cy.window()
|
cy.window().its('prompt').should('be.called');
|
||||||
.its('prompt')
|
|
||||||
.should('be.called');
|
|
||||||
cy.wait(7000);
|
cy.wait(7000);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -122,9 +123,7 @@ export const passPTDeleteTable = () => {
|
|||||||
// Delete table
|
// Delete table
|
||||||
setPromptValue(getTableName(0, testName));
|
setPromptValue(getTableName(0, testName));
|
||||||
cy.get(getElementFromAlias('delete-table')).click();
|
cy.get(getElementFromAlias('delete-table')).click();
|
||||||
cy.window()
|
cy.window().its('prompt').should('be.called');
|
||||||
.its('prompt')
|
|
||||||
.should('be.called');
|
|
||||||
cy.wait(7000);
|
cy.wait(7000);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -25,26 +25,16 @@ export const checkCreateRemoteSchemaRoute = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const failRSWithInvalidRemoteUrl = () => {
|
export const failRSWithInvalidRemoteUrl = () => {
|
||||||
|
cy.get('[data-testid=name]').type(getRemoteSchemaName(0, testName));
|
||||||
|
cy.get('[data-testid=url]').type(getInvalidRemoteSchemaUrl());
|
||||||
|
|
||||||
cy.get('[data-testid=name]').type(
|
|
||||||
getRemoteSchemaName(0, testName)
|
|
||||||
);
|
|
||||||
cy.get('[data-testid=url]').type(
|
|
||||||
getInvalidRemoteSchemaUrl()
|
|
||||||
);
|
|
||||||
|
|
||||||
cy.get('[data-testid=submit]').click();
|
cy.get('[data-testid=submit]').click();
|
||||||
cy.get('.notifications-wrapper').contains('Error');
|
cy.get('.notifications-wrapper').contains('Error');
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export const createSimpleRemoteSchema = () => {
|
export const createSimpleRemoteSchema = () => {
|
||||||
cy.get('[data-testid=name]')
|
cy.get('[data-testid=name]').clear().type(getRemoteSchemaName(1, testName));
|
||||||
.clear()
|
cy.get('[data-testid=url]').clear().type(getRemoteGraphQLURL());
|
||||||
.type(getRemoteSchemaName(1, testName));
|
|
||||||
cy.get('[data-testid=url]')
|
|
||||||
.clear()
|
|
||||||
.type(getRemoteGraphQLURL());
|
|
||||||
cy.get('[data-testid=submit]').click();
|
cy.get('[data-testid=submit]').click();
|
||||||
cy.get('.notifications-wrapper').contains('Success');
|
cy.get('.notifications-wrapper').contains('Success');
|
||||||
validateRS(getRemoteSchemaName(1, testName), ResultType.SUCCESS);
|
validateRS(getRemoteSchemaName(1, testName), ResultType.SUCCESS);
|
||||||
@ -59,12 +49,8 @@ export const createSimpleRemoteSchema = () => {
|
|||||||
|
|
||||||
export const failRSDuplicateSchemaName = () => {
|
export const failRSDuplicateSchemaName = () => {
|
||||||
cy.visit('remote-schemas/manage/add');
|
cy.visit('remote-schemas/manage/add');
|
||||||
cy.get('[data-testid=name]')
|
cy.get('[data-testid=name]').clear().type(getRemoteSchemaName(1, testName));
|
||||||
.clear()
|
cy.get('[data-testid=url]').clear().type(getRemoteGraphQLURL());
|
||||||
.type(getRemoteSchemaName(1, testName));
|
|
||||||
cy.get('[data-testid=url]')
|
|
||||||
.clear()
|
|
||||||
.type(getRemoteGraphQLURL());
|
|
||||||
cy.get('[data-testid=submit]').click();
|
cy.get('[data-testid=submit]').click();
|
||||||
cy.get('.notifications-wrapper').contains('Error');
|
cy.get('.notifications-wrapper').contains('Error');
|
||||||
cy.url().should('eq', `${baseUrl}/remote-schemas/manage/add`);
|
cy.url().should('eq', `${baseUrl}/remote-schemas/manage/add`);
|
||||||
@ -72,12 +58,8 @@ export const failRSDuplicateSchemaName = () => {
|
|||||||
|
|
||||||
export const failRSDuplicateSchemaNodes = () => {
|
export const failRSDuplicateSchemaNodes = () => {
|
||||||
cy.visit('remote-schemas/manage/add');
|
cy.visit('remote-schemas/manage/add');
|
||||||
cy.get('[data-testid=name]')
|
cy.get('[data-testid=name]').clear().type(getRemoteSchemaName(2, testName));
|
||||||
.clear()
|
cy.get('[data-testid=url]').clear().type(getRemoteGraphQLURL());
|
||||||
.type(getRemoteSchemaName(2, testName));
|
|
||||||
cy.get('[data-testid=url]')
|
|
||||||
.clear()
|
|
||||||
.type(getRemoteGraphQLURL());
|
|
||||||
cy.get('[data-testid=submit]').click();
|
cy.get('[data-testid=submit]').click();
|
||||||
cy.get('.notifications-wrapper').contains('Error');
|
cy.get('.notifications-wrapper').contains('Error');
|
||||||
cy.url().should('eq', `${baseUrl}/remote-schemas/manage/add`);
|
cy.url().should('eq', `${baseUrl}/remote-schemas/manage/add`);
|
||||||
@ -112,15 +94,9 @@ export const deleteSimpleRemoteSchema = () => {
|
|||||||
|
|
||||||
export const failWithRemoteSchemaEnvUrl = () => {
|
export const failWithRemoteSchemaEnvUrl = () => {
|
||||||
cy.visit('remote-schemas/manage/add');
|
cy.visit('remote-schemas/manage/add');
|
||||||
cy.get('[data-testid=name]')
|
cy.get('[data-testid=name]').clear().type(getRemoteSchemaName(3, testName));
|
||||||
.clear()
|
cy.get('[name="url.type"]').select('from_env');
|
||||||
.type(getRemoteSchemaName(3, testName));
|
cy.get('[data-testid=url]').clear().type(getRemoteGraphQLURLFromEnv());
|
||||||
cy.get(
|
|
||||||
'[name="url.type"]'
|
|
||||||
).select('from_env');
|
|
||||||
cy.get('[data-testid=url]')
|
|
||||||
.clear()
|
|
||||||
.type(getRemoteGraphQLURLFromEnv());
|
|
||||||
cy.get('[data-testid=submit]').click();
|
cy.get('[data-testid=submit]').click();
|
||||||
cy.get('.notifications-wrapper').contains('Error');
|
cy.get('.notifications-wrapper').contains('Error');
|
||||||
cy.url().should('eq', `${baseUrl}/remote-schemas/manage/add`);
|
cy.url().should('eq', `${baseUrl}/remote-schemas/manage/add`);
|
||||||
@ -128,38 +104,22 @@ export const failWithRemoteSchemaEnvUrl = () => {
|
|||||||
|
|
||||||
export const failWithRemoteSchemaEnvHeader = () => {
|
export const failWithRemoteSchemaEnvHeader = () => {
|
||||||
cy.visit('remote-schemas/manage/add');
|
cy.visit('remote-schemas/manage/add');
|
||||||
cy.get('[data-testid=name]')
|
cy.get('[data-testid=name]').clear().type(getRemoteSchemaName(3, testName));
|
||||||
.clear()
|
cy.get('[data-testid=url]').clear().type(getRemoteGraphQLURL());
|
||||||
.type(getRemoteSchemaName(3, testName));
|
|
||||||
cy.get('[data-testid=url]')
|
|
||||||
.clear()
|
|
||||||
.type(getRemoteGraphQLURL());
|
|
||||||
|
|
||||||
cy.get('[data-testid="add-header')
|
cy.get('[data-testid="add-header').click();
|
||||||
.click()
|
|
||||||
|
|
||||||
cy.get('[name="headers[0].name"]')
|
cy.get('[name="headers[0].name"]').clear().type('sampleHeader1');
|
||||||
.clear()
|
|
||||||
.type('sampleHeader1');
|
|
||||||
|
|
||||||
cy.get('[name="headers[0].value"]')
|
cy.get('[name="headers[0].value"]').clear().type('sampleHeaderValue1');
|
||||||
.clear()
|
|
||||||
.type('sampleHeaderValue1');
|
|
||||||
|
|
||||||
cy.get('[data-testid="add-header')
|
cy.get('[data-testid="add-header').click();
|
||||||
.click()
|
|
||||||
|
|
||||||
cy.get('[name="headers[1].name"]')
|
cy.get('[name="headers[1].name"]').clear().type('sampleHeader2');
|
||||||
.clear()
|
|
||||||
.type('sampleHeader2');
|
|
||||||
|
|
||||||
cy.get(
|
cy.get('[name="headers[1].type"]').select('from_env');
|
||||||
'[name="headers[1].type"]'
|
|
||||||
).select("from_env");
|
|
||||||
|
|
||||||
cy.get('[name="headers[1].value"]')
|
cy.get('[name="headers[1].value"]').clear().type('SAMPLE_ENV_HEADER');
|
||||||
.clear()
|
|
||||||
.type('SAMPLE_ENV_HEADER');
|
|
||||||
|
|
||||||
cy.get('[data-testid=submit]').click();
|
cy.get('[data-testid=submit]').click();
|
||||||
cy.get('.notifications-wrapper').contains('Error');
|
cy.get('.notifications-wrapper').contains('Error');
|
||||||
@ -168,34 +128,20 @@ export const failWithRemoteSchemaEnvHeader = () => {
|
|||||||
|
|
||||||
export const passWithRemoteSchemaHeader = () => {
|
export const passWithRemoteSchemaHeader = () => {
|
||||||
cy.visit('remote-schemas/manage/add');
|
cy.visit('remote-schemas/manage/add');
|
||||||
cy.get('[data-testid=name]')
|
cy.get('[data-testid=name]').clear().type(getRemoteSchemaName(3, testName));
|
||||||
.clear()
|
cy.get('[data-testid=url]').clear().type(getRemoteGraphQLURL());
|
||||||
.type(getRemoteSchemaName(3, testName));
|
|
||||||
cy.get('[data-testid=url]')
|
|
||||||
.clear()
|
|
||||||
.type(getRemoteGraphQLURL());
|
|
||||||
|
|
||||||
cy.get('[data-testid="add-header')
|
cy.get('[data-testid="add-header').click();
|
||||||
.click()
|
|
||||||
|
|
||||||
cy.get('[name="headers[0].name"]')
|
cy.get('[name="headers[0].name"]').clear().type('sampleHeader1');
|
||||||
.clear()
|
|
||||||
.type('sampleHeader1');
|
|
||||||
|
|
||||||
cy.get('[name="headers[0].value"]')
|
cy.get('[name="headers[0].value"]').clear().type('sampleHeaderValue1');
|
||||||
.clear()
|
|
||||||
.type('sampleHeaderValue1');
|
|
||||||
|
|
||||||
cy.get('[data-testid="add-header')
|
cy.get('[data-testid="add-header').click();
|
||||||
.click()
|
|
||||||
|
|
||||||
cy.get('[name="headers[1].name"]')
|
cy.get('[name="headers[1].name"]').clear().type('sampleHeader2');
|
||||||
.clear()
|
|
||||||
.type('sampleHeader2');
|
|
||||||
|
|
||||||
cy.get('[name="headers[1].value"]')
|
cy.get('[name="headers[1].value"]').clear().type('sampleHeaderValue2');
|
||||||
.clear()
|
|
||||||
.type('sampleHeaderValue2');
|
|
||||||
|
|
||||||
cy.get('[data-testid=submit]').click();
|
cy.get('[data-testid=submit]').click();
|
||||||
cy.get('.notifications-wrapper').contains('Success');
|
cy.get('.notifications-wrapper').contains('Success');
|
||||||
@ -240,7 +186,7 @@ export const createSimpleRemoteSchemaPermission = () => {
|
|||||||
cy.get(getElementFromAlias('save-remote-schema-permissions')).click({
|
cy.get(getElementFromAlias('save-remote-schema-permissions')).click({
|
||||||
force: true,
|
force: true,
|
||||||
});
|
});
|
||||||
cy.get('.notifications-wrapper').contains('saved')
|
cy.get('.notifications-wrapper').contains('saved');
|
||||||
cy.url().should(
|
cy.url().should(
|
||||||
'eq',
|
'eq',
|
||||||
`${baseUrl}/remote-schemas/manage/${getRemoteSchemaName(
|
`${baseUrl}/remote-schemas/manage/${getRemoteSchemaName(
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -14,5 +14,5 @@ export const config: ServerConfig = {
|
|||||||
claims_namespace: '',
|
claims_namespace: '',
|
||||||
claims_format: '',
|
claims_format: '',
|
||||||
},
|
},
|
||||||
is_prometheus_metrics_enabled: false
|
is_prometheus_metrics_enabled: false,
|
||||||
};
|
};
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -18,7 +18,7 @@ export const setPromptValue = (value: string | null) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// This is works as setPromptValue with no unnecessary waiting
|
// This is works as setPromptValue with no unnecessary waiting
|
||||||
export const setPromptWithCb = (value: string | null, cb: () => void) => {
|
export const setPromptWithCb = (value: string | null, cb: () => void) => {
|
||||||
cy.window().then(win => {
|
cy.window().then(win => {
|
||||||
cy.stub(win, 'prompt').returns(value);
|
cy.stub(win, 'prompt').returns(value);
|
||||||
cb();
|
cb();
|
||||||
|
@ -5,8 +5,7 @@ export const baseUrl = Cypress.config('baseUrl');
|
|||||||
export const getRemoteSchemaName = (i: number, schemaName: string) =>
|
export const getRemoteSchemaName = (i: number, schemaName: string) =>
|
||||||
`test-remote-schema-${schemaName}-${i}`;
|
`test-remote-schema-${schemaName}-${i}`;
|
||||||
|
|
||||||
export const getRemoteGraphQLURL = () =>
|
export const getRemoteGraphQLURL = () => 'https://graphql-pokemon2.vercel.app/';
|
||||||
'https://graphql-pokemon2.vercel.app/';
|
|
||||||
|
|
||||||
export const getRemoteGraphQLURLFromEnv = () => 'GRAPHQL_URL';
|
export const getRemoteGraphQLURLFromEnv = () => 'GRAPHQL_URL';
|
||||||
|
|
||||||
|
@ -13,9 +13,10 @@ export const toggleRequestTransformSection = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const clearRequestUrl = () => {
|
export const clearRequestUrl = () => {
|
||||||
cy.get(
|
cy.get(getElementFromAlias('transform-requestUrl')).type(
|
||||||
getElementFromAlias('transform-requestUrl')
|
'{selectall}{backspace}',
|
||||||
).type('{selectall}{backspace}', { force: true });
|
{ force: true }
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const typeIntoRequestUrl = (content: string) => {
|
export const typeIntoRequestUrl = (content: string) => {
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
"__version": "10.4.0"
|
__version: '10.4.0',
|
||||||
}
|
};
|
||||||
|
@ -29,9 +29,7 @@
|
|||||||
"output": "common"
|
"output": "common"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"styles": [
|
"styles": ["apps/console-ce/src/css/tailwind.css"],
|
||||||
"apps/console-ce/src/css/tailwind.css"
|
|
||||||
],
|
|
||||||
"scripts": [],
|
"scripts": [],
|
||||||
"webpackConfig": "custom-webpack.config.js",
|
"webpackConfig": "custom-webpack.config.js",
|
||||||
"postcssConfig": "apps/console-ce/postcss.config.js"
|
"postcssConfig": "apps/console-ce/postcss.config.js"
|
||||||
|
@ -8,10 +8,9 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<link rel="icon" type="image/x-icon" href="favicon.ico" />
|
<link rel="icon" type="image/x-icon" href="favicon.ico" />
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
// Needed since if the env var is not defined, it won't be replaced with undefined but keep as the string
|
// Needed since if the env var is not defined, it won't be replaced with undefined but keep as the string
|
||||||
const getEnv = (value) => value.startsWith('%NX') ? undefined : value;
|
const getEnv = value => (value.startsWith('%NX') ? undefined : value);
|
||||||
const getEnvAsBool = (value) => Boolean(getEnv(value))
|
const getEnvAsBool = value => Boolean(getEnv(value));
|
||||||
|
|
||||||
const serverEnvVars = {
|
const serverEnvVars = {
|
||||||
dataApiUrl: getEnv('%NX_DATA_API_URL%'),
|
dataApiUrl: getEnv('%NX_DATA_API_URL%'),
|
||||||
@ -30,7 +29,7 @@
|
|||||||
tenantID: getEnv('%NX_HASURA_CLOUD_TENANT_ID%') || '',
|
tenantID: getEnv('%NX_HASURA_CLOUD_TENANT_ID%') || '',
|
||||||
projectID: getEnv('%NX_HASURA_CLOUD_PROJECT_ID%') || '',
|
projectID: getEnv('%NX_HASURA_CLOUD_PROJECT_ID%') || '',
|
||||||
cloudRootDomain: getEnv('%NX_HASURA_CLOUD_ROOT_DOMAIN%'),
|
cloudRootDomain: getEnv('%NX_HASURA_CLOUD_ROOT_DOMAIN%'),
|
||||||
consoleType: getEnv('%NX_HASURA_CONSOLE_TYPE%')
|
consoleType: getEnv('%NX_HASURA_CONSOLE_TYPE%'),
|
||||||
};
|
};
|
||||||
|
|
||||||
const cliEnvVars = {
|
const cliEnvVars = {
|
||||||
@ -52,29 +51,28 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
const envVars =
|
const envVars =
|
||||||
getEnv('%NX_CONSOLE_MODE%') === 'cli' ? cliEnvVars : serverEnvVars;
|
getEnv('%NX_CONSOLE_MODE%') === 'cli' ? cliEnvVars : serverEnvVars;
|
||||||
|
|
||||||
window.__env = envVars;
|
window.__env = envVars;
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<style>
|
<style>
|
||||||
.content {
|
.content {
|
||||||
display: 'none';
|
display: 'none';
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transition: opacity 0.2s linear;
|
transition: opacity 0.2s linear;
|
||||||
}
|
}
|
||||||
.content.show {
|
.content.show {
|
||||||
display: 'block';
|
display: 'block';
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
transition: opacity 0.2s linear;
|
transition: opacity 0.2s linear;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<div id="loading">
|
<div id="loading">
|
||||||
<div
|
<div
|
||||||
class="page-loading"
|
class="page-loading"
|
||||||
style="
|
style="
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -82,12 +80,12 @@
|
|||||||
font-family: sans-serif;
|
font-family: sans-serif;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<span class="" style="font-size: 2em; margin-top: -3em; color: #848484">
|
<span class="" style="font-size: 2em; margin-top: -3em; color: #848484">
|
||||||
Loading...
|
Loading...
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div id="content" class="content"></div>
|
||||||
<div id="content" class="content"></div>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -28,9 +28,7 @@
|
|||||||
"output": "common"
|
"output": "common"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"styles": [
|
"styles": ["apps/console-ee/src/css/tailwind.css"],
|
||||||
"apps/console-ee/src/css/tailwind.css"
|
|
||||||
],
|
|
||||||
"scripts": [],
|
"scripts": [],
|
||||||
"webpackConfig": "custom-webpack.config.js",
|
"webpackConfig": "custom-webpack.config.js",
|
||||||
"postcssConfig": "apps/console-ee/postcss.config.js"
|
"postcssConfig": "apps/console-ee/postcss.config.js"
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
<script src="https://graphql-engine-cdn.hasura.io/pro-console/assets/common/js/lottie.min.js"></script>
|
<script src="https://graphql-engine-cdn.hasura.io/pro-console/assets/common/js/lottie.min.js"></script>
|
||||||
<script>
|
<script>
|
||||||
// Needed since if the env var is not defined, it won't be replaced with undefined but keep as the string
|
// Needed since if the env var is not defined, it won't be replaced with undefined but keep as the string
|
||||||
const getEnv = (value) => (value.startsWith('%NX') ? undefined : value);
|
const getEnv = value => (value.startsWith('%NX') ? undefined : value);
|
||||||
const getEnvAsBool = (value) => Boolean(getEnv(value));
|
const getEnvAsBool = value => Boolean(getEnv(value));
|
||||||
|
|
||||||
const serverEnvVars = {
|
const serverEnvVars = {
|
||||||
dataApiUrl: getEnv('%NX_DATA_API_URL%'),
|
dataApiUrl: getEnv('%NX_DATA_API_URL%'),
|
||||||
|
@ -102,7 +102,10 @@
|
|||||||
"**/__tests__/**/*.[jt]s?(x)",
|
"**/__tests__/**/*.[jt]s?(x)",
|
||||||
"**/?(*.)+(spec|test).[jt]s?(x)"
|
"**/?(*.)+(spec|test).[jt]s?(x)"
|
||||||
],
|
],
|
||||||
"extends": ["plugin:testing-library/react", "plugin:jest-dom/recommended"],
|
"extends": [
|
||||||
|
"plugin:testing-library/react",
|
||||||
|
"plugin:jest-dom/recommended"
|
||||||
|
],
|
||||||
"rules": {
|
"rules": {
|
||||||
"testing-library/no-unnecessary-act": "warn",
|
"testing-library/no-unnecessary-act": "warn",
|
||||||
"testing-library/prefer-query-by-disappearance": "warn",
|
"testing-library/prefer-query-by-disappearance": "warn",
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
dataApiUrl: 'http://localhost:8080',
|
dataApiUrl: 'http://localhost:8080',
|
||||||
apiHost: 'http://localhost',
|
apiHost: 'http://localhost',
|
||||||
apiPort: '8080',
|
apiPort: '8080',
|
||||||
nodeEnv: 'development'
|
nodeEnv: 'development',
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ import '../src/lib/components/Common/Common.module.scss';
|
|||||||
const channel = addons.getChannel();
|
const channel = addons.getChannel();
|
||||||
initialize();
|
initialize();
|
||||||
|
|
||||||
const DocsContainerElement = (props) => {
|
const DocsContainerElement = props => {
|
||||||
// Sync Docs dark mode with Storybook Manager
|
// Sync Docs dark mode with Storybook Manager
|
||||||
const [isDark, setDark] = React.useState();
|
const [isDark, setDark] = React.useState();
|
||||||
|
|
||||||
@ -28,8 +28,8 @@ const DocsContainerElement = (props) => {
|
|||||||
{...props}
|
{...props}
|
||||||
context={{
|
context={{
|
||||||
...props.context,
|
...props.context,
|
||||||
storyById: (id) => {
|
storyById: id => {
|
||||||
return produce(props.context.storyById(id), (draft) => {
|
return produce(props.context.storyById(id), draft => {
|
||||||
draft.parameters.docs.theme = isDark ? theme.dark : theme.light;
|
draft.parameters.docs.theme = isDark ? theme.dark : theme.light;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -67,7 +67,7 @@ export const parameters = {
|
|||||||
export const decorators = [
|
export const decorators = [
|
||||||
(fn, c) => <Provider store={store}>{fn(c)}</Provider>,
|
(fn, c) => <Provider store={store}>{fn(c)}</Provider>,
|
||||||
mswDecorator,
|
mswDecorator,
|
||||||
(Story) => {
|
Story => {
|
||||||
document.body.classList.add('hasura-tailwind-on');
|
document.body.classList.add('hasura-tailwind-on');
|
||||||
return <div className={'bg-legacybg'}>{Story()}</div>;
|
return <div className={'bg-legacybg'}>{Story()}</div>;
|
||||||
},
|
},
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@import "../Common/Common.module";
|
@import '../Common/Common.module';
|
||||||
|
|
||||||
:global {
|
:global {
|
||||||
@keyframes react-progress-spinner {
|
@keyframes react-progress-spinner {
|
||||||
|
@ -1565,7 +1565,7 @@ code {
|
|||||||
margin-bottom: 2px;
|
margin-bottom: 2px;
|
||||||
align-self: flex-end;
|
align-self: flex-end;
|
||||||
padding-top: 8px;
|
padding-top: 8px;
|
||||||
border-color:rgba(0, 0, 0, 0.1);
|
border-color: rgba(0, 0, 0, 0.1);
|
||||||
border-top-width: 1px;
|
border-top-width: 1px;
|
||||||
position: sticky;
|
position: sticky;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
|
@ -42,234 +42,234 @@ type ConfigureTransformationProps = {
|
|||||||
responseBodyOnChange?: (responseBody: ResponseTransformStateBody) => void;
|
responseBodyOnChange?: (responseBody: ResponseTransformStateBody) => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
const ConfigureTransformation: React.FC<ConfigureTransformationProps> =
|
const ConfigureTransformation: React.FC<
|
||||||
props => {
|
ConfigureTransformationProps
|
||||||
const {
|
> = props => {
|
||||||
transformationType,
|
const {
|
||||||
requestTransfromState,
|
transformationType,
|
||||||
responseTransformState,
|
requestTransfromState,
|
||||||
resetSampleInput,
|
responseTransformState,
|
||||||
envVarsOnChange,
|
resetSampleInput,
|
||||||
sessionVarsOnChange,
|
envVarsOnChange,
|
||||||
requestMethodOnChange,
|
sessionVarsOnChange,
|
||||||
requestUrlOnChange,
|
requestMethodOnChange,
|
||||||
requestQueryParamsOnChange,
|
requestUrlOnChange,
|
||||||
requestAddHeadersOnChange,
|
requestQueryParamsOnChange,
|
||||||
requestBodyOnChange,
|
requestAddHeadersOnChange,
|
||||||
requestSampleInputOnChange,
|
requestBodyOnChange,
|
||||||
requestUrlTransformOnChange,
|
requestSampleInputOnChange,
|
||||||
requestPayloadTransformOnChange,
|
requestUrlTransformOnChange,
|
||||||
responsePayloadTransformOnChange,
|
requestPayloadTransformOnChange,
|
||||||
responseBodyOnChange,
|
responsePayloadTransformOnChange,
|
||||||
} = props;
|
responseBodyOnChange,
|
||||||
const {
|
} = props;
|
||||||
envVars,
|
const {
|
||||||
sessionVars,
|
envVars,
|
||||||
requestMethod,
|
sessionVars,
|
||||||
requestUrl,
|
requestMethod,
|
||||||
requestUrlError,
|
requestUrl,
|
||||||
requestUrlPreview,
|
requestUrlError,
|
||||||
requestQueryParams,
|
requestUrlPreview,
|
||||||
requestAddHeaders,
|
requestQueryParams,
|
||||||
requestBody,
|
requestAddHeaders,
|
||||||
requestBodyError,
|
requestBody,
|
||||||
requestSampleInput,
|
requestBodyError,
|
||||||
requestTransformedBody,
|
requestSampleInput,
|
||||||
isRequestUrlTransform,
|
requestTransformedBody,
|
||||||
isRequestPayloadTransform,
|
isRequestUrlTransform,
|
||||||
} = requestTransfromState;
|
isRequestPayloadTransform,
|
||||||
const [isContextAreaActive, toggleContextArea] = useState<boolean>(false);
|
} = requestTransfromState;
|
||||||
|
const [isContextAreaActive, toggleContextArea] = useState<boolean>(false);
|
||||||
|
|
||||||
const contextAreaText = isContextAreaActive
|
const contextAreaText = isContextAreaActive
|
||||||
? `Hide Sample Context`
|
? `Hide Sample Context`
|
||||||
: `Show Sample Context`;
|
: `Show Sample Context`;
|
||||||
|
|
||||||
const requestUrlTransformText = isRequestUrlTransform
|
const requestUrlTransformText = isRequestUrlTransform
|
||||||
? `Remove Request Options Transform`
|
? `Remove Request Options Transform`
|
||||||
: `Add Request Options Transform`;
|
: `Add Request Options Transform`;
|
||||||
const requestPayloadTransformText = isRequestPayloadTransform
|
const requestPayloadTransformText = isRequestPayloadTransform
|
||||||
? `Remove Payload Transform`
|
? `Remove Payload Transform`
|
||||||
: `Add Payload Transform`;
|
: `Add Payload Transform`;
|
||||||
|
|
||||||
const responsePayloadTransformText =
|
const responsePayloadTransformText =
|
||||||
responseTransformState?.isResponsePayloadTransform
|
responseTransformState?.isResponsePayloadTransform
|
||||||
? `Remove Response Transform`
|
? `Remove Response Transform`
|
||||||
: `Add Response Transform`;
|
: `Add Response Transform`;
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h2 className="text-lg font-semibold mb-sm flex items-center">
|
<h2 className="text-lg font-semibold mb-sm flex items-center">
|
||||||
Configure REST Connectors
|
Configure REST Connectors
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<div className="mb-lg">
|
<div className="mb-lg">
|
||||||
<label className="block text-gray-600 font-medium mb-xs">
|
<label className="block text-gray-600 font-medium mb-xs">
|
||||||
Sample Context
|
Sample Context
|
||||||
</label>
|
</label>
|
||||||
<p className="text-sm text-gray-600 mb-sm">
|
<p className="text-sm text-gray-600 mb-sm">
|
||||||
Add sample env vars and session vars for testing the connector
|
Add sample env vars and session vars for testing the connector
|
||||||
</p>
|
</p>
|
||||||
<Analytics
|
<Analytics
|
||||||
name={
|
name={
|
||||||
isContextAreaActive
|
isContextAreaActive
|
||||||
? 'actions-tab-hide-sample-context-button'
|
? 'actions-tab-hide-sample-context-button'
|
||||||
: 'actions-tab-show-sample-context-button'
|
: 'actions-tab-show-sample-context-button'
|
||||||
}
|
}
|
||||||
passHtmlAttributesToChildren
|
passHtmlAttributesToChildren
|
||||||
|
>
|
||||||
|
<Button
|
||||||
|
color="white"
|
||||||
|
size="sm"
|
||||||
|
data-test="toggle-context-area"
|
||||||
|
onClick={() => {
|
||||||
|
toggleContextArea(!isContextAreaActive);
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<Button
|
{!isContextAreaActive ? <AddIcon /> : null}
|
||||||
color="white"
|
{contextAreaText}
|
||||||
size="sm"
|
</Button>
|
||||||
data-test="toggle-context-area"
|
</Analytics>
|
||||||
onClick={() => {
|
|
||||||
toggleContextArea(!isContextAreaActive);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{!isContextAreaActive ? <AddIcon /> : null}
|
|
||||||
{contextAreaText}
|
|
||||||
</Button>
|
|
||||||
</Analytics>
|
|
||||||
|
|
||||||
{isContextAreaActive ? (
|
{isContextAreaActive ? (
|
||||||
<SampleContextTransforms
|
<SampleContextTransforms
|
||||||
transformationType={transformationType}
|
transformationType={transformationType}
|
||||||
envVars={envVars}
|
envVars={envVars}
|
||||||
sessionVars={sessionVars}
|
sessionVars={sessionVars}
|
||||||
envVarsOnChange={envVarsOnChange}
|
envVarsOnChange={envVarsOnChange}
|
||||||
sessionVarsOnChange={sessionVarsOnChange}
|
sessionVarsOnChange={sessionVarsOnChange}
|
||||||
/>
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="mb-lg">
|
<div className="mb-lg">
|
||||||
<label className="block text-gray-600 font-medium mb-xs">
|
<label className="block text-gray-600 font-medium mb-xs">
|
||||||
Change Request Options
|
Change Request Options
|
||||||
</label>
|
</label>
|
||||||
<p className="text-sm text-gray-600 mb-sm">
|
<p className="text-sm text-gray-600 mb-sm">
|
||||||
Change the method and URL to adapt to your API's expected
|
Change the method and URL to adapt to your API's expected format.
|
||||||
format.
|
</p>
|
||||||
</p>
|
<Analytics
|
||||||
<Analytics
|
name={
|
||||||
name={
|
isRequestUrlTransform
|
||||||
isRequestUrlTransform
|
? 'actions-tab-hide-request-transform-button'
|
||||||
? 'actions-tab-hide-request-transform-button'
|
: 'actions-tab-show-request-transform-button'
|
||||||
: 'actions-tab-show-request-transform-button'
|
}
|
||||||
}
|
passHtmlAttributesToChildren
|
||||||
passHtmlAttributesToChildren
|
>
|
||||||
|
<Button
|
||||||
|
size="sm"
|
||||||
|
icon={!isRequestUrlTransform ? <AddIcon /> : undefined}
|
||||||
|
iconPosition="start"
|
||||||
|
data-test="toggle-request-transform"
|
||||||
|
onClick={() => {
|
||||||
|
requestUrlTransformOnChange(!isRequestUrlTransform);
|
||||||
|
resetSampleInput();
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<Button
|
{requestUrlTransformText}
|
||||||
size="sm"
|
</Button>
|
||||||
icon={!isRequestUrlTransform ? <AddIcon /> : undefined}
|
</Analytics>
|
||||||
iconPosition="start"
|
{isRequestUrlTransform ? (
|
||||||
data-test="toggle-request-transform"
|
<RequestOptionsTransforms
|
||||||
onClick={() => {
|
requestMethod={requestMethod}
|
||||||
requestUrlTransformOnChange(!isRequestUrlTransform);
|
requestUrl={requestUrl}
|
||||||
resetSampleInput();
|
requestUrlError={requestUrlError}
|
||||||
}}
|
requestUrlPreview={requestUrlPreview}
|
||||||
>
|
requestQueryParams={requestQueryParams}
|
||||||
{requestUrlTransformText}
|
requestAddHeaders={requestAddHeaders}
|
||||||
</Button>
|
requestMethodOnChange={requestMethodOnChange}
|
||||||
</Analytics>
|
requestUrlOnChange={requestUrlOnChange}
|
||||||
{isRequestUrlTransform ? (
|
requestQueryParamsOnChange={requestQueryParamsOnChange}
|
||||||
<RequestOptionsTransforms
|
requestAddHeadersOnChange={requestAddHeadersOnChange}
|
||||||
requestMethod={requestMethod}
|
/>
|
||||||
requestUrl={requestUrl}
|
) : null}
|
||||||
requestUrlError={requestUrlError}
|
</div>
|
||||||
requestUrlPreview={requestUrlPreview}
|
|
||||||
requestQueryParams={requestQueryParams}
|
|
||||||
requestAddHeaders={requestAddHeaders}
|
|
||||||
requestMethodOnChange={requestMethodOnChange}
|
|
||||||
requestUrlOnChange={requestUrlOnChange}
|
|
||||||
requestQueryParamsOnChange={requestQueryParamsOnChange}
|
|
||||||
requestAddHeadersOnChange={requestAddHeadersOnChange}
|
|
||||||
/>
|
|
||||||
) : null}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
<div className="mb-lg">
|
||||||
|
<label className="block text-gray-600 font-medium mb-xs">
|
||||||
|
Change Payload
|
||||||
|
</label>
|
||||||
|
<p className="text-sm text-gray-600 mb-sm">
|
||||||
|
Change the payload to adapt to your API's expected format.
|
||||||
|
</p>
|
||||||
|
<Analytics
|
||||||
|
name={
|
||||||
|
isRequestPayloadTransform
|
||||||
|
? 'actions-tab-hide-payload-transform-button'
|
||||||
|
: 'actions-tab-show-payload-transform-button'
|
||||||
|
}
|
||||||
|
passHtmlAttributesToChildren
|
||||||
|
>
|
||||||
|
<Button
|
||||||
|
color="white"
|
||||||
|
size="sm"
|
||||||
|
data-test="toggle-payload-transform"
|
||||||
|
onClick={() => {
|
||||||
|
requestPayloadTransformOnChange(!isRequestPayloadTransform);
|
||||||
|
resetSampleInput();
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{!isRequestPayloadTransform ? <AddIcon /> : null}
|
||||||
|
{requestPayloadTransformText}
|
||||||
|
</Button>
|
||||||
|
</Analytics>
|
||||||
|
{isRequestPayloadTransform ? (
|
||||||
|
<PayloadOptionsTransforms
|
||||||
|
transformationType={transformationType}
|
||||||
|
requestBody={requestBody}
|
||||||
|
requestBodyError={requestBodyError}
|
||||||
|
requestSampleInput={requestSampleInput}
|
||||||
|
requestTransformedBody={requestTransformedBody}
|
||||||
|
resetSampleInput={resetSampleInput}
|
||||||
|
requestBodyOnChange={requestBodyOnChange}
|
||||||
|
requestSampleInputOnChange={requestSampleInputOnChange}
|
||||||
|
/>
|
||||||
|
) : null}
|
||||||
|
</div>
|
||||||
|
{responseTransformState && responsePayloadTransformOnChange && (
|
||||||
<div className="mb-lg">
|
<div className="mb-lg">
|
||||||
<label className="block text-gray-600 font-medium mb-xs">
|
<label className="block text-gray-600 font-medium mb-xs">
|
||||||
Change Payload
|
Change Response
|
||||||
</label>
|
</label>
|
||||||
<p className="text-sm text-gray-600 mb-sm">
|
<p className="text-sm text-gray-600 mb-sm">
|
||||||
Change the payload to adapt to your API's expected format.
|
Change the incoming response to adapt to your declared types.
|
||||||
</p>
|
</p>
|
||||||
<Analytics
|
<Analytics
|
||||||
name={
|
name={
|
||||||
isRequestPayloadTransform
|
isRequestPayloadTransform
|
||||||
? 'actions-tab-hide-payload-transform-button'
|
? 'actions-tab-hide-response-transform-button'
|
||||||
: 'actions-tab-show-payload-transform-button'
|
: 'actions-tab-show-response-transform-button'
|
||||||
}
|
}
|
||||||
passHtmlAttributesToChildren
|
passHtmlAttributesToChildren
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
color="white"
|
color="white"
|
||||||
size="sm"
|
size="sm"
|
||||||
data-test="toggle-payload-transform"
|
data-test="toggle-response-transform"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
requestPayloadTransformOnChange(!isRequestPayloadTransform);
|
responsePayloadTransformOnChange(
|
||||||
|
!responseTransformState.isResponsePayloadTransform
|
||||||
|
);
|
||||||
resetSampleInput();
|
resetSampleInput();
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{!isRequestPayloadTransform ? <AddIcon /> : null}
|
{!responseTransformState.isResponsePayloadTransform ? (
|
||||||
{requestPayloadTransformText}
|
<AddIcon />
|
||||||
|
) : null}
|
||||||
|
{responsePayloadTransformText}
|
||||||
</Button>
|
</Button>
|
||||||
</Analytics>
|
</Analytics>
|
||||||
{isRequestPayloadTransform ? (
|
{responseTransformState.isResponsePayloadTransform &&
|
||||||
<PayloadOptionsTransforms
|
responseBodyOnChange ? (
|
||||||
transformationType={transformationType}
|
<ResponseTransforms
|
||||||
requestBody={requestBody}
|
responseBody={responseTransformState.responseBody}
|
||||||
requestBodyError={requestBodyError}
|
responseBodyOnChange={responseBodyOnChange}
|
||||||
requestSampleInput={requestSampleInput}
|
|
||||||
requestTransformedBody={requestTransformedBody}
|
|
||||||
resetSampleInput={resetSampleInput}
|
|
||||||
requestBodyOnChange={requestBodyOnChange}
|
|
||||||
requestSampleInputOnChange={requestSampleInputOnChange}
|
|
||||||
/>
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
{responseTransformState && responsePayloadTransformOnChange && (
|
)}
|
||||||
<div className="mb-lg">
|
</>
|
||||||
<label className="block text-gray-600 font-medium mb-xs">
|
);
|
||||||
Change Response
|
};
|
||||||
</label>
|
|
||||||
<p className="text-sm text-gray-600 mb-sm">
|
|
||||||
Change the incoming response to adapt to your declared types.
|
|
||||||
</p>
|
|
||||||
<Analytics
|
|
||||||
name={
|
|
||||||
isRequestPayloadTransform
|
|
||||||
? 'actions-tab-hide-response-transform-button'
|
|
||||||
: 'actions-tab-show-response-transform-button'
|
|
||||||
}
|
|
||||||
passHtmlAttributesToChildren
|
|
||||||
>
|
|
||||||
<Button
|
|
||||||
color="white"
|
|
||||||
size="sm"
|
|
||||||
data-test="toggle-response-transform"
|
|
||||||
onClick={() => {
|
|
||||||
responsePayloadTransformOnChange(
|
|
||||||
!responseTransformState.isResponsePayloadTransform
|
|
||||||
);
|
|
||||||
resetSampleInput();
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{!responseTransformState.isResponsePayloadTransform ? (
|
|
||||||
<AddIcon />
|
|
||||||
) : null}
|
|
||||||
{responsePayloadTransformText}
|
|
||||||
</Button>
|
|
||||||
</Analytics>
|
|
||||||
{responseTransformState.isResponsePayloadTransform &&
|
|
||||||
responseBodyOnChange ? (
|
|
||||||
<ResponseTransforms
|
|
||||||
responseBody={responseTransformState.responseBody}
|
|
||||||
responseBodyOnChange={responseBodyOnChange}
|
|
||||||
/>
|
|
||||||
) : null}
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default ConfigureTransformation;
|
export default ConfigureTransformation;
|
||||||
|
@ -55,8 +55,9 @@ const CustomInputAutoSuggest: React.FC<CustomInputAutoSuggestProps> = ({
|
|||||||
setSuggestions(getSuggestions(value));
|
setSuggestions(getSuggestions(value));
|
||||||
};
|
};
|
||||||
|
|
||||||
const getSuggestionValue: GetSuggestionValue<AutoSuggestOption> =
|
const getSuggestionValue: GetSuggestionValue<
|
||||||
suggestion => suggestion.value;
|
AutoSuggestOption
|
||||||
|
> = suggestion => suggestion.value;
|
||||||
|
|
||||||
const onSuggestionsClearRequested = () => {
|
const onSuggestionsClearRequested = () => {
|
||||||
setSuggestions([]);
|
setSuggestions([]);
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
z-index: 100;
|
z-index: 100;
|
||||||
opacity: 0.3;
|
opacity: 0.3;
|
||||||
&:hover {
|
&:hover {
|
||||||
opacity: 1.0;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -19,4 +19,4 @@
|
|||||||
right: 28px;
|
right: 28px;
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@import "../Common.module";
|
@import '../Common.module';
|
||||||
|
|
||||||
.data_dropdown_wrapper {
|
.data_dropdown_wrapper {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
@ -31,7 +31,7 @@
|
|||||||
text-align: left;
|
text-align: left;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
// &:hover {
|
// &:hover {
|
||||||
// background-color: #eee;
|
// background-color: #eee;
|
||||||
// }
|
// }
|
||||||
@ -54,9 +54,9 @@
|
|||||||
|
|
||||||
.dropdownRight:before,
|
.dropdownRight:before,
|
||||||
.dropdownBottom:before {
|
.dropdownBottom:before {
|
||||||
content: "";
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
border: solid 5px transparent;
|
border: solid 5px transparent;
|
||||||
z-index: 10000;
|
z-index: 10000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@import "../Common.module";
|
@import '../Common.module';
|
||||||
|
|
||||||
.queryBox {
|
.queryBox {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
@ -8,7 +8,7 @@
|
|||||||
.inputRow {
|
.inputRow {
|
||||||
margin: 20px 0;
|
margin: 20px 0;
|
||||||
|
|
||||||
div[class^=col-xs-] {
|
div[class^='col-xs-'] {
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
padding-right: 2.5px;
|
padding-right: 2.5px;
|
||||||
}
|
}
|
||||||
@ -19,7 +19,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
:global(.form-control):focus {
|
:global(.form-control):focus {
|
||||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0px rgba(102, 175, 233, 0.6);
|
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075),
|
||||||
|
0 0 0px rgba(102, 175, 233, 0.6);
|
||||||
}
|
}
|
||||||
|
|
||||||
:global(.fa) {
|
:global(.fa) {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
@import "../Common.module";
|
@import '../Common.module';
|
||||||
|
|
||||||
.headerInputWidth {
|
.headerInputWidth {
|
||||||
width: 300px
|
width: 300px;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@import "../../Common.module";
|
@import '../../Common.module';
|
||||||
|
|
||||||
.editorExpanded {
|
.editorExpanded {
|
||||||
margin: 10px 0;
|
margin: 10px 0;
|
||||||
@ -15,4 +15,4 @@
|
|||||||
|
|
||||||
.editorContent {
|
.editorContent {
|
||||||
padding: 10px 15px;
|
padding: 10px 15px;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
@import '../../Common.module';
|
@import '../../Common.module';
|
||||||
|
|
||||||
.displayFlexContainer {
|
.displayFlexContainer {
|
||||||
@ -273,4 +272,4 @@
|
|||||||
height: 17px;
|
height: 17px;
|
||||||
width: 17px;
|
width: 17px;
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@import "../../Common.module";
|
@import '../../Common.module';
|
||||||
|
|
||||||
.common_header_wrapper {
|
.common_header_wrapper {
|
||||||
.defaultWidth {
|
.defaultWidth {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@import "../../Common.module";
|
@import '../../Common.module';
|
||||||
|
|
||||||
.loader_ml {
|
.loader_ml {
|
||||||
margin-left: 3px;
|
margin-left: 3px;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@import "../../Common.module";
|
@import '../../Common.module';
|
||||||
|
|
||||||
.container {
|
.container {
|
||||||
}
|
}
|
||||||
@ -42,7 +42,8 @@
|
|||||||
padding: 7px 0;
|
padding: 7px 0;
|
||||||
transition: color 0.5s;
|
transition: color 0.5s;
|
||||||
|
|
||||||
a,a:visited {
|
a,
|
||||||
|
a:visited {
|
||||||
/* Taken from boostrap navbar-inverse-link-color variables */
|
/* Taken from boostrap navbar-inverse-link-color variables */
|
||||||
color: lighten(lighten(#000, 46.7%), 15%);
|
color: lighten(lighten(#000, 46.7%), 15%);
|
||||||
}
|
}
|
||||||
@ -61,7 +62,7 @@
|
|||||||
transition: color 0.5s;
|
transition: color 0.5s;
|
||||||
pointer: cursor;
|
pointer: cursor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.main {
|
.main {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@import "../Common.module";
|
@import '../Common.module';
|
||||||
|
|
||||||
.qb_nested {
|
.qb_nested {
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
@ -23,11 +23,10 @@
|
|||||||
color: #999;
|
color: #999;
|
||||||
|
|
||||||
select option {
|
select option {
|
||||||
color: #555
|
color: #555;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.qb_unselected_key {
|
.qb_unselected_key {
|
||||||
color: #999;
|
color: #999;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,22 +57,25 @@
|
|||||||
z-index: 100;
|
z-index: 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
.copyGenerated img, .copyExecution img {
|
.copyGenerated img,
|
||||||
|
.copyExecution img {
|
||||||
width: 20px;
|
width: 20px;
|
||||||
opacity: .6;
|
opacity: 0.6;
|
||||||
}
|
}
|
||||||
|
|
||||||
.copyGenerated img:hover, .copyExecution img:hover {
|
.copyGenerated img:hover,
|
||||||
|
.copyExecution img:hover {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.copyGenerated:focus, .copyExecution:focus {
|
.copyGenerated:focus,
|
||||||
|
.copyExecution:focus {
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.copyTooltip {
|
.copyTooltip {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.copyTooltip i {
|
.copyTooltip i {
|
||||||
@ -80,36 +83,36 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.copyTooltip .tooltiptext {
|
.copyTooltip .tooltiptext {
|
||||||
background-color: #555;
|
background-color: #555;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
padding: 4px 0px;
|
padding: 4px 0px;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 1000000000;
|
z-index: 1000000000;
|
||||||
right: -21px;
|
right: -21px;
|
||||||
bottom: 30px;
|
bottom: 30px;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
-webkit-transition: opacity 0.3s;
|
-webkit-transition: opacity 0.3s;
|
||||||
transition: opacity 0.3s;
|
transition: opacity 0.3s;
|
||||||
display: none;
|
display: none;
|
||||||
width: 57px;
|
width: 57px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.copyTooltip .tooltiptext::after {
|
.copyTooltip .tooltiptext::after {
|
||||||
content: "";
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 26px;
|
top: 26px;
|
||||||
right: 22px;
|
right: 22px;
|
||||||
margin-left: -5px;
|
margin-left: -5px;
|
||||||
border-width: 5px;
|
border-width: 5px;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
border-color: #555 transparent transparent transparent;
|
border-color: #555 transparent transparent transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
.copyTooltip:hover .tooltiptext {
|
.copyTooltip:hover .tooltiptext {
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
.tooltipIcon{
|
.tooltipIcon {
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
@import "../Common.module";
|
@import '../Common.module';
|
||||||
|
|
||||||
.warningSymbol {
|
.warningSymbol {
|
||||||
color: #d9534f;
|
color: #d9534f;
|
||||||
}
|
}
|
||||||
|
@ -192,7 +192,7 @@ export function getAllJsonPaths(
|
|||||||
const handleSubJson = (subJson: any, newPrefix: string) => {
|
const handleSubJson = (subJson: any, newPrefix: string) => {
|
||||||
const subPaths = getAllJsonPaths(subJson, leafKeys, newPrefix);
|
const subPaths = getAllJsonPaths(subJson, leafKeys, newPrefix);
|
||||||
|
|
||||||
subPaths.forEach((subPath: typeof subPaths[0]) => {
|
subPaths.forEach((subPath: (typeof subPaths)[0]) => {
|
||||||
paths.push(subPath);
|
paths.push(subPath);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@import "../../Common/Common.module";
|
@import '../../Common/Common.module';
|
||||||
|
|
||||||
.addPaddCommom {
|
.addPaddCommom {
|
||||||
padding: 10px 0;
|
padding: 10px 0;
|
||||||
@ -52,7 +52,7 @@
|
|||||||
.commonBtn {
|
.commonBtn {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding: 20px 0;
|
padding: 20px 0;
|
||||||
padding-bottom: 10px
|
padding-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.readMore {
|
.readMore {
|
||||||
@ -61,7 +61,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.iconWrapper{
|
.iconWrapper {
|
||||||
padding: 20px 0;
|
padding: 20px 0;
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
@ -119,7 +119,8 @@
|
|||||||
.inputLabel {
|
.inputLabel {
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
|
|
||||||
input, select {
|
input,
|
||||||
|
select {
|
||||||
width: 300px;
|
width: 300px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -140,7 +141,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.red_button {
|
.red_button {
|
||||||
color: #FFF;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
@ -166,7 +167,6 @@
|
|||||||
.set_line_height {
|
.set_line_height {
|
||||||
line-height: 26px;
|
line-height: 26px;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.actionsImg {
|
.actionsImg {
|
||||||
@ -193,7 +193,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
a{
|
a {
|
||||||
color: #909090;
|
color: #909090;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -260,24 +260,24 @@
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.instructionsWrapper, .instructionsWrapperPos {
|
.instructionsWrapper,
|
||||||
|
.instructionsWrapperPos {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
border-top: 1px solid #DEDEDE;
|
border-top: 1px solid #dedede;
|
||||||
.instructions {
|
.instructions {
|
||||||
padding: 12px 0;
|
padding: 12px 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.instructionsWrapper
|
.instructionsWrapper {
|
||||||
{
|
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
.instructionsWrapperPos
|
.instructionsWrapperPos {
|
||||||
{
|
|
||||||
position: static;
|
position: static;
|
||||||
}
|
}
|
||||||
.instructionsWrapper:hover, .instructionsWrapperPos:hover {
|
.instructionsWrapper:hover,
|
||||||
|
.instructionsWrapperPos:hover {
|
||||||
.instructions {
|
.instructions {
|
||||||
color: #505050
|
color: #505050;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rightArrow {
|
.rightArrow {
|
||||||
|
@ -1 +1 @@
|
|||||||
@import '../../../Common/Common.module';
|
@import '../../../Common/Common.module';
|
||||||
|
@ -86,8 +86,8 @@ const acceptedGQLTypes = [
|
|||||||
'Double',
|
'Double',
|
||||||
] as const;
|
] as const;
|
||||||
export type VariableData = {
|
export type VariableData = {
|
||||||
kind: typeof acceptedTypeKind[number] | 'Unsupported';
|
kind: (typeof acceptedTypeKind)[number] | 'Unsupported';
|
||||||
type: typeof acceptedGQLTypes[number];
|
type: (typeof acceptedGQLTypes)[number];
|
||||||
name: string;
|
name: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -10,27 +10,28 @@ import IntrospectionTable from './IntrospectionTable';
|
|||||||
|
|
||||||
interface IntrospectionOptionsComponentProps extends InjectedProps {}
|
interface IntrospectionOptionsComponentProps extends InjectedProps {}
|
||||||
|
|
||||||
const IntrospectionOptionsComponent: React.FC<IntrospectionOptionsComponentProps> =
|
const IntrospectionOptionsComponent: React.FC<
|
||||||
({ metadata, allRoles, dispatch }) => {
|
IntrospectionOptionsComponentProps
|
||||||
// Fire on component load, so that pro console doesn't crash on undefined metadata
|
> = ({ metadata, allRoles, dispatch }) => {
|
||||||
useEffect(() => {
|
// Fire on component load, so that pro console doesn't crash on undefined metadata
|
||||||
dispatch(exportMetadata());
|
useEffect(() => {
|
||||||
}, []);
|
dispatch(exportMetadata());
|
||||||
|
}, []);
|
||||||
|
|
||||||
const disabledRoles =
|
const disabledRoles =
|
||||||
metadata?.graphql_schema_introspection?.disabled_for_roles ?? [];
|
metadata?.graphql_schema_introspection?.disabled_for_roles ?? [];
|
||||||
|
|
||||||
const tableData = allRoles.map(role => ({
|
const tableData = allRoles.map(role => ({
|
||||||
roleName: role,
|
roleName: role,
|
||||||
instrospectionIsDisabled: disabledRoles.includes(role),
|
instrospectionIsDisabled: disabledRoles.includes(role),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SecurityTabs tabName="introspection">
|
<SecurityTabs tabName="introspection">
|
||||||
<IntrospectionTable rows={tableData} />
|
<IntrospectionTable rows={tableData} />
|
||||||
</SecurityTabs>
|
</SecurityTabs>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const mapDispatchToProps = (dispatch: Dispatch) => ({
|
const mapDispatchToProps = (dispatch: Dispatch) => ({
|
||||||
dispatch,
|
dispatch,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
@import "../../../Common/Common.module";
|
@import '../../../Common/Common.module';
|
||||||
@import "../../../Common/TextAreaWithCopy/TextAreaWithCopy.module";
|
@import '../../../Common/TextAreaWithCopy/TextAreaWithCopy.module';
|
||||||
|
|
||||||
.wd100 {
|
.wd100 {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@ -11,7 +11,7 @@
|
|||||||
height: 0;
|
height: 0;
|
||||||
border-top: 8px solid transparent;
|
border-top: 8px solid transparent;
|
||||||
border-bottom: 8px solid transparent;
|
border-bottom: 8px solid transparent;
|
||||||
border-right:8px solid #fff;
|
border-right: 8px solid #fff;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
bottom: 20px;
|
bottom: 20px;
|
||||||
@ -32,7 +32,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.commonBorBottom {
|
.commonBorBottom {
|
||||||
border-bottom: 1px solid #DEDEDE;
|
border-bottom: 1px solid #dedede;
|
||||||
}
|
}
|
||||||
|
|
||||||
.addPaddLeft {
|
.addPaddLeft {
|
||||||
@ -59,12 +59,12 @@
|
|||||||
top: 60px;
|
top: 60px;
|
||||||
left: 524px;
|
left: 524px;
|
||||||
}
|
}
|
||||||
.popupWrapper
|
.popupWrapper {
|
||||||
{
|
|
||||||
bottom: 0px;
|
bottom: 0px;
|
||||||
left: 244px;
|
left: 244px;
|
||||||
}
|
}
|
||||||
.popupWrapper, .popupWrapperPos {
|
.popupWrapper,
|
||||||
|
.popupWrapperPos {
|
||||||
box-shadow: 0 0 14px 0 rgba(0, 0, 0, 0.16);
|
box-shadow: 0 0 14px 0 rgba(0, 0, 0, 0.16);
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@ -90,7 +90,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.copyGenerated {
|
.copyGenerated {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.copyTooltip .tooltiptext::after {
|
.copyTooltip .tooltiptext::after {
|
||||||
|
@ -1 +1 @@
|
|||||||
@import "../../../Common/Common.module";
|
@import '../../../Common/Common.module';
|
||||||
|
@ -33,46 +33,47 @@ interface FrequentlyUsedColumnSelectorProps {
|
|||||||
dispatch?: Dispatch | null;
|
dispatch?: Dispatch | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
const FrequentlyUsedColumnSelector: React.VFC<FrequentlyUsedColumnSelectorProps> =
|
const FrequentlyUsedColumnSelector: React.VFC<
|
||||||
({ onSelect, postgresVersion, action = null, dispatch = null }) => {
|
FrequentlyUsedColumnSelectorProps
|
||||||
const frequentlyUsedColumnsOptions = frequentlyUsedColumns
|
> = ({ onSelect, postgresVersion, action = null, dispatch = null }) => {
|
||||||
.filter(fuc => !action || fuc.validFor.includes(action))
|
const frequentlyUsedColumnsOptions = frequentlyUsedColumns
|
||||||
.filter(col =>
|
.filter(fuc => !action || fuc.validFor.includes(action))
|
||||||
postgresVersion && col.minPGVersion
|
.filter(col =>
|
||||||
? parseFloat(postgresVersion) >= col.minPGVersion
|
postgresVersion && col.minPGVersion
|
||||||
: true
|
? parseFloat(postgresVersion) >= col.minPGVersion
|
||||||
)
|
: true
|
||||||
.map(fuc => {
|
)
|
||||||
const { title, subTitle } = getFreqUsedColDisplayInfo(fuc);
|
.map(fuc => {
|
||||||
return {
|
const { title, subTitle } = getFreqUsedColDisplayInfo(fuc);
|
||||||
content: (
|
return {
|
||||||
|
content: (
|
||||||
|
<div>
|
||||||
<div>
|
<div>
|
||||||
<div>
|
<b>{title}</b>
|
||||||
<b>{title}</b>
|
|
||||||
</div>
|
|
||||||
<div>{subTitle}</div>
|
|
||||||
</div>
|
</div>
|
||||||
),
|
<div>{subTitle}</div>
|
||||||
onClick: () => (dispatch ? dispatch(onSelect(fuc)) : onSelect(fuc)),
|
</div>
|
||||||
};
|
),
|
||||||
});
|
onClick: () => (dispatch ? dispatch(onSelect(fuc)) : onSelect(fuc)),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Dropdown
|
<Dropdown
|
||||||
testId="frequently-used-columns"
|
testId="frequently-used-columns"
|
||||||
options={frequentlyUsedColumnsOptions}
|
options={frequentlyUsedColumnsOptions}
|
||||||
data-test="frequently-used-columns"
|
data-test="frequently-used-columns"
|
||||||
position="bottom"
|
position="bottom"
|
||||||
key="frequently-used-columns"
|
key="frequently-used-columns"
|
||||||
keyPrefix="frequently-used-columns"
|
keyPrefix="frequently-used-columns"
|
||||||
>
|
>
|
||||||
{({ onClick }) => (
|
{({ onClick }) => (
|
||||||
<Button size="sm" onClick={onClick}>
|
<Button size="sm" onClick={onClick}>
|
||||||
+ Frequently used columns
|
+ Frequently used columns
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default FrequentlyUsedColumnSelector;
|
export default FrequentlyUsedColumnSelector;
|
||||||
|
@ -5,46 +5,47 @@ import { IndicatorCard } from '@/new-components/IndicatorCard';
|
|||||||
import { FaExclamationTriangle } from 'react-icons/fa';
|
import { FaExclamationTriangle } from 'react-icons/fa';
|
||||||
import styles from '../../DataSources.module.scss';
|
import styles from '../../DataSources.module.scss';
|
||||||
|
|
||||||
export const CumulativeMaxConnections: React.VFC<ConnectionSettingsFormProps> =
|
export const CumulativeMaxConnections: React.VFC<
|
||||||
({ connectionDBState, connectionDBStateDispatch }) => (
|
ConnectionSettingsFormProps
|
||||||
<>
|
> = ({ connectionDBState, connectionDBStateDispatch }) => (
|
||||||
<div className={styles.connection_settings_input_layout}>
|
<>
|
||||||
<LabeledInput
|
<div className={styles.connection_settings_input_layout}>
|
||||||
label="Total Max Connections"
|
<LabeledInput
|
||||||
tooltipText="Maximum number of database connections"
|
label="Total Max Connections"
|
||||||
type="number"
|
tooltipText="Maximum number of database connections"
|
||||||
className={`form-control ${styles.connnection_settings_form_input}`}
|
type="number"
|
||||||
placeholder="1000"
|
className={`form-control ${styles.connnection_settings_form_input}`}
|
||||||
value={
|
placeholder="1000"
|
||||||
connectionDBState.connectionSettings?.total_max_connections ||
|
value={
|
||||||
undefined
|
connectionDBState.connectionSettings?.total_max_connections ||
|
||||||
}
|
undefined
|
||||||
onChange={e =>
|
}
|
||||||
connectionDBStateDispatch({
|
onChange={e =>
|
||||||
type: 'UPDATE_TOTAL_MAX_CONNECTIONS',
|
connectionDBStateDispatch({
|
||||||
data: e.target.value,
|
type: 'UPDATE_TOTAL_MAX_CONNECTIONS',
|
||||||
})
|
data: e.target.value,
|
||||||
}
|
})
|
||||||
min="0"
|
}
|
||||||
boldlabel
|
min="0"
|
||||||
data-test="max-connections"
|
boldlabel
|
||||||
icon={
|
data-test="max-connections"
|
||||||
connectionDBState?.connectionSettings?.max_connections !== undefined
|
icon={
|
||||||
}
|
connectionDBState?.connectionSettings?.max_connections !== undefined
|
||||||
/>
|
}
|
||||||
</div>
|
/>
|
||||||
{connectionDBState?.connectionSettings?.max_connections && (
|
</div>
|
||||||
<IndicatorCard status="info">
|
{connectionDBState?.connectionSettings?.max_connections && (
|
||||||
<p className="font-bold">
|
<IndicatorCard status="info">
|
||||||
<FaExclamationTriangle className="text-blue-300 pb-1 mr-4 text-lg" />
|
<p className="font-bold">
|
||||||
Set Total Max Connections
|
<FaExclamationTriangle className="text-blue-300 pb-1 mr-4 text-lg" />
|
||||||
</p>
|
Set Total Max Connections
|
||||||
<p className="ml-lg">
|
</p>
|
||||||
You have set <b>Max Connections Per Instance</b> which is not
|
<p className="ml-lg">
|
||||||
recommended for Hasura Cloud. Use <b>Total Max Connections</b>{' '}
|
You have set <b>Max Connections Per Instance</b> which is not
|
||||||
instead.
|
recommended for Hasura Cloud. Use <b>Total Max Connections</b>{' '}
|
||||||
</p>
|
instead.
|
||||||
</IndicatorCard>
|
</p>
|
||||||
)}
|
</IndicatorCard>
|
||||||
</>
|
)}
|
||||||
);
|
</>
|
||||||
|
);
|
||||||
|
@ -9,8 +9,9 @@ export default {
|
|||||||
argTypes: { onChange: { action: 'change' } },
|
argTypes: { onChange: { action: 'change' } },
|
||||||
} as ComponentMeta<typeof GraphQLFieldCustomization>;
|
} as ComponentMeta<typeof GraphQLFieldCustomization>;
|
||||||
|
|
||||||
export const Playground: ComponentStory<typeof GraphQLFieldCustomization> =
|
export const Playground: ComponentStory<
|
||||||
args => <GraphQLFieldCustomization {...args} />;
|
typeof GraphQLFieldCustomization
|
||||||
|
> = args => <GraphQLFieldCustomization {...args} />;
|
||||||
|
|
||||||
Playground.args = {
|
Playground.args = {
|
||||||
rootFields: {
|
rootFields: {
|
||||||
|
@ -30,33 +30,34 @@ export const getActionType = (
|
|||||||
): ConnectDBActions['type'] | null =>
|
): ConnectDBActions['type'] | null =>
|
||||||
CustomizationFieldNameToActionTypeMap[fieldName] || null;
|
CustomizationFieldNameToActionTypeMap[fieldName] || null;
|
||||||
|
|
||||||
export const GraphQLFieldCustomizationContainer: React.FC<GraphQLFieldCustomizationContainerProps> =
|
export const GraphQLFieldCustomizationContainer: React.FC<
|
||||||
({
|
GraphQLFieldCustomizationContainerProps
|
||||||
rootFields,
|
> = ({
|
||||||
typeNames,
|
rootFields,
|
||||||
namingConvention,
|
typeNames,
|
||||||
connectionDBStateDispatch,
|
namingConvention,
|
||||||
connectionDBState,
|
connectionDBStateDispatch,
|
||||||
}) => {
|
connectionDBState,
|
||||||
const onChange = (
|
}) => {
|
||||||
fieldName: CustomizationFieldName,
|
const onChange = (
|
||||||
fieldValue: string | null | undefined
|
fieldName: CustomizationFieldName,
|
||||||
) => {
|
fieldValue: string | null | undefined
|
||||||
const actionType = getActionType(fieldName);
|
) => {
|
||||||
if (actionType) {
|
const actionType = getActionType(fieldName);
|
||||||
connectionDBStateDispatch({
|
if (actionType) {
|
||||||
type: actionType,
|
connectionDBStateDispatch({
|
||||||
data: fieldValue,
|
type: actionType,
|
||||||
} as ConnectDBActions);
|
data: fieldValue,
|
||||||
}
|
} as ConnectDBActions);
|
||||||
};
|
}
|
||||||
return (
|
|
||||||
<GraphQLFieldCustomization
|
|
||||||
rootFields={rootFields}
|
|
||||||
typeNames={typeNames}
|
|
||||||
namingConvention={namingConvention}
|
|
||||||
onChange={onChange}
|
|
||||||
connectionDBState={connectionDBState}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
return (
|
||||||
|
<GraphQLFieldCustomization
|
||||||
|
rootFields={rootFields}
|
||||||
|
typeNames={typeNames}
|
||||||
|
namingConvention={namingConvention}
|
||||||
|
onChange={onChange}
|
||||||
|
connectionDBState={connectionDBState}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@import "../../../Common/Common.module";
|
@import '../../../Common/Common.module';
|
||||||
|
|
||||||
.migration_mode {
|
.migration_mode {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
.table {
|
.table {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
@ -75,7 +74,7 @@
|
|||||||
|
|
||||||
.ace_custom_style {
|
.ace_custom_style {
|
||||||
border: 1px solid #dddddd;
|
border: 1px solid #dddddd;
|
||||||
margin: .5em 0;
|
margin: 0.5em 0;
|
||||||
background-color: #f8fafb;
|
background-color: #f8fafb;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
@ -85,7 +84,7 @@
|
|||||||
padding: 4px 8px;
|
padding: 4px 8px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
border-radius: 16px;
|
border-radius: 16px;
|
||||||
color: #6B7280;
|
color: #6b7280;
|
||||||
border: 1px solid #d1d5db;
|
border: 1px solid #d1d5db;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,7 +115,7 @@
|
|||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
tr:hover .schema_gallery_button{
|
tr:hover .schema_gallery_button {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,77 +28,77 @@ type TableTrackingCustomizationModalContainerProps = Omit<
|
|||||||
'onSubmit'
|
'onSubmit'
|
||||||
> & { dataSource: string; driver: Driver; schema: string };
|
> & { dataSource: string; driver: Driver; schema: string };
|
||||||
|
|
||||||
export const TableTrackingCustomizationModalContainer: React.FC<TableTrackingCustomizationModalContainerProps> =
|
export const TableTrackingCustomizationModalContainer: React.FC<
|
||||||
({ onClose, tableName, schema, dataSource, driver }) => {
|
TableTrackingCustomizationModalContainerProps
|
||||||
const { fireNotification } = useFireNotification();
|
> = ({ onClose, tableName, schema, dataSource, driver }) => {
|
||||||
const dispatch: ThunkDispatch<ReduxState, unknown, AnyAction> =
|
const { fireNotification } = useFireNotification();
|
||||||
useDispatch();
|
const dispatch: ThunkDispatch<ReduxState, unknown, AnyAction> = useDispatch();
|
||||||
const mutation = useMetadataMigration({
|
const mutation = useMetadataMigration({
|
||||||
onSuccess: () => {
|
onSuccess: () => {
|
||||||
dispatch({ type: REQUEST_SUCCESS });
|
dispatch({ type: REQUEST_SUCCESS });
|
||||||
dispatch(updateSchemaInfo()).then(() => {
|
dispatch(updateSchemaInfo()).then(() => {
|
||||||
const nextRoute =
|
const nextRoute =
|
||||||
driver !== 'bigquery'
|
driver !== 'bigquery'
|
||||||
? getTableModifyRoute(schema, dataSource, tableName, true)
|
? getTableModifyRoute(schema, dataSource, tableName, true)
|
||||||
: getTableBrowseRoute(schema, dataSource, tableName, true);
|
: getTableBrowseRoute(schema, dataSource, tableName, true);
|
||||||
dispatch(_push(nextRoute));
|
dispatch(_push(nextRoute));
|
||||||
dispatch(setSidebarLoading(false));
|
dispatch(setSidebarLoading(false));
|
||||||
fireNotification({
|
|
||||||
title: 'Success!',
|
|
||||||
message: 'Existing table/view added',
|
|
||||||
type: 'success',
|
|
||||||
});
|
|
||||||
if (onClose) onClose();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
onError: (error: Error) => {
|
|
||||||
fireNotification({
|
fireNotification({
|
||||||
title: 'Error',
|
title: 'Success!',
|
||||||
message: error?.message ?? 'Error while adding table/view',
|
message: 'Existing table/view added',
|
||||||
type: 'error',
|
type: 'success',
|
||||||
});
|
});
|
||||||
},
|
if (onClose) onClose();
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
onError: (error: Error) => {
|
||||||
|
fireNotification({
|
||||||
|
title: 'Error',
|
||||||
|
message: error?.message ?? 'Error while adding table/view',
|
||||||
|
type: 'error',
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
const onCustomizationFormSubmit = (values: FormValues) => {
|
const onCustomizationFormSubmit = (values: FormValues) => {
|
||||||
const requestBody = {
|
const requestBody = {
|
||||||
type: getTrackTableType(driver) as allowedMetadataTypes,
|
type: getTrackTableType(driver) as allowedMetadataTypes,
|
||||||
args: {
|
args: {
|
||||||
source: dataSource,
|
source: dataSource,
|
||||||
table: getQualifiedTable({
|
table: getQualifiedTable({
|
||||||
driver,
|
driver,
|
||||||
tableName,
|
tableName,
|
||||||
schema,
|
schema,
|
||||||
}),
|
}),
|
||||||
configuration: {
|
configuration: {
|
||||||
custom_name: values.custom_name,
|
custom_name: values.custom_name,
|
||||||
custom_root_fields: {
|
custom_root_fields: {
|
||||||
select: values.select,
|
select: values.select,
|
||||||
select_by_pk: values.select_by_pk,
|
select_by_pk: values.select_by_pk,
|
||||||
select_aggregate: values.select_aggregate,
|
select_aggregate: values.select_aggregate,
|
||||||
select_stream: values.select_stream,
|
select_stream: values.select_stream,
|
||||||
insert: values.insert,
|
insert: values.insert,
|
||||||
insert_one: values.insert_one,
|
insert_one: values.insert_one,
|
||||||
update: values.update,
|
update: values.update,
|
||||||
update_by_pk: values.update_by_pk,
|
update_by_pk: values.update_by_pk,
|
||||||
delete: values.delete,
|
delete: values.delete,
|
||||||
delete_by_pk: values.delete_by_pk,
|
delete_by_pk: values.delete_by_pk,
|
||||||
update_many: values.update_many,
|
update_many: values.update_many,
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
},
|
||||||
mutation.mutate({
|
|
||||||
query: requestBody,
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
mutation.mutate({
|
||||||
return (
|
query: requestBody,
|
||||||
<TableTrackingCustomizationModal
|
});
|
||||||
tableName={tableName}
|
|
||||||
onSubmit={onCustomizationFormSubmit}
|
|
||||||
onClose={onClose}
|
|
||||||
isLoading={mutation.isLoading}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<TableTrackingCustomizationModal
|
||||||
|
tableName={tableName}
|
||||||
|
onSubmit={onCustomizationFormSubmit}
|
||||||
|
onClose={onClose}
|
||||||
|
isLoading={mutation.isLoading}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
@ -21,125 +21,126 @@ export type TableTrackingCustomizationFormProps = {
|
|||||||
onClose: () => void;
|
onClose: () => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const TableTrackingCustomizationForm: React.VFC<TableTrackingCustomizationFormProps> =
|
export const TableTrackingCustomizationForm: React.VFC<
|
||||||
props => {
|
TableTrackingCustomizationFormProps
|
||||||
const { onClose } = props;
|
> = props => {
|
||||||
|
const { onClose } = props;
|
||||||
|
|
||||||
const {
|
const {
|
||||||
errors,
|
errors,
|
||||||
formMethods,
|
formMethods,
|
||||||
handleSubmit,
|
handleSubmit,
|
||||||
hasValues,
|
hasValues,
|
||||||
isMutateOpen,
|
isMutateOpen,
|
||||||
isQueryOpen,
|
isQueryOpen,
|
||||||
placeholders,
|
placeholders,
|
||||||
reset,
|
reset,
|
||||||
setCustomTableName,
|
setCustomTableName,
|
||||||
} = useGqlCustomizationForm(props);
|
} = useGqlCustomizationForm(props);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<FormProvider {...formMethods}>
|
<FormProvider {...formMethods}>
|
||||||
<form onSubmit={formMethods.handleSubmit(handleSubmit)}>
|
<form onSubmit={formMethods.handleSubmit(handleSubmit)}>
|
||||||
<div>
|
<div>
|
||||||
<div className="px-sm pb-sm">
|
<div className="px-sm pb-sm">
|
||||||
<SanitizeTips />
|
<SanitizeTips />
|
||||||
<div className="mb-4 flex justify-end">
|
<div className="mb-4 flex justify-end">
|
||||||
<Button disabled={!hasValues} size="sm" onClick={reset}>
|
<Button disabled={!hasValues} size="sm" onClick={reset}>
|
||||||
Clear All Fields
|
Clear All Fields
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="pl-6">
|
<div className="pl-6">
|
||||||
<InputField
|
<InputField
|
||||||
label="Custom Table Name"
|
label="Custom Table Name"
|
||||||
fieldName="custom_name"
|
fieldName="custom_name"
|
||||||
placeholder={placeholders.custom_name}
|
placeholder={placeholders.custom_name}
|
||||||
onClear={() => {
|
onClear={() => {
|
||||||
setCustomTableName('');
|
setCustomTableName('');
|
||||||
}}
|
}}
|
||||||
onChange={value => {
|
onChange={value => {
|
||||||
setCustomTableName(value);
|
setCustomTableName(value);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
{errors.custom_name?.type === 'required' && (
|
{errors.custom_name?.type === 'required' && (
|
||||||
<div className="grid grid-cols-12 gap-3">
|
<div className="grid grid-cols-12 gap-3">
|
||||||
<div className="col-span-4 flex items-center" />
|
<div className="col-span-4 flex items-center" />
|
||||||
<div className="col-span-8">
|
<div className="col-span-8">
|
||||||
<div
|
<div
|
||||||
role="alert"
|
role="alert"
|
||||||
aria-label="custom table name is a required field!"
|
aria-label="custom table name is a required field!"
|
||||||
className="text-red-600 flex items-center text-sm pt-1"
|
className="text-red-600 flex items-center text-sm pt-1"
|
||||||
>
|
>
|
||||||
<span className="flex items-center">
|
<span className="flex items-center">
|
||||||
<FaExclamationCircle className="mr-1" />
|
<FaExclamationCircle className="mr-1" />
|
||||||
This field is required!
|
This field is required!
|
||||||
</span>
|
</span>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
|
||||||
|
|
||||||
<div className="mb-sm">
|
|
||||||
<div className="flex items-center">
|
|
||||||
<Collapse
|
|
||||||
defaultOpen={isQueryOpen}
|
|
||||||
title="Query and Subscription"
|
|
||||||
rootClassName="w-full"
|
|
||||||
>
|
|
||||||
<Collapse.Content>
|
|
||||||
<div className="pl-sm py-xs ml-[0.47rem]">
|
|
||||||
<div className="space-y-sm">
|
|
||||||
{query_field_props.map(name => (
|
|
||||||
<InputField
|
|
||||||
key={`query-and-subscription-${name}`}
|
|
||||||
fieldName={name}
|
|
||||||
label={name}
|
|
||||||
placeholder={placeholders[name]}
|
|
||||||
/>
|
|
||||||
))}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</Collapse.Content>
|
|
||||||
</Collapse>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
<div>
|
<div className="mb-sm">
|
||||||
<div className="flex items-center">
|
<div className="flex items-center">
|
||||||
<Collapse
|
<Collapse
|
||||||
defaultOpen={isMutateOpen}
|
defaultOpen={isQueryOpen}
|
||||||
title="Mutation"
|
title="Query and Subscription"
|
||||||
rootClassName="w-full"
|
rootClassName="w-full"
|
||||||
>
|
>
|
||||||
<Collapse.Content>
|
<Collapse.Content>
|
||||||
<div className="pl-sm py-xs ml-[0.47rem]">
|
<div className="pl-sm py-xs ml-[0.47rem]">
|
||||||
<div className="space-y-sm">
|
<div className="space-y-sm">
|
||||||
{mutation_field_props.map(name => (
|
{query_field_props.map(name => (
|
||||||
<InputField
|
<InputField
|
||||||
key={`mutation-${name}`}
|
key={`query-and-subscription-${name}`}
|
||||||
label={name}
|
fieldName={name}
|
||||||
fieldName={name}
|
label={name}
|
||||||
placeholder={placeholders[name]}
|
placeholder={placeholders[name]}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</Collapse.Content>
|
</div>
|
||||||
</Collapse>
|
</Collapse.Content>
|
||||||
</div>
|
</Collapse>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Dialog.Footer
|
<div>
|
||||||
callToAction="Save"
|
<div className="flex items-center">
|
||||||
callToActionLoadingText="Saving..."
|
<Collapse
|
||||||
callToDeny="Cancel"
|
defaultOpen={isMutateOpen}
|
||||||
onClose={onClose}
|
title="Mutation"
|
||||||
className="absolute w-full bottom-0"
|
rootClassName="w-full"
|
||||||
/>
|
>
|
||||||
|
<Collapse.Content>
|
||||||
|
<div className="pl-sm py-xs ml-[0.47rem]">
|
||||||
|
<div className="space-y-sm">
|
||||||
|
{mutation_field_props.map(name => (
|
||||||
|
<InputField
|
||||||
|
key={`mutation-${name}`}
|
||||||
|
label={name}
|
||||||
|
fieldName={name}
|
||||||
|
placeholder={placeholders[name]}
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Collapse.Content>
|
||||||
|
</Collapse>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
|
||||||
</FormProvider>
|
<Dialog.Footer
|
||||||
);
|
callToAction="Save"
|
||||||
};
|
callToActionLoadingText="Saving..."
|
||||||
|
callToDeny="Cancel"
|
||||||
|
onClose={onClose}
|
||||||
|
className="absolute w-full bottom-0"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</FormProvider>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
@ -22,41 +22,42 @@ export type TableTrackingCustomizationModalProps = {
|
|||||||
currentConfiguration?: MetadataTableConfig;
|
currentConfiguration?: MetadataTableConfig;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const TableTrackingCustomizationModal: React.FC<TableTrackingCustomizationModalProps> =
|
export const TableTrackingCustomizationModal: React.FC<
|
||||||
({
|
TableTrackingCustomizationModalProps
|
||||||
tableName,
|
> = ({
|
||||||
onSubmit,
|
tableName,
|
||||||
onClose,
|
onSubmit,
|
||||||
show = true,
|
onClose,
|
||||||
currentConfiguration,
|
show = true,
|
||||||
dialogDescription,
|
currentConfiguration,
|
||||||
}) => {
|
dialogDescription,
|
||||||
return (
|
}) => {
|
||||||
<>
|
return (
|
||||||
{show && (
|
<>
|
||||||
<Analytics
|
{show && (
|
||||||
name="TableTrackingCustomizationModal"
|
<Analytics
|
||||||
{...REDACT_EVERYTHING}
|
name="TableTrackingCustomizationModal"
|
||||||
|
{...REDACT_EVERYTHING}
|
||||||
|
>
|
||||||
|
<Dialog
|
||||||
|
hasBackdrop
|
||||||
|
title={tableName}
|
||||||
|
description={dialogDescription}
|
||||||
|
onClose={onClose}
|
||||||
|
titleTooltip="Customize table name and root fields for GraphQL operations."
|
||||||
|
contentContainer={{
|
||||||
|
className: 'mb-[60px]',
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<Dialog
|
<TableTrackingCustomizationForm
|
||||||
hasBackdrop
|
initialTableName={tableName}
|
||||||
title={tableName}
|
currentConfiguration={currentConfiguration}
|
||||||
description={dialogDescription}
|
|
||||||
onClose={onClose}
|
onClose={onClose}
|
||||||
titleTooltip="Customize table name and root fields for GraphQL operations."
|
onSubmit={onSubmit}
|
||||||
contentContainer={{
|
/>
|
||||||
className: 'mb-[60px]',
|
</Dialog>
|
||||||
}}
|
</Analytics>
|
||||||
>
|
)}
|
||||||
<TableTrackingCustomizationForm
|
</>
|
||||||
initialTableName={tableName}
|
);
|
||||||
currentConfiguration={currentConfiguration}
|
};
|
||||||
onClose={onClose}
|
|
||||||
onSubmit={onSubmit}
|
|
||||||
/>
|
|
||||||
</Dialog>
|
|
||||||
</Analytics>
|
|
||||||
)}
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
@import "../../../../Common/Common.module";
|
@import '../../../../Common/Common.module';
|
||||||
|
|
||||||
.qb_select, .qb_input {
|
.qb_select,
|
||||||
|
.qb_input {
|
||||||
border: none;
|
border: none;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border-bottom: 2px dotted;
|
border-bottom: 2px dotted;
|
||||||
@ -12,7 +13,8 @@
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.qb_select:focus, .qb_input:focus {
|
.qb_select:focus,
|
||||||
|
.qb_input:focus {
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
@import "../TableModify/ModifyTable.module";
|
@import '../TableModify/ModifyTable.module';
|
||||||
|
|
||||||
.permissionsTable {
|
.permissionsTable {
|
||||||
width: 85%;
|
width: 85%;
|
||||||
|
|
||||||
td, th {
|
td,
|
||||||
|
th {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
vertical-align: middle !important;
|
vertical-align: middle !important;
|
||||||
position: relative;
|
position: relative;
|
||||||
@ -13,12 +14,14 @@
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
td:last-child, th:last-child {
|
td:last-child,
|
||||||
|
th:last-child {
|
||||||
border-left: 4px double #ddd;
|
border-left: 4px double #ddd;
|
||||||
width: 10%;
|
width: 10%;
|
||||||
}
|
}
|
||||||
|
|
||||||
td:first-child, th:first-child {
|
td:first-child,
|
||||||
|
th:first-child {
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
border-right: 4px double #ddd;
|
border-right: 4px double #ddd;
|
||||||
max-width: 250px;
|
max-width: 250px;
|
||||||
@ -56,9 +59,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.currEdit, .currEdit:hover {
|
.currEdit,
|
||||||
background-color: #FFF3D5;
|
.currEdit:hover {
|
||||||
color: #FD9540;
|
background-color: #fff3d5;
|
||||||
|
color: #fd9540;
|
||||||
|
|
||||||
.editPermsIcon {
|
.editPermsIcon {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
@ -14,4 +14,4 @@
|
|||||||
|
|
||||||
.ant-tree {
|
.ant-tree {
|
||||||
color: grey;
|
color: grey;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@import "../../../../Common/TableCommon/Table.module";
|
@import '../../../../Common/TableCommon/Table.module';
|
||||||
|
|
||||||
.dropdown_wrapper {
|
.dropdown_wrapper {
|
||||||
width: 300px;
|
width: 300px;
|
||||||
@ -28,15 +28,13 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
.tabletdCenter
|
.tabletdCenter {
|
||||||
{
|
|
||||||
height: 21px;
|
height: 21px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
.tableArrowCenter
|
.tableArrowCenter {
|
||||||
{
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -56,7 +54,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.invocationSuccess {
|
.invocationSuccess {
|
||||||
color: #28a745
|
color: #28a745;
|
||||||
}
|
}
|
||||||
.invocationFailure {
|
.invocationFailure {
|
||||||
color: red;
|
color: red;
|
||||||
@ -107,7 +105,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
background-color: #FFF3D5;
|
background-color: #fff3d5;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
min-height: 41px;
|
min-height: 41px;
|
||||||
}
|
}
|
||||||
@ -116,7 +114,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
background-color: #FFF3D5;
|
background-color: #fff3d5;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
min-height: 41px;
|
min-height: 41px;
|
||||||
position: relative;
|
position: relative;
|
||||||
@ -176,7 +174,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
i:hover {
|
i:hover {
|
||||||
color: #4D4D4D ;
|
color: #4d4d4d;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,4 +83,4 @@
|
|||||||
"2021-05-18 07:14:19.196511",
|
"2021-05-18 07:14:19.196511",
|
||||||
"f"
|
"f"
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
@ -1,222 +1,222 @@
|
|||||||
[
|
[
|
||||||
[
|
[
|
||||||
"id",
|
"id",
|
||||||
"event_id",
|
"event_id",
|
||||||
"status",
|
"status",
|
||||||
"request",
|
"request",
|
||||||
"response",
|
"response",
|
||||||
"created_at",
|
"created_at",
|
||||||
"id",
|
"id",
|
||||||
"schema_name",
|
"schema_name",
|
||||||
"table_name",
|
"table_name",
|
||||||
"trigger_name",
|
"trigger_name",
|
||||||
"payload",
|
"payload",
|
||||||
"delivered",
|
"delivered",
|
||||||
"error",
|
"error",
|
||||||
"tries",
|
"tries",
|
||||||
"created_at",
|
"created_at",
|
||||||
"locked",
|
"locked",
|
||||||
"next_retry_at",
|
"next_retry_at",
|
||||||
"archived"
|
"archived"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"31b4c28c-954d-4871-ba95-a6d7da8d6988",
|
"31b4c28c-954d-4871-ba95-a6d7da8d6988",
|
||||||
"7bc7b398-f1cd-4761-839d-44971e01be48",
|
"7bc7b398-f1cd-4761-839d-44971e01be48",
|
||||||
"1000",
|
"1000",
|
||||||
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":8}},\"trace_context\":{\"trace_id\":\"04415c5c0870f8f6\",\"span_id\":\"455d47a2c5d8f40e\"}},\"created_at\":\"2021-05-18T07:39:50.658771Z\",\"id\":\"7bc7b398-f1cd-4761-839d-44971e01be48\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":4},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":8}},\"trace_context\":{\"trace_id\":\"04415c5c0870f8f6\",\"span_id\":\"455d47a2c5d8f40e\"}},\"created_at\":\"2021-05-18T07:39:50.658771Z\",\"id\":\"7bc7b398-f1cd-4761-839d-44971e01be48\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":4},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
||||||
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"04415c5c0870f8f6\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"d1260fcdfe50945e\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"de05cf247e935b7a\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"04415c5c0870f8f6\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"d1260fcdfe50945e\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"de05cf247e935b7a\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
||||||
"2021-05-18 07:40:32.81592",
|
"2021-05-18 07:40:32.81592",
|
||||||
"7bc7b398-f1cd-4761-839d-44971e01be48",
|
"7bc7b398-f1cd-4761-839d-44971e01be48",
|
||||||
"public",
|
"public",
|
||||||
"users",
|
"users",
|
||||||
"new_user",
|
"new_user",
|
||||||
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 8, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"455d47a2c5d8f40e\", \"trace_id\": \"04415c5c0870f8f6\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 8, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"455d47a2c5d8f40e\", \"trace_id\": \"04415c5c0870f8f6\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
||||||
"f",
|
"f",
|
||||||
"t",
|
"t",
|
||||||
"5",
|
"5",
|
||||||
"2021-05-18 07:39:50.658771",
|
"2021-05-18 07:39:50.658771",
|
||||||
"NULL",
|
"NULL",
|
||||||
"NULL",
|
"NULL",
|
||||||
"f"
|
"f"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"bf1760ee-c628-4b94-b535-1d5453675958",
|
"bf1760ee-c628-4b94-b535-1d5453675958",
|
||||||
"c3ac48be-a569-4d87-8c52-cb84309002ed",
|
"c3ac48be-a569-4d87-8c52-cb84309002ed",
|
||||||
"1000",
|
"1000",
|
||||||
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":6}},\"trace_context\":{\"trace_id\":\"ecba73bac1b4601a\",\"span_id\":\"5a75ae38fccf4473\"}},\"created_at\":\"2021-05-18T07:39:50.332379Z\",\"id\":\"c3ac48be-a569-4d87-8c52-cb84309002ed\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":4},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":6}},\"trace_context\":{\"trace_id\":\"ecba73bac1b4601a\",\"span_id\":\"5a75ae38fccf4473\"}},\"created_at\":\"2021-05-18T07:39:50.332379Z\",\"id\":\"c3ac48be-a569-4d87-8c52-cb84309002ed\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":4},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
||||||
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ecba73bac1b4601a\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"1c3c460b36da4a0e\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"f309dbf4632da6a5\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ecba73bac1b4601a\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"1c3c460b36da4a0e\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"f309dbf4632da6a5\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
||||||
"2021-05-18 07:40:32.815484",
|
"2021-05-18 07:40:32.815484",
|
||||||
"c3ac48be-a569-4d87-8c52-cb84309002ed",
|
"c3ac48be-a569-4d87-8c52-cb84309002ed",
|
||||||
"public",
|
"public",
|
||||||
"users",
|
"users",
|
||||||
"new_user",
|
"new_user",
|
||||||
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 6, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5a75ae38fccf4473\", \"trace_id\": \"ecba73bac1b4601a\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 6, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5a75ae38fccf4473\", \"trace_id\": \"ecba73bac1b4601a\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
||||||
"f",
|
"f",
|
||||||
"t",
|
"t",
|
||||||
"5",
|
"5",
|
||||||
"2021-05-18 07:39:50.332379",
|
"2021-05-18 07:39:50.332379",
|
||||||
"NULL",
|
"NULL",
|
||||||
"NULL",
|
"NULL",
|
||||||
"f"
|
"f"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"5836823f-9104-489e-b339-946b45e266a9",
|
"5836823f-9104-489e-b339-946b45e266a9",
|
||||||
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
||||||
"1000",
|
"1000",
|
||||||
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":9}},\"trace_context\":{\"trace_id\":\"ea970ad818f358cf\",\"span_id\":\"77150de9d725e5df\"}},\"created_at\":\"2021-05-18T07:39:50.831182Z\",\"id\":\"338eec2d-0c1f-4358-ae12-05d3f73a85c6\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":4},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":9}},\"trace_context\":{\"trace_id\":\"ea970ad818f358cf\",\"span_id\":\"77150de9d725e5df\"}},\"created_at\":\"2021-05-18T07:39:50.831182Z\",\"id\":\"338eec2d-0c1f-4358-ae12-05d3f73a85c6\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":4},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
||||||
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ea970ad818f358cf\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"332c2f49df1cb4d2\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"3668323420f67bb1\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ea970ad818f358cf\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"332c2f49df1cb4d2\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"3668323420f67bb1\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
||||||
"2021-05-18 07:40:32.81517",
|
"2021-05-18 07:40:32.81517",
|
||||||
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
||||||
"public",
|
"public",
|
||||||
"users",
|
"users",
|
||||||
"new_user",
|
"new_user",
|
||||||
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 9, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"77150de9d725e5df\", \"trace_id\": \"ea970ad818f358cf\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 9, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"77150de9d725e5df\", \"trace_id\": \"ea970ad818f358cf\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
||||||
"f",
|
"f",
|
||||||
"t",
|
"t",
|
||||||
"5",
|
"5",
|
||||||
"2021-05-18 07:39:50.831182",
|
"2021-05-18 07:39:50.831182",
|
||||||
"NULL",
|
"NULL",
|
||||||
"NULL",
|
"NULL",
|
||||||
"f"
|
"f"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"7b314fa3-fa10-4d1d-9c7b-0799e2a2345c",
|
"7b314fa3-fa10-4d1d-9c7b-0799e2a2345c",
|
||||||
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
||||||
"1000",
|
"1000",
|
||||||
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":7}},\"trace_context\":{\"trace_id\":\"da0635bf4fb444b1\",\"span_id\":\"5e088982a14f9bdd\"}},\"created_at\":\"2021-05-18T07:39:50.490999Z\",\"id\":\"423e5a24-d4e0-493a-83df-ecff0eca2398\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":4},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":7}},\"trace_context\":{\"trace_id\":\"da0635bf4fb444b1\",\"span_id\":\"5e088982a14f9bdd\"}},\"created_at\":\"2021-05-18T07:39:50.490999Z\",\"id\":\"423e5a24-d4e0-493a-83df-ecff0eca2398\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":4},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
||||||
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"da0635bf4fb444b1\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"f92c4fac3a66595a\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"b3a34f8a72e89980\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"da0635bf4fb444b1\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"f92c4fac3a66595a\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"b3a34f8a72e89980\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
||||||
"2021-05-18 07:40:32.815118",
|
"2021-05-18 07:40:32.815118",
|
||||||
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
||||||
"public",
|
"public",
|
||||||
"users",
|
"users",
|
||||||
"new_user",
|
"new_user",
|
||||||
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 7, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5e088982a14f9bdd\", \"trace_id\": \"da0635bf4fb444b1\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 7, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5e088982a14f9bdd\", \"trace_id\": \"da0635bf4fb444b1\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
||||||
"f",
|
"f",
|
||||||
"t",
|
"t",
|
||||||
"5",
|
"5",
|
||||||
"2021-05-18 07:39:50.490999",
|
"2021-05-18 07:39:50.490999",
|
||||||
"NULL",
|
"NULL",
|
||||||
"NULL",
|
"NULL",
|
||||||
"f"
|
"f"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"c6ec4304-3848-4c4c-a188-ff91ebe61ea0",
|
"c6ec4304-3848-4c4c-a188-ff91ebe61ea0",
|
||||||
"7bc7b398-f1cd-4761-839d-44971e01be48",
|
"7bc7b398-f1cd-4761-839d-44971e01be48",
|
||||||
"1000",
|
"1000",
|
||||||
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":8}},\"trace_context\":{\"trace_id\":\"04415c5c0870f8f6\",\"span_id\":\"455d47a2c5d8f40e\"}},\"created_at\":\"2021-05-18T07:39:50.658771Z\",\"id\":\"7bc7b398-f1cd-4761-839d-44971e01be48\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":3},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":8}},\"trace_context\":{\"trace_id\":\"04415c5c0870f8f6\",\"span_id\":\"455d47a2c5d8f40e\"}},\"created_at\":\"2021-05-18T07:39:50.658771Z\",\"id\":\"7bc7b398-f1cd-4761-839d-44971e01be48\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":3},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
||||||
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"04415c5c0870f8f6\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"f520ea1624695587\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"2dc1b4d86426e316\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"04415c5c0870f8f6\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"f520ea1624695587\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"2dc1b4d86426e316\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
||||||
"2021-05-18 07:40:22.736277",
|
"2021-05-18 07:40:22.736277",
|
||||||
"7bc7b398-f1cd-4761-839d-44971e01be48",
|
"7bc7b398-f1cd-4761-839d-44971e01be48",
|
||||||
"public",
|
"public",
|
||||||
"users",
|
"users",
|
||||||
"new_user",
|
"new_user",
|
||||||
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 8, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"455d47a2c5d8f40e\", \"trace_id\": \"04415c5c0870f8f6\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 8, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"455d47a2c5d8f40e\", \"trace_id\": \"04415c5c0870f8f6\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
||||||
"f",
|
"f",
|
||||||
"t",
|
"t",
|
||||||
"5",
|
"5",
|
||||||
"2021-05-18 07:39:50.658771",
|
"2021-05-18 07:39:50.658771",
|
||||||
"NULL",
|
"NULL",
|
||||||
"NULL",
|
"NULL",
|
||||||
"f"
|
"f"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"8c88c745-29eb-4637-ad2d-85f3d6ba82c4",
|
"8c88c745-29eb-4637-ad2d-85f3d6ba82c4",
|
||||||
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
||||||
"1000",
|
"1000",
|
||||||
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":7}},\"trace_context\":{\"trace_id\":\"da0635bf4fb444b1\",\"span_id\":\"5e088982a14f9bdd\"}},\"created_at\":\"2021-05-18T07:39:50.490999Z\",\"id\":\"423e5a24-d4e0-493a-83df-ecff0eca2398\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":3},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":7}},\"trace_context\":{\"trace_id\":\"da0635bf4fb444b1\",\"span_id\":\"5e088982a14f9bdd\"}},\"created_at\":\"2021-05-18T07:39:50.490999Z\",\"id\":\"423e5a24-d4e0-493a-83df-ecff0eca2398\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":3},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
||||||
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"da0635bf4fb444b1\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"d6bdb95ec116b8ff\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"01b61664322a458b\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"da0635bf4fb444b1\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"d6bdb95ec116b8ff\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"01b61664322a458b\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
||||||
"2021-05-18 07:40:22.736095",
|
"2021-05-18 07:40:22.736095",
|
||||||
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
||||||
"public",
|
"public",
|
||||||
"users",
|
"users",
|
||||||
"new_user",
|
"new_user",
|
||||||
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 7, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5e088982a14f9bdd\", \"trace_id\": \"da0635bf4fb444b1\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 7, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5e088982a14f9bdd\", \"trace_id\": \"da0635bf4fb444b1\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
||||||
"f",
|
"f",
|
||||||
"t",
|
"t",
|
||||||
"5",
|
"5",
|
||||||
"2021-05-18 07:39:50.490999",
|
"2021-05-18 07:39:50.490999",
|
||||||
"NULL",
|
"NULL",
|
||||||
"NULL",
|
"NULL",
|
||||||
"f"
|
"f"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"48532d4d-ee73-4245-a8f6-378b034eb4f0",
|
"48532d4d-ee73-4245-a8f6-378b034eb4f0",
|
||||||
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
||||||
"1000",
|
"1000",
|
||||||
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":9}},\"trace_context\":{\"trace_id\":\"ea970ad818f358cf\",\"span_id\":\"77150de9d725e5df\"}},\"created_at\":\"2021-05-18T07:39:50.831182Z\",\"id\":\"338eec2d-0c1f-4358-ae12-05d3f73a85c6\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":3},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":9}},\"trace_context\":{\"trace_id\":\"ea970ad818f358cf\",\"span_id\":\"77150de9d725e5df\"}},\"created_at\":\"2021-05-18T07:39:50.831182Z\",\"id\":\"338eec2d-0c1f-4358-ae12-05d3f73a85c6\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":3},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
||||||
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ea970ad818f358cf\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"4d8d92209b40eab3\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"876f35924d13168e\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ea970ad818f358cf\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"4d8d92209b40eab3\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"876f35924d13168e\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
||||||
"2021-05-18 07:40:22.736039",
|
"2021-05-18 07:40:22.736039",
|
||||||
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
||||||
"public",
|
"public",
|
||||||
"users",
|
"users",
|
||||||
"new_user",
|
"new_user",
|
||||||
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 9, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"77150de9d725e5df\", \"trace_id\": \"ea970ad818f358cf\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 9, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"77150de9d725e5df\", \"trace_id\": \"ea970ad818f358cf\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
||||||
"f",
|
"f",
|
||||||
"t",
|
"t",
|
||||||
"5",
|
"5",
|
||||||
"2021-05-18 07:39:50.831182",
|
"2021-05-18 07:39:50.831182",
|
||||||
"NULL",
|
"NULL",
|
||||||
"NULL",
|
"NULL",
|
||||||
"f"
|
"f"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"33105396-99dc-446c-ac7f-d93c38ceb686",
|
"33105396-99dc-446c-ac7f-d93c38ceb686",
|
||||||
"c3ac48be-a569-4d87-8c52-cb84309002ed",
|
"c3ac48be-a569-4d87-8c52-cb84309002ed",
|
||||||
"1000",
|
"1000",
|
||||||
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":6}},\"trace_context\":{\"trace_id\":\"ecba73bac1b4601a\",\"span_id\":\"5a75ae38fccf4473\"}},\"created_at\":\"2021-05-18T07:39:50.332379Z\",\"id\":\"c3ac48be-a569-4d87-8c52-cb84309002ed\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":3},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":6}},\"trace_context\":{\"trace_id\":\"ecba73bac1b4601a\",\"span_id\":\"5a75ae38fccf4473\"}},\"created_at\":\"2021-05-18T07:39:50.332379Z\",\"id\":\"c3ac48be-a569-4d87-8c52-cb84309002ed\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":3},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
||||||
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ecba73bac1b4601a\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"4fa95afd2b803b9c\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"de923514252481ca\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ecba73bac1b4601a\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"4fa95afd2b803b9c\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"de923514252481ca\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
||||||
"2021-05-18 07:40:22.735757",
|
"2021-05-18 07:40:22.735757",
|
||||||
"c3ac48be-a569-4d87-8c52-cb84309002ed",
|
"c3ac48be-a569-4d87-8c52-cb84309002ed",
|
||||||
"public",
|
"public",
|
||||||
"users",
|
"users",
|
||||||
"new_user",
|
"new_user",
|
||||||
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 6, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5a75ae38fccf4473\", \"trace_id\": \"ecba73bac1b4601a\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 6, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5a75ae38fccf4473\", \"trace_id\": \"ecba73bac1b4601a\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
||||||
"f",
|
"f",
|
||||||
"t",
|
"t",
|
||||||
"5",
|
"5",
|
||||||
"2021-05-18 07:39:50.332379",
|
"2021-05-18 07:39:50.332379",
|
||||||
"NULL",
|
"NULL",
|
||||||
"NULL",
|
"NULL",
|
||||||
"f"
|
"f"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"f7980cf5-7520-489a-87f1-f658773f9e60",
|
"f7980cf5-7520-489a-87f1-f658773f9e60",
|
||||||
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
||||||
"1000",
|
"1000",
|
||||||
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":7}},\"trace_context\":{\"trace_id\":\"da0635bf4fb444b1\",\"span_id\":\"5e088982a14f9bdd\"}},\"created_at\":\"2021-05-18T07:39:50.490999Z\",\"id\":\"423e5a24-d4e0-493a-83df-ecff0eca2398\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":2},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":7}},\"trace_context\":{\"trace_id\":\"da0635bf4fb444b1\",\"span_id\":\"5e088982a14f9bdd\"}},\"created_at\":\"2021-05-18T07:39:50.490999Z\",\"id\":\"423e5a24-d4e0-493a-83df-ecff0eca2398\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":2},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
||||||
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"da0635bf4fb444b1\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"2fbf0361df48ccc7\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"ebc5dd9ef22f9543\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"da0635bf4fb444b1\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"2fbf0361df48ccc7\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"ebc5dd9ef22f9543\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
||||||
"2021-05-18 07:40:11.704173",
|
"2021-05-18 07:40:11.704173",
|
||||||
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
||||||
"public",
|
"public",
|
||||||
"users",
|
"users",
|
||||||
"new_user",
|
"new_user",
|
||||||
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 7, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5e088982a14f9bdd\", \"trace_id\": \"da0635bf4fb444b1\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 7, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"5e088982a14f9bdd\", \"trace_id\": \"da0635bf4fb444b1\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
||||||
"f",
|
"f",
|
||||||
"t",
|
"t",
|
||||||
"5",
|
"5",
|
||||||
"2021-05-18 07:39:50.490999",
|
"2021-05-18 07:39:50.490999",
|
||||||
"NULL",
|
"NULL",
|
||||||
"NULL",
|
"NULL",
|
||||||
"f"
|
"f"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"18e6a7de-c38d-4f56-90f5-d0cc1298ea97",
|
"18e6a7de-c38d-4f56-90f5-d0cc1298ea97",
|
||||||
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
||||||
"1000",
|
"1000",
|
||||||
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":9}},\"trace_context\":{\"trace_id\":\"ea970ad818f358cf\",\"span_id\":\"77150de9d725e5df\"}},\"created_at\":\"2021-05-18T07:39:50.831182Z\",\"id\":\"338eec2d-0c1f-4358-ae12-05d3f73a85c6\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":2},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
"{\"payload\":{\"event\":{\"session_variables\":{\"x-hasura-role\":\"admin\"},\"op\":\"INSERT\",\"data\":{\"old\":null,\"new\":{\"name\":\"safs\",\"id\":9}},\"trace_context\":{\"trace_id\":\"ea970ad818f358cf\",\"span_id\":\"77150de9d725e5df\"}},\"created_at\":\"2021-05-18T07:39:50.831182Z\",\"id\":\"338eec2d-0c1f-4358-ae12-05d3f73a85c6\",\"delivery_info\":{\"max_retries\":4,\"current_retry\":2},\"trigger\":{\"name\":\"new_user\"},\"table\":{\"schema\":\"public\",\"name\":\"users\"}},\"headers\":[{\"value\":\"application/json\",\"name\":\"Content-Type\"},{\"value\":\"hasura-graphql-engine/v2.0.0-alpha.9\",\"name\":\"User-Agent\"}],\"version\":\"2\"}",
|
||||||
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ea970ad818f358cf\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"18ac4aa73874b52d\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"705e55f29e621be4\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
"{\"data\":{\"message\":\"\\\"HttpExceptionRequest Request {\\\\n host = \\\\\\\"httsssp.org\\\\\\\"\\\\n port = 80\\\\n secure = False\\\\n requestHeaders = [(\\\\\\\"X-B3-TraceId\\\\\\\",\\\\\\\"ea970ad818f358cf\\\\\\\"),(\\\\\\\"X-B3-SpanId\\\\\\\",\\\\\\\"18ac4aa73874b52d\\\\\\\"),(\\\\\\\"X-B3-ParentSpanId\\\\\\\",\\\\\\\"705e55f29e621be4\\\\\\\"),(\\\\\\\"Content-Type\\\\\\\",\\\\\\\"application/json\\\\\\\"),(\\\\\\\"User-Agent\\\\\\\",\\\\\\\"hasura-graphql-engine/v2.0.0-alpha.9\\\\\\\")]\\\\n path = \\\\\\\"/post\\\\\\\"\\\\n queryString = \\\\\\\"\\\\\\\"\\\\n method = \\\\\\\"POST\\\\\\\"\\\\n proxy = Nothing\\\\n rawBody = False\\\\n redirectCount = 10\\\\n responseTimeout = ResponseTimeoutMicro 60000000\\\\n requestVersion = HTTP/1.1\\\\n proxySecureMode = ProxySecureWithConnect\\\\n}\\\\n (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just \\\\\\\"httsssp.org\\\\\\\", service name: Just \\\\\\\"80\\\\\\\"): does not exist (Name or service not known))\\\"\"},\"version\":\"2\",\"type\":\"client_error\"}",
|
||||||
"2021-05-18 07:40:11.704093",
|
"2021-05-18 07:40:11.704093",
|
||||||
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
||||||
"public",
|
"public",
|
||||||
"users",
|
"users",
|
||||||
"new_user",
|
"new_user",
|
||||||
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 9, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"77150de9d725e5df\", \"trace_id\": \"ea970ad818f358cf\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
"{\"op\": \"INSERT\", \"data\": {\"new\": {\"id\": 9, \"name\": \"safs\"}, \"old\": null}, \"trace_context\": {\"span_id\": \"77150de9d725e5df\", \"trace_id\": \"ea970ad818f358cf\"}, \"session_variables\": {\"x-hasura-role\": \"admin\"}}",
|
||||||
"f",
|
"f",
|
||||||
"t",
|
"t",
|
||||||
"5",
|
"5",
|
||||||
"2021-05-18 07:39:50.831182",
|
"2021-05-18 07:39:50.831182",
|
||||||
"NULL",
|
"NULL",
|
||||||
"NULL",
|
"NULL",
|
||||||
"f"
|
"f"
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -332,4 +332,4 @@
|
|||||||
width: 15px;
|
width: 15px;
|
||||||
min-width: 15px;
|
min-width: 15px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ const InheritedRolesEditor: React.FC<EditorProps> = ({
|
|||||||
const [isCollapsed, setIsCollapsed] = useState(props.isCollapsed);
|
const [isCollapsed, setIsCollapsed] = useState(props.isCollapsed);
|
||||||
|
|
||||||
type Option = {
|
type Option = {
|
||||||
value: typeof allRoles[number];
|
value: (typeof allRoles)[number];
|
||||||
isChecked: true | false;
|
isChecked: true | false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -150,24 +150,26 @@ CloudMetadataKo.parameters = {
|
|||||||
msw: mockHandlers({}),
|
msw: mockHandlers({}),
|
||||||
};
|
};
|
||||||
|
|
||||||
export const ProLitePrometheusEnabled: ComponentStory<typeof Sidebar> =
|
export const ProLitePrometheusEnabled: ComponentStory<
|
||||||
args => {
|
typeof Sidebar
|
||||||
// eslint-disable-next-line no-underscore-dangle
|
> = args => {
|
||||||
window.__env.consoleType = 'pro-lite';
|
// eslint-disable-next-line no-underscore-dangle
|
||||||
return <Sidebar {...args} />;
|
window.__env.consoleType = 'pro-lite';
|
||||||
};
|
return <Sidebar {...args} />;
|
||||||
|
};
|
||||||
ProLitePrometheusEnabled.storyName = '💠 Demo Pro Lite Prometheus Enabled';
|
ProLitePrometheusEnabled.storyName = '💠 Demo Pro Lite Prometheus Enabled';
|
||||||
ProLitePrometheusEnabled.args = generateArgs();
|
ProLitePrometheusEnabled.args = generateArgs();
|
||||||
ProLitePrometheusEnabled.parameters = {
|
ProLitePrometheusEnabled.parameters = {
|
||||||
msw: mockHandlers({ prometheusEnabled: true }),
|
msw: mockHandlers({ prometheusEnabled: true }),
|
||||||
};
|
};
|
||||||
|
|
||||||
export const ProLitePrometheusDisabled: ComponentStory<typeof Sidebar> =
|
export const ProLitePrometheusDisabled: ComponentStory<
|
||||||
args => {
|
typeof Sidebar
|
||||||
// eslint-disable-next-line no-underscore-dangle
|
> = args => {
|
||||||
window.__env.consoleType = 'pro-lite';
|
// eslint-disable-next-line no-underscore-dangle
|
||||||
return <Sidebar {...args} />;
|
window.__env.consoleType = 'pro-lite';
|
||||||
};
|
return <Sidebar {...args} />;
|
||||||
|
};
|
||||||
ProLitePrometheusDisabled.storyName = '💠 Demo Pro Lite Prometheus Disabled';
|
ProLitePrometheusDisabled.storyName = '💠 Demo Pro Lite Prometheus Disabled';
|
||||||
ProLitePrometheusDisabled.args = generateArgs();
|
ProLitePrometheusDisabled.args = generateArgs();
|
||||||
ProLitePrometheusDisabled.parameters = {
|
ProLitePrometheusDisabled.parameters = {
|
||||||
|
@ -46,7 +46,7 @@ export const drivers = [
|
|||||||
'cockroach',
|
'cockroach',
|
||||||
'alloy',
|
'alloy',
|
||||||
] as const;
|
] as const;
|
||||||
export type Driver = typeof drivers[number];
|
export type Driver = (typeof drivers)[number];
|
||||||
|
|
||||||
export const driverToLabel: Record<Driver, string> = {
|
export const driverToLabel: Record<Driver, string> = {
|
||||||
postgres: 'PostgreSQL',
|
postgres: 'PostgreSQL',
|
||||||
|
@ -7,37 +7,38 @@ export interface OasGeneratorMoreInfoProps {
|
|||||||
operation: Operation;
|
operation: Operation;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const OasGeneratorMoreInfo: React.FC<OasGeneratorMoreInfoProps> =
|
export const OasGeneratorMoreInfo: React.FC<
|
||||||
props => {
|
OasGeneratorMoreInfoProps
|
||||||
const { operation } = props;
|
> = props => {
|
||||||
const [isExpanded, setExpanded] = React.useState(false);
|
const { operation } = props;
|
||||||
return (
|
const [isExpanded, setExpanded] = React.useState(false);
|
||||||
<div>
|
return (
|
||||||
<div
|
<div>
|
||||||
className="flex justify-between cursor-pointer"
|
<div
|
||||||
onClick={() => setExpanded(!isExpanded)}
|
className="flex justify-between cursor-pointer"
|
||||||
>
|
onClick={() => setExpanded(!isExpanded)}
|
||||||
<div>{operation.path}</div>
|
>
|
||||||
<div>
|
<div>{operation.path}</div>
|
||||||
More info{' '}
|
<div>
|
||||||
<FaChevronDown
|
More info{' '}
|
||||||
className={clsx(
|
<FaChevronDown
|
||||||
isExpanded ? 'rotate-180' : '',
|
className={clsx(
|
||||||
'transition-all duration-300 ease-in-out'
|
isExpanded ? 'rotate-180' : '',
|
||||||
)}
|
'transition-all duration-300 ease-in-out'
|
||||||
/>
|
)}
|
||||||
</div>
|
/>
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
className={clsx(
|
|
||||||
'whitespace-normal',
|
|
||||||
isExpanded ? 'h-auto pt-4' : 'h-0 pt-0',
|
|
||||||
'overflow-hidden transition-all duration-300 ease-in-out'
|
|
||||||
)}
|
|
||||||
>
|
|
||||||
{operation.description.trim() ??
|
|
||||||
'No description available for this endpoint'}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
<div
|
||||||
};
|
className={clsx(
|
||||||
|
'whitespace-normal',
|
||||||
|
isExpanded ? 'h-auto pt-4' : 'h-0 pt-0',
|
||||||
|
'overflow-hidden transition-all duration-300 ease-in-out'
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
{operation.description.trim() ??
|
||||||
|
'No description available for this endpoint'}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
@ -7,33 +7,34 @@ interface AllowListSidebarSearchFormProps {
|
|||||||
setSearch: (search: string) => void;
|
setSearch: (search: string) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const AllowListSidebarSearchForm: React.FC<AllowListSidebarSearchFormProps> =
|
export const AllowListSidebarSearchForm: React.FC<
|
||||||
({ setSearch }) => {
|
AllowListSidebarSearchFormProps
|
||||||
const schema = z.object({
|
> = ({ setSearch }) => {
|
||||||
search: z.string(),
|
const schema = z.object({
|
||||||
});
|
search: z.string(),
|
||||||
|
});
|
||||||
|
|
||||||
const {
|
const {
|
||||||
methods: { watch },
|
methods: { watch },
|
||||||
Form,
|
Form,
|
||||||
} = useConsoleForm({
|
} = useConsoleForm({
|
||||||
schema,
|
schema,
|
||||||
});
|
});
|
||||||
|
|
||||||
const search = watch('search');
|
const search = watch('search');
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setSearch(search);
|
setSearch(search);
|
||||||
}, [search]);
|
}, [search]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Form onSubmit={() => {}} className="pl-0 pr-0 !p-0 bg-transparent">
|
<Form onSubmit={() => {}} className="pl-0 pr-0 !p-0 bg-transparent">
|
||||||
<InputField
|
<InputField
|
||||||
id="search"
|
id="search"
|
||||||
placeholder="Search Collections..."
|
placeholder="Search Collections..."
|
||||||
icon={<FaSearch />}
|
icon={<FaSearch />}
|
||||||
name="search"
|
name="search"
|
||||||
/>
|
/>
|
||||||
</Form>
|
</Form>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user