mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-04 08:32:49 +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
|
||||
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
|
||||
|
||||
# This is a snapshot generated during npm install, but not needed
|
||||
/snapshots.js
|
||||
|
@ -3,3 +3,7 @@
|
||||
/dist
|
||||
/coverage
|
||||
/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"],
|
||||
"cSpell.words": ["clsx"],
|
||||
"tailwindCSS.experimental.classRegex": [
|
||||
|
||||
"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.
|
||||
|
||||
|
||||
*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
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
# Test
|
||||
|
||||
## Useful resources
|
||||
|
||||
- [Cypress Dashboard for the Console project](https://dashboard.cypress.io/projects/5yiuic)
|
||||
|
||||
## Running all tests to generate coverage
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -37,71 +37,71 @@
|
||||
* @see https://github.com/bahmutov/cypress-network-idle
|
||||
*/
|
||||
|
||||
import 'cypress-wait-until';
|
||||
|
||||
export function waitForPostCreationRequests() {
|
||||
let waitCompleted = false;
|
||||
|
||||
cy.log('*--- All requests must be settled*');
|
||||
|
||||
const pendingRequests = new Map();
|
||||
cy.intercept('POST', 'http://localhost:8080/v1/metadata', req => {
|
||||
if (waitCompleted) return;
|
||||
|
||||
Cypress.log({ message: '*--- Request pending*' });
|
||||
|
||||
pendingRequests.set(req, true);
|
||||
|
||||
req.continue(() => {
|
||||
Cypress.log({ message: '*--- Request settled*' });
|
||||
|
||||
pendingRequests.delete(req);
|
||||
});
|
||||
import 'cypress-wait-until';
|
||||
|
||||
export function waitForPostCreationRequests() {
|
||||
let waitCompleted = false;
|
||||
|
||||
cy.log('*--- All requests must be settled*');
|
||||
|
||||
const pendingRequests = new Map();
|
||||
cy.intercept('POST', 'http://localhost:8080/v1/metadata', req => {
|
||||
if (waitCompleted) return;
|
||||
|
||||
Cypress.log({ message: '*--- Request pending*' });
|
||||
|
||||
pendingRequests.set(req, true);
|
||||
|
||||
req.continue(() => {
|
||||
Cypress.log({ message: '*--- Request settled*' });
|
||||
|
||||
pendingRequests.delete(req);
|
||||
});
|
||||
|
||||
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 requests start test failure, the requests got the UI re-rendered
|
||||
// | | |
|
||||
// |--🚦🔴----⚠️---🚦🟢-------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.
|
||||
//
|
||||
// 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
|
||||
// | | | | | | |
|
||||
// |--🚦🔴--1-2-3-4-5-6-7-1-2-3-4-5-6-7--⚠️------------------⚠️------------------💥
|
||||
cy.waitUntil(() => pendingRequests.size > 0, {
|
||||
timeout: 5000, // 5 seconds is the default Cypress wait for a request to start
|
||||
interval: 1,
|
||||
errorMsg: 'No first request caught',
|
||||
});
|
||||
|
||||
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.
|
||||
//
|
||||
// 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
|
||||
// | | | |
|
||||
// |--🚦🔴---1---------------------1----🚦🟢----------------2-3-4-5-6-7-1----------💥
|
||||
//
|
||||
// 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*' });
|
||||
|
||||
cy.waitUntil(() => pendingRequests.size === 0, {
|
||||
timeout: 30000, // 30 seconds is the default Cypress wait for the request to complete
|
||||
errorMsg: 'Some requests are not settled yet',
|
||||
}).then(() => {
|
||||
waitCompleted = true;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
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 requests start test failure, the requests got the UI re-rendered
|
||||
// | | |
|
||||
// |--🚦🔴----⚠️---🚦🟢-------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.
|
||||
//
|
||||
// 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
|
||||
// | | | | | | |
|
||||
// |--🚦🔴--1-2-3-4-5-6-7-1-2-3-4-5-6-7--⚠️------------------⚠️------------------💥
|
||||
cy.waitUntil(() => pendingRequests.size > 0, {
|
||||
timeout: 5000, // 5 seconds is the default Cypress wait for a request to start
|
||||
interval: 1,
|
||||
errorMsg: 'No first request caught',
|
||||
});
|
||||
|
||||
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.
|
||||
//
|
||||
// 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
|
||||
// | | | |
|
||||
// |--🚦🔴---1---------------------1----🚦🟢----------------2-3-4-5-6-7-1----------💥
|
||||
//
|
||||
// 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*' });
|
||||
|
||||
cy.waitUntil(() => pendingRequests.size === 0, {
|
||||
timeout: 30000, // 30 seconds is the default Cypress wait for the request to complete
|
||||
errorMsg: 'Some requests are not settled yet',
|
||||
}).then(() => {
|
||||
waitCompleted = true;
|
||||
});
|
||||
}
|
||||
|
@ -1,123 +1,128 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0",
|
||||
"Actions with Transform": {
|
||||
"When the users create, and delete a Action with Transform, everything should work": {
|
||||
"Action payload": {
|
||||
"bodyToSnapshot": [
|
||||
{
|
||||
"type": "set_custom_types",
|
||||
"args": {
|
||||
"scalars": [],
|
||||
"input_objects": [],
|
||||
"objects": [
|
||||
{
|
||||
"name": "LoginResponse",
|
||||
"description": null,
|
||||
"fields": [
|
||||
{
|
||||
"name": "accessToken",
|
||||
"type": "String!",
|
||||
"description": null
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"enums": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "create_action",
|
||||
"args": {
|
||||
"name": "login",
|
||||
"definition": {
|
||||
"arguments": [
|
||||
__version: '10.4.0',
|
||||
'Actions with Transform': {
|
||||
'When the users create, and delete a Action with Transform, everything should work':
|
||||
{
|
||||
'Action payload': {
|
||||
bodyToSnapshot: [
|
||||
{
|
||||
type: 'set_custom_types',
|
||||
args: {
|
||||
scalars: [],
|
||||
input_objects: [],
|
||||
objects: [
|
||||
{
|
||||
"name": "username",
|
||||
"type": "String!",
|
||||
"description": null
|
||||
name: 'LoginResponse',
|
||||
description: null,
|
||||
fields: [
|
||||
{
|
||||
name: 'accessToken',
|
||||
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"
|
||||
}
|
||||
enums: [],
|
||||
},
|
||||
"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": "String!"
|
||||
}
|
||||
type: 'create_action',
|
||||
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": "transform",
|
||||
"template": "{\n \"userInfo\": {\n \"name\": {{$body.input.username}},\n \"password\": {{$body.input.password}},\n \"type\": {{$body.action.name}}\n \n }\n}"
|
||||
},
|
||||
'Action metadata': {
|
||||
name: 'login',
|
||||
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",
|
||||
"query_params": {
|
||||
"id": "5",
|
||||
"name": "{{$body.action.name}}"
|
||||
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,
|
||||
},
|
||||
"template_engine": "Kriti",
|
||||
"url": "{{$base_url}}/{{$body.action.name}}",
|
||||
"version": 2
|
||||
type: 'mutation',
|
||||
kind: 'synchronous',
|
||||
},
|
||||
"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 = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -92,7 +92,9 @@ export const failCTWrongDefaultValue = () => {
|
||||
};
|
||||
|
||||
export const passCT = () => {
|
||||
cy.get(getElementFromAlias('frequently-used-columns')).first().should('exist');
|
||||
cy.get(getElementFromAlias('frequently-used-columns'))
|
||||
.first()
|
||||
.should('exist');
|
||||
// Set second column
|
||||
cy.get(getElementFromAlias('column-1')).clear().type(getColName(1));
|
||||
tableColumnTypeSelector('col-type-1');
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -7,9 +7,7 @@ export const toggleOnMigrationMode = () => {
|
||||
}).then(response => {
|
||||
if (response.body.migration_mode === 'false') {
|
||||
// Go to migrations section
|
||||
cy.get('a')
|
||||
.contains('Migrations')
|
||||
.click();
|
||||
cy.get('a').contains('Migrations').click();
|
||||
cy.wait(3000);
|
||||
// Toggle Migration mode
|
||||
cy.get('[class=react-toggle-track]').click();
|
||||
@ -25,9 +23,7 @@ export const toggleOffMigrationMode = () => {
|
||||
}).then(response => {
|
||||
if (response.body.migration_mode === 'true') {
|
||||
// Go to migrations section
|
||||
cy.get('a')
|
||||
.contains('Migrations')
|
||||
.click();
|
||||
cy.get('a').contains('Migrations').click();
|
||||
cy.wait(3000);
|
||||
// Toggle Migration mode
|
||||
cy.get('[class=react-toggle-track]').click();
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -208,7 +208,9 @@ export const Addcolumnname = (name: string) => {
|
||||
};
|
||||
|
||||
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(getColName(0));
|
||||
tableColumnTypeSelector('col-type-0');
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -47,7 +47,10 @@ export const passPTCreateTable = () => {
|
||||
cy.wait(7000);
|
||||
cy.url().should(
|
||||
'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
|
||||
setPromptValue(getTableName(1, testName));
|
||||
cy.get(getElementFromAlias('delete-view')).click();
|
||||
cy.window()
|
||||
.its('prompt')
|
||||
.should('be.called');
|
||||
cy.window().its('prompt').should('be.called');
|
||||
cy.wait(7000);
|
||||
};
|
||||
|
||||
@ -122,9 +123,7 @@ export const passPTDeleteTable = () => {
|
||||
// Delete table
|
||||
setPromptValue(getTableName(0, testName));
|
||||
cy.get(getElementFromAlias('delete-table')).click();
|
||||
cy.window()
|
||||
.its('prompt')
|
||||
.should('be.called');
|
||||
cy.window().its('prompt').should('be.called');
|
||||
cy.wait(7000);
|
||||
};
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -25,26 +25,16 @@ export const checkCreateRemoteSchemaRoute = () => {
|
||||
};
|
||||
|
||||
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('.notifications-wrapper').contains('Error');
|
||||
|
||||
};
|
||||
|
||||
export const createSimpleRemoteSchema = () => {
|
||||
cy.get('[data-testid=name]')
|
||||
.clear()
|
||||
.type(getRemoteSchemaName(1, testName));
|
||||
cy.get('[data-testid=url]')
|
||||
.clear()
|
||||
.type(getRemoteGraphQLURL());
|
||||
cy.get('[data-testid=name]').clear().type(getRemoteSchemaName(1, testName));
|
||||
cy.get('[data-testid=url]').clear().type(getRemoteGraphQLURL());
|
||||
cy.get('[data-testid=submit]').click();
|
||||
cy.get('.notifications-wrapper').contains('Success');
|
||||
validateRS(getRemoteSchemaName(1, testName), ResultType.SUCCESS);
|
||||
@ -59,12 +49,8 @@ export const createSimpleRemoteSchema = () => {
|
||||
|
||||
export const failRSDuplicateSchemaName = () => {
|
||||
cy.visit('remote-schemas/manage/add');
|
||||
cy.get('[data-testid=name]')
|
||||
.clear()
|
||||
.type(getRemoteSchemaName(1, testName));
|
||||
cy.get('[data-testid=url]')
|
||||
.clear()
|
||||
.type(getRemoteGraphQLURL());
|
||||
cy.get('[data-testid=name]').clear().type(getRemoteSchemaName(1, testName));
|
||||
cy.get('[data-testid=url]').clear().type(getRemoteGraphQLURL());
|
||||
cy.get('[data-testid=submit]').click();
|
||||
cy.get('.notifications-wrapper').contains('Error');
|
||||
cy.url().should('eq', `${baseUrl}/remote-schemas/manage/add`);
|
||||
@ -72,12 +58,8 @@ export const failRSDuplicateSchemaName = () => {
|
||||
|
||||
export const failRSDuplicateSchemaNodes = () => {
|
||||
cy.visit('remote-schemas/manage/add');
|
||||
cy.get('[data-testid=name]')
|
||||
.clear()
|
||||
.type(getRemoteSchemaName(2, testName));
|
||||
cy.get('[data-testid=url]')
|
||||
.clear()
|
||||
.type(getRemoteGraphQLURL());
|
||||
cy.get('[data-testid=name]').clear().type(getRemoteSchemaName(2, testName));
|
||||
cy.get('[data-testid=url]').clear().type(getRemoteGraphQLURL());
|
||||
cy.get('[data-testid=submit]').click();
|
||||
cy.get('.notifications-wrapper').contains('Error');
|
||||
cy.url().should('eq', `${baseUrl}/remote-schemas/manage/add`);
|
||||
@ -112,15 +94,9 @@ export const deleteSimpleRemoteSchema = () => {
|
||||
|
||||
export const failWithRemoteSchemaEnvUrl = () => {
|
||||
cy.visit('remote-schemas/manage/add');
|
||||
cy.get('[data-testid=name]')
|
||||
.clear()
|
||||
.type(getRemoteSchemaName(3, testName));
|
||||
cy.get(
|
||||
'[name="url.type"]'
|
||||
).select('from_env');
|
||||
cy.get('[data-testid=url]')
|
||||
.clear()
|
||||
.type(getRemoteGraphQLURLFromEnv());
|
||||
cy.get('[data-testid=name]').clear().type(getRemoteSchemaName(3, testName));
|
||||
cy.get('[name="url.type"]').select('from_env');
|
||||
cy.get('[data-testid=url]').clear().type(getRemoteGraphQLURLFromEnv());
|
||||
cy.get('[data-testid=submit]').click();
|
||||
cy.get('.notifications-wrapper').contains('Error');
|
||||
cy.url().should('eq', `${baseUrl}/remote-schemas/manage/add`);
|
||||
@ -128,38 +104,22 @@ export const failWithRemoteSchemaEnvUrl = () => {
|
||||
|
||||
export const failWithRemoteSchemaEnvHeader = () => {
|
||||
cy.visit('remote-schemas/manage/add');
|
||||
cy.get('[data-testid=name]')
|
||||
.clear()
|
||||
.type(getRemoteSchemaName(3, testName));
|
||||
cy.get('[data-testid=url]')
|
||||
.clear()
|
||||
.type(getRemoteGraphQLURL());
|
||||
cy.get('[data-testid=name]').clear().type(getRemoteSchemaName(3, testName));
|
||||
cy.get('[data-testid=url]').clear().type(getRemoteGraphQLURL());
|
||||
|
||||
cy.get('[data-testid="add-header')
|
||||
.click()
|
||||
cy.get('[data-testid="add-header').click();
|
||||
|
||||
cy.get('[name="headers[0].name"]')
|
||||
.clear()
|
||||
.type('sampleHeader1');
|
||||
cy.get('[name="headers[0].name"]').clear().type('sampleHeader1');
|
||||
|
||||
cy.get('[name="headers[0].value"]')
|
||||
.clear()
|
||||
.type('sampleHeaderValue1');
|
||||
cy.get('[name="headers[0].value"]').clear().type('sampleHeaderValue1');
|
||||
|
||||
cy.get('[data-testid="add-header')
|
||||
.click()
|
||||
cy.get('[data-testid="add-header').click();
|
||||
|
||||
cy.get('[name="headers[1].name"]')
|
||||
.clear()
|
||||
.type('sampleHeader2');
|
||||
cy.get('[name="headers[1].name"]').clear().type('sampleHeader2');
|
||||
|
||||
cy.get(
|
||||
'[name="headers[1].type"]'
|
||||
).select("from_env");
|
||||
cy.get('[name="headers[1].type"]').select('from_env');
|
||||
|
||||
cy.get('[name="headers[1].value"]')
|
||||
.clear()
|
||||
.type('SAMPLE_ENV_HEADER');
|
||||
cy.get('[name="headers[1].value"]').clear().type('SAMPLE_ENV_HEADER');
|
||||
|
||||
cy.get('[data-testid=submit]').click();
|
||||
cy.get('.notifications-wrapper').contains('Error');
|
||||
@ -168,34 +128,20 @@ export const failWithRemoteSchemaEnvHeader = () => {
|
||||
|
||||
export const passWithRemoteSchemaHeader = () => {
|
||||
cy.visit('remote-schemas/manage/add');
|
||||
cy.get('[data-testid=name]')
|
||||
.clear()
|
||||
.type(getRemoteSchemaName(3, testName));
|
||||
cy.get('[data-testid=url]')
|
||||
.clear()
|
||||
.type(getRemoteGraphQLURL());
|
||||
cy.get('[data-testid=name]').clear().type(getRemoteSchemaName(3, testName));
|
||||
cy.get('[data-testid=url]').clear().type(getRemoteGraphQLURL());
|
||||
|
||||
cy.get('[data-testid="add-header')
|
||||
.click()
|
||||
cy.get('[data-testid="add-header').click();
|
||||
|
||||
cy.get('[name="headers[0].name"]')
|
||||
.clear()
|
||||
.type('sampleHeader1');
|
||||
cy.get('[name="headers[0].name"]').clear().type('sampleHeader1');
|
||||
|
||||
cy.get('[name="headers[0].value"]')
|
||||
.clear()
|
||||
.type('sampleHeaderValue1');
|
||||
cy.get('[name="headers[0].value"]').clear().type('sampleHeaderValue1');
|
||||
|
||||
cy.get('[data-testid="add-header')
|
||||
.click()
|
||||
cy.get('[data-testid="add-header').click();
|
||||
|
||||
cy.get('[name="headers[1].name"]')
|
||||
.clear()
|
||||
.type('sampleHeader2');
|
||||
cy.get('[name="headers[1].name"]').clear().type('sampleHeader2');
|
||||
|
||||
cy.get('[name="headers[1].value"]')
|
||||
.clear()
|
||||
.type('sampleHeaderValue2');
|
||||
cy.get('[name="headers[1].value"]').clear().type('sampleHeaderValue2');
|
||||
|
||||
cy.get('[data-testid=submit]').click();
|
||||
cy.get('.notifications-wrapper').contains('Success');
|
||||
@ -240,7 +186,7 @@ export const createSimpleRemoteSchemaPermission = () => {
|
||||
cy.get(getElementFromAlias('save-remote-schema-permissions')).click({
|
||||
force: true,
|
||||
});
|
||||
cy.get('.notifications-wrapper').contains('saved')
|
||||
cy.get('.notifications-wrapper').contains('saved');
|
||||
cy.url().should(
|
||||
'eq',
|
||||
`${baseUrl}/remote-schemas/manage/${getRemoteSchemaName(
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -14,5 +14,5 @@ export const config: ServerConfig = {
|
||||
claims_namespace: '',
|
||||
claims_format: '',
|
||||
},
|
||||
is_prometheus_metrics_enabled: false
|
||||
is_prometheus_metrics_enabled: false,
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
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
|
||||
export const setPromptWithCb = (value: string | null, cb: () => void) => {
|
||||
export const setPromptWithCb = (value: string | null, cb: () => void) => {
|
||||
cy.window().then(win => {
|
||||
cy.stub(win, 'prompt').returns(value);
|
||||
cb();
|
||||
|
@ -5,8 +5,7 @@ export const baseUrl = Cypress.config('baseUrl');
|
||||
export const getRemoteSchemaName = (i: number, schemaName: string) =>
|
||||
`test-remote-schema-${schemaName}-${i}`;
|
||||
|
||||
export const getRemoteGraphQLURL = () =>
|
||||
'https://graphql-pokemon2.vercel.app/';
|
||||
export const getRemoteGraphQLURL = () => 'https://graphql-pokemon2.vercel.app/';
|
||||
|
||||
export const getRemoteGraphQLURLFromEnv = () => 'GRAPHQL_URL';
|
||||
|
||||
|
@ -13,9 +13,10 @@ export const toggleRequestTransformSection = () => {
|
||||
};
|
||||
|
||||
export const clearRequestUrl = () => {
|
||||
cy.get(
|
||||
getElementFromAlias('transform-requestUrl')
|
||||
).type('{selectall}{backspace}', { force: true });
|
||||
cy.get(getElementFromAlias('transform-requestUrl')).type(
|
||||
'{selectall}{backspace}',
|
||||
{ force: true }
|
||||
);
|
||||
};
|
||||
|
||||
export const typeIntoRequestUrl = (content: string) => {
|
||||
|
@ -1,3 +1,3 @@
|
||||
module.exports = {
|
||||
"__version": "10.4.0"
|
||||
}
|
||||
__version: '10.4.0',
|
||||
};
|
||||
|
@ -29,9 +29,7 @@
|
||||
"output": "common"
|
||||
}
|
||||
],
|
||||
"styles": [
|
||||
"apps/console-ce/src/css/tailwind.css"
|
||||
],
|
||||
"styles": ["apps/console-ce/src/css/tailwind.css"],
|
||||
"scripts": [],
|
||||
"webpackConfig": "custom-webpack.config.js",
|
||||
"postcssConfig": "apps/console-ce/postcss.config.js"
|
||||
|
@ -8,10 +8,9 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="icon" type="image/x-icon" href="favicon.ico" />
|
||||
<script>
|
||||
|
||||
// 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 getEnvAsBool = (value) => Boolean(getEnv(value))
|
||||
const getEnv = value => (value.startsWith('%NX') ? undefined : value);
|
||||
const getEnvAsBool = value => Boolean(getEnv(value));
|
||||
|
||||
const serverEnvVars = {
|
||||
dataApiUrl: getEnv('%NX_DATA_API_URL%'),
|
||||
@ -30,7 +29,7 @@
|
||||
tenantID: getEnv('%NX_HASURA_CLOUD_TENANT_ID%') || '',
|
||||
projectID: getEnv('%NX_HASURA_CLOUD_PROJECT_ID%') || '',
|
||||
cloudRootDomain: getEnv('%NX_HASURA_CLOUD_ROOT_DOMAIN%'),
|
||||
consoleType: getEnv('%NX_HASURA_CONSOLE_TYPE%')
|
||||
consoleType: getEnv('%NX_HASURA_CONSOLE_TYPE%'),
|
||||
};
|
||||
|
||||
const cliEnvVars = {
|
||||
@ -52,29 +51,28 @@
|
||||
};
|
||||
|
||||
const envVars =
|
||||
getEnv('%NX_CONSOLE_MODE%') === 'cli' ? cliEnvVars : serverEnvVars;
|
||||
getEnv('%NX_CONSOLE_MODE%') === 'cli' ? cliEnvVars : serverEnvVars;
|
||||
|
||||
window.__env = envVars;
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
.content {
|
||||
display: 'none';
|
||||
opacity: 0;
|
||||
transition: opacity 0.2s linear;
|
||||
}
|
||||
.content.show {
|
||||
display: 'block';
|
||||
opacity: 1;
|
||||
transition: opacity 0.2s linear;
|
||||
}
|
||||
</style>
|
||||
<div id="loading">
|
||||
<div
|
||||
class="page-loading"
|
||||
style="
|
||||
<style>
|
||||
.content {
|
||||
display: 'none';
|
||||
opacity: 0;
|
||||
transition: opacity 0.2s linear;
|
||||
}
|
||||
.content.show {
|
||||
display: 'block';
|
||||
opacity: 1;
|
||||
transition: opacity 0.2s linear;
|
||||
}
|
||||
</style>
|
||||
<div id="loading">
|
||||
<div
|
||||
class="page-loading"
|
||||
style="
|
||||
min-height: 100vh;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
@ -82,12 +80,12 @@
|
||||
font-family: sans-serif;
|
||||
justify-content: center;
|
||||
"
|
||||
>
|
||||
>
|
||||
<span class="" style="font-size: 2em; margin-top: -3em; color: #848484">
|
||||
Loading...
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="content" class="content"></div>
|
||||
<div id="content" class="content"></div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -28,9 +28,7 @@
|
||||
"output": "common"
|
||||
}
|
||||
],
|
||||
"styles": [
|
||||
"apps/console-ee/src/css/tailwind.css"
|
||||
],
|
||||
"styles": ["apps/console-ee/src/css/tailwind.css"],
|
||||
"scripts": [],
|
||||
"webpackConfig": "custom-webpack.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>
|
||||
// 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 getEnvAsBool = (value) => Boolean(getEnv(value));
|
||||
const getEnv = value => (value.startsWith('%NX') ? undefined : value);
|
||||
const getEnvAsBool = value => Boolean(getEnv(value));
|
||||
|
||||
const serverEnvVars = {
|
||||
dataApiUrl: getEnv('%NX_DATA_API_URL%'),
|
||||
|
@ -102,7 +102,10 @@
|
||||
"**/__tests__/**/*.[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": {
|
||||
"testing-library/no-unnecessary-act": "warn",
|
||||
"testing-library/prefer-query-by-disappearance": "warn",
|
||||
|
@ -3,7 +3,6 @@
|
||||
dataApiUrl: 'http://localhost:8080',
|
||||
apiHost: 'http://localhost',
|
||||
apiPort: '8080',
|
||||
nodeEnv: 'development'
|
||||
nodeEnv: 'development',
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -13,7 +13,7 @@ import '../src/lib/components/Common/Common.module.scss';
|
||||
const channel = addons.getChannel();
|
||||
initialize();
|
||||
|
||||
const DocsContainerElement = (props) => {
|
||||
const DocsContainerElement = props => {
|
||||
// Sync Docs dark mode with Storybook Manager
|
||||
const [isDark, setDark] = React.useState();
|
||||
|
||||
@ -28,8 +28,8 @@ const DocsContainerElement = (props) => {
|
||||
{...props}
|
||||
context={{
|
||||
...props.context,
|
||||
storyById: (id) => {
|
||||
return produce(props.context.storyById(id), (draft) => {
|
||||
storyById: id => {
|
||||
return produce(props.context.storyById(id), draft => {
|
||||
draft.parameters.docs.theme = isDark ? theme.dark : theme.light;
|
||||
});
|
||||
},
|
||||
@ -67,7 +67,7 @@ export const parameters = {
|
||||
export const decorators = [
|
||||
(fn, c) => <Provider store={store}>{fn(c)}</Provider>,
|
||||
mswDecorator,
|
||||
(Story) => {
|
||||
Story => {
|
||||
document.body.classList.add('hasura-tailwind-on');
|
||||
return <div className={'bg-legacybg'}>{Story()}</div>;
|
||||
},
|
||||
|
@ -1,4 +1,4 @@
|
||||
@import "../Common/Common.module";
|
||||
@import '../Common/Common.module';
|
||||
|
||||
:global {
|
||||
@keyframes react-progress-spinner {
|
||||
|
@ -1565,7 +1565,7 @@ code {
|
||||
margin-bottom: 2px;
|
||||
align-self: flex-end;
|
||||
padding-top: 8px;
|
||||
border-color:rgba(0, 0, 0, 0.1);
|
||||
border-color: rgba(0, 0, 0, 0.1);
|
||||
border-top-width: 1px;
|
||||
position: sticky;
|
||||
bottom: 0;
|
||||
|
@ -42,234 +42,234 @@ type ConfigureTransformationProps = {
|
||||
responseBodyOnChange?: (responseBody: ResponseTransformStateBody) => void;
|
||||
};
|
||||
|
||||
const ConfigureTransformation: React.FC<ConfigureTransformationProps> =
|
||||
props => {
|
||||
const {
|
||||
transformationType,
|
||||
requestTransfromState,
|
||||
responseTransformState,
|
||||
resetSampleInput,
|
||||
envVarsOnChange,
|
||||
sessionVarsOnChange,
|
||||
requestMethodOnChange,
|
||||
requestUrlOnChange,
|
||||
requestQueryParamsOnChange,
|
||||
requestAddHeadersOnChange,
|
||||
requestBodyOnChange,
|
||||
requestSampleInputOnChange,
|
||||
requestUrlTransformOnChange,
|
||||
requestPayloadTransformOnChange,
|
||||
responsePayloadTransformOnChange,
|
||||
responseBodyOnChange,
|
||||
} = props;
|
||||
const {
|
||||
envVars,
|
||||
sessionVars,
|
||||
requestMethod,
|
||||
requestUrl,
|
||||
requestUrlError,
|
||||
requestUrlPreview,
|
||||
requestQueryParams,
|
||||
requestAddHeaders,
|
||||
requestBody,
|
||||
requestBodyError,
|
||||
requestSampleInput,
|
||||
requestTransformedBody,
|
||||
isRequestUrlTransform,
|
||||
isRequestPayloadTransform,
|
||||
} = requestTransfromState;
|
||||
const [isContextAreaActive, toggleContextArea] = useState<boolean>(false);
|
||||
const ConfigureTransformation: React.FC<
|
||||
ConfigureTransformationProps
|
||||
> = props => {
|
||||
const {
|
||||
transformationType,
|
||||
requestTransfromState,
|
||||
responseTransformState,
|
||||
resetSampleInput,
|
||||
envVarsOnChange,
|
||||
sessionVarsOnChange,
|
||||
requestMethodOnChange,
|
||||
requestUrlOnChange,
|
||||
requestQueryParamsOnChange,
|
||||
requestAddHeadersOnChange,
|
||||
requestBodyOnChange,
|
||||
requestSampleInputOnChange,
|
||||
requestUrlTransformOnChange,
|
||||
requestPayloadTransformOnChange,
|
||||
responsePayloadTransformOnChange,
|
||||
responseBodyOnChange,
|
||||
} = props;
|
||||
const {
|
||||
envVars,
|
||||
sessionVars,
|
||||
requestMethod,
|
||||
requestUrl,
|
||||
requestUrlError,
|
||||
requestUrlPreview,
|
||||
requestQueryParams,
|
||||
requestAddHeaders,
|
||||
requestBody,
|
||||
requestBodyError,
|
||||
requestSampleInput,
|
||||
requestTransformedBody,
|
||||
isRequestUrlTransform,
|
||||
isRequestPayloadTransform,
|
||||
} = requestTransfromState;
|
||||
const [isContextAreaActive, toggleContextArea] = useState<boolean>(false);
|
||||
|
||||
const contextAreaText = isContextAreaActive
|
||||
? `Hide Sample Context`
|
||||
: `Show Sample Context`;
|
||||
const contextAreaText = isContextAreaActive
|
||||
? `Hide Sample Context`
|
||||
: `Show Sample Context`;
|
||||
|
||||
const requestUrlTransformText = isRequestUrlTransform
|
||||
? `Remove Request Options Transform`
|
||||
: `Add Request Options Transform`;
|
||||
const requestPayloadTransformText = isRequestPayloadTransform
|
||||
? `Remove Payload Transform`
|
||||
: `Add Payload Transform`;
|
||||
const requestUrlTransformText = isRequestUrlTransform
|
||||
? `Remove Request Options Transform`
|
||||
: `Add Request Options Transform`;
|
||||
const requestPayloadTransformText = isRequestPayloadTransform
|
||||
? `Remove Payload Transform`
|
||||
: `Add Payload Transform`;
|
||||
|
||||
const responsePayloadTransformText =
|
||||
responseTransformState?.isResponsePayloadTransform
|
||||
? `Remove Response Transform`
|
||||
: `Add Response Transform`;
|
||||
return (
|
||||
<>
|
||||
<h2 className="text-lg font-semibold mb-sm flex items-center">
|
||||
Configure REST Connectors
|
||||
</h2>
|
||||
const responsePayloadTransformText =
|
||||
responseTransformState?.isResponsePayloadTransform
|
||||
? `Remove Response Transform`
|
||||
: `Add Response Transform`;
|
||||
return (
|
||||
<>
|
||||
<h2 className="text-lg font-semibold mb-sm flex items-center">
|
||||
Configure REST Connectors
|
||||
</h2>
|
||||
|
||||
<div className="mb-lg">
|
||||
<label className="block text-gray-600 font-medium mb-xs">
|
||||
Sample Context
|
||||
</label>
|
||||
<p className="text-sm text-gray-600 mb-sm">
|
||||
Add sample env vars and session vars for testing the connector
|
||||
</p>
|
||||
<Analytics
|
||||
name={
|
||||
isContextAreaActive
|
||||
? 'actions-tab-hide-sample-context-button'
|
||||
: 'actions-tab-show-sample-context-button'
|
||||
}
|
||||
passHtmlAttributesToChildren
|
||||
<div className="mb-lg">
|
||||
<label className="block text-gray-600 font-medium mb-xs">
|
||||
Sample Context
|
||||
</label>
|
||||
<p className="text-sm text-gray-600 mb-sm">
|
||||
Add sample env vars and session vars for testing the connector
|
||||
</p>
|
||||
<Analytics
|
||||
name={
|
||||
isContextAreaActive
|
||||
? 'actions-tab-hide-sample-context-button'
|
||||
: 'actions-tab-show-sample-context-button'
|
||||
}
|
||||
passHtmlAttributesToChildren
|
||||
>
|
||||
<Button
|
||||
color="white"
|
||||
size="sm"
|
||||
data-test="toggle-context-area"
|
||||
onClick={() => {
|
||||
toggleContextArea(!isContextAreaActive);
|
||||
}}
|
||||
>
|
||||
<Button
|
||||
color="white"
|
||||
size="sm"
|
||||
data-test="toggle-context-area"
|
||||
onClick={() => {
|
||||
toggleContextArea(!isContextAreaActive);
|
||||
}}
|
||||
>
|
||||
{!isContextAreaActive ? <AddIcon /> : null}
|
||||
{contextAreaText}
|
||||
</Button>
|
||||
</Analytics>
|
||||
{!isContextAreaActive ? <AddIcon /> : null}
|
||||
{contextAreaText}
|
||||
</Button>
|
||||
</Analytics>
|
||||
|
||||
{isContextAreaActive ? (
|
||||
<SampleContextTransforms
|
||||
transformationType={transformationType}
|
||||
envVars={envVars}
|
||||
sessionVars={sessionVars}
|
||||
envVarsOnChange={envVarsOnChange}
|
||||
sessionVarsOnChange={sessionVarsOnChange}
|
||||
/>
|
||||
) : null}
|
||||
</div>
|
||||
{isContextAreaActive ? (
|
||||
<SampleContextTransforms
|
||||
transformationType={transformationType}
|
||||
envVars={envVars}
|
||||
sessionVars={sessionVars}
|
||||
envVarsOnChange={envVarsOnChange}
|
||||
sessionVarsOnChange={sessionVarsOnChange}
|
||||
/>
|
||||
) : null}
|
||||
</div>
|
||||
|
||||
<div className="mb-lg">
|
||||
<label className="block text-gray-600 font-medium mb-xs">
|
||||
Change Request Options
|
||||
</label>
|
||||
<p className="text-sm text-gray-600 mb-sm">
|
||||
Change the method and URL to adapt to your API's expected
|
||||
format.
|
||||
</p>
|
||||
<Analytics
|
||||
name={
|
||||
isRequestUrlTransform
|
||||
? 'actions-tab-hide-request-transform-button'
|
||||
: 'actions-tab-show-request-transform-button'
|
||||
}
|
||||
passHtmlAttributesToChildren
|
||||
<div className="mb-lg">
|
||||
<label className="block text-gray-600 font-medium mb-xs">
|
||||
Change Request Options
|
||||
</label>
|
||||
<p className="text-sm text-gray-600 mb-sm">
|
||||
Change the method and URL to adapt to your API's expected format.
|
||||
</p>
|
||||
<Analytics
|
||||
name={
|
||||
isRequestUrlTransform
|
||||
? 'actions-tab-hide-request-transform-button'
|
||||
: 'actions-tab-show-request-transform-button'
|
||||
}
|
||||
passHtmlAttributesToChildren
|
||||
>
|
||||
<Button
|
||||
size="sm"
|
||||
icon={!isRequestUrlTransform ? <AddIcon /> : undefined}
|
||||
iconPosition="start"
|
||||
data-test="toggle-request-transform"
|
||||
onClick={() => {
|
||||
requestUrlTransformOnChange(!isRequestUrlTransform);
|
||||
resetSampleInput();
|
||||
}}
|
||||
>
|
||||
<Button
|
||||
size="sm"
|
||||
icon={!isRequestUrlTransform ? <AddIcon /> : undefined}
|
||||
iconPosition="start"
|
||||
data-test="toggle-request-transform"
|
||||
onClick={() => {
|
||||
requestUrlTransformOnChange(!isRequestUrlTransform);
|
||||
resetSampleInput();
|
||||
}}
|
||||
>
|
||||
{requestUrlTransformText}
|
||||
</Button>
|
||||
</Analytics>
|
||||
{isRequestUrlTransform ? (
|
||||
<RequestOptionsTransforms
|
||||
requestMethod={requestMethod}
|
||||
requestUrl={requestUrl}
|
||||
requestUrlError={requestUrlError}
|
||||
requestUrlPreview={requestUrlPreview}
|
||||
requestQueryParams={requestQueryParams}
|
||||
requestAddHeaders={requestAddHeaders}
|
||||
requestMethodOnChange={requestMethodOnChange}
|
||||
requestUrlOnChange={requestUrlOnChange}
|
||||
requestQueryParamsOnChange={requestQueryParamsOnChange}
|
||||
requestAddHeadersOnChange={requestAddHeadersOnChange}
|
||||
/>
|
||||
) : null}
|
||||
</div>
|
||||
{requestUrlTransformText}
|
||||
</Button>
|
||||
</Analytics>
|
||||
{isRequestUrlTransform ? (
|
||||
<RequestOptionsTransforms
|
||||
requestMethod={requestMethod}
|
||||
requestUrl={requestUrl}
|
||||
requestUrlError={requestUrlError}
|
||||
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">
|
||||
<label className="block text-gray-600 font-medium mb-xs">
|
||||
Change Payload
|
||||
Change Response
|
||||
</label>
|
||||
<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>
|
||||
<Analytics
|
||||
name={
|
||||
isRequestPayloadTransform
|
||||
? 'actions-tab-hide-payload-transform-button'
|
||||
: 'actions-tab-show-payload-transform-button'
|
||||
? 'actions-tab-hide-response-transform-button'
|
||||
: 'actions-tab-show-response-transform-button'
|
||||
}
|
||||
passHtmlAttributesToChildren
|
||||
>
|
||||
<Button
|
||||
color="white"
|
||||
size="sm"
|
||||
data-test="toggle-payload-transform"
|
||||
data-test="toggle-response-transform"
|
||||
onClick={() => {
|
||||
requestPayloadTransformOnChange(!isRequestPayloadTransform);
|
||||
responsePayloadTransformOnChange(
|
||||
!responseTransformState.isResponsePayloadTransform
|
||||
);
|
||||
resetSampleInput();
|
||||
}}
|
||||
>
|
||||
{!isRequestPayloadTransform ? <AddIcon /> : null}
|
||||
{requestPayloadTransformText}
|
||||
{!responseTransformState.isResponsePayloadTransform ? (
|
||||
<AddIcon />
|
||||
) : null}
|
||||
{responsePayloadTransformText}
|
||||
</Button>
|
||||
</Analytics>
|
||||
{isRequestPayloadTransform ? (
|
||||
<PayloadOptionsTransforms
|
||||
transformationType={transformationType}
|
||||
requestBody={requestBody}
|
||||
requestBodyError={requestBodyError}
|
||||
requestSampleInput={requestSampleInput}
|
||||
requestTransformedBody={requestTransformedBody}
|
||||
resetSampleInput={resetSampleInput}
|
||||
requestBodyOnChange={requestBodyOnChange}
|
||||
requestSampleInputOnChange={requestSampleInputOnChange}
|
||||
{responseTransformState.isResponsePayloadTransform &&
|
||||
responseBodyOnChange ? (
|
||||
<ResponseTransforms
|
||||
responseBody={responseTransformState.responseBody}
|
||||
responseBodyOnChange={responseBodyOnChange}
|
||||
/>
|
||||
) : null}
|
||||
</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;
|
||||
|
@ -55,8 +55,9 @@ const CustomInputAutoSuggest: React.FC<CustomInputAutoSuggestProps> = ({
|
||||
setSuggestions(getSuggestions(value));
|
||||
};
|
||||
|
||||
const getSuggestionValue: GetSuggestionValue<AutoSuggestOption> =
|
||||
suggestion => suggestion.value;
|
||||
const getSuggestionValue: GetSuggestionValue<
|
||||
AutoSuggestOption
|
||||
> = suggestion => suggestion.value;
|
||||
|
||||
const onSuggestionsClearRequested = () => {
|
||||
setSuggestions([]);
|
||||
|
@ -9,7 +9,7 @@
|
||||
z-index: 100;
|
||||
opacity: 0.3;
|
||||
&:hover {
|
||||
opacity: 1.0;
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -19,4 +19,4 @@
|
||||
right: 28px;
|
||||
z-index: 100;
|
||||
font-style: italic;
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
@import "../Common.module";
|
||||
@import '../Common.module';
|
||||
|
||||
.data_dropdown_wrapper {
|
||||
display: inline-block;
|
||||
@ -31,7 +31,7 @@
|
||||
text-align: left;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
|
||||
// &:hover {
|
||||
// background-color: #eee;
|
||||
// }
|
||||
@ -54,9 +54,9 @@
|
||||
|
||||
.dropdownRight:before,
|
||||
.dropdownBottom:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
border: solid 5px transparent;
|
||||
content: '';
|
||||
position: absolute;
|
||||
border: solid 5px transparent;
|
||||
z-index: 10000;
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
@import "../Common.module";
|
||||
@import '../Common.module';
|
||||
|
||||
.queryBox {
|
||||
box-sizing: border-box;
|
||||
@ -8,7 +8,7 @@
|
||||
.inputRow {
|
||||
margin: 20px 0;
|
||||
|
||||
div[class^=col-xs-] {
|
||||
div[class^='col-xs-'] {
|
||||
padding-left: 0;
|
||||
padding-right: 2.5px;
|
||||
}
|
||||
@ -19,7 +19,8 @@
|
||||
}
|
||||
|
||||
: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) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
@import "../Common.module";
|
||||
@import '../Common.module';
|
||||
|
||||
.headerInputWidth {
|
||||
width: 300px
|
||||
width: 300px;
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
@import "../../Common.module";
|
||||
@import '../../Common.module';
|
||||
|
||||
.editorExpanded {
|
||||
margin: 10px 0;
|
||||
@ -15,4 +15,4 @@
|
||||
|
||||
.editorContent {
|
||||
padding: 10px 15px;
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
@import '../../Common.module';
|
||||
|
||||
.displayFlexContainer {
|
||||
@ -273,4 +272,4 @@
|
||||
height: 17px;
|
||||
width: 17px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
@import "../../Common.module";
|
||||
@import '../../Common.module';
|
||||
|
||||
.common_header_wrapper {
|
||||
.defaultWidth {
|
||||
|
@ -1,4 +1,4 @@
|
||||
@import "../../Common.module";
|
||||
@import '../../Common.module';
|
||||
|
||||
.loader_ml {
|
||||
margin-left: 3px;
|
||||
|
@ -1,4 +1,4 @@
|
||||
@import "../../Common.module";
|
||||
@import '../../Common.module';
|
||||
|
||||
.container {
|
||||
}
|
||||
@ -42,7 +42,8 @@
|
||||
padding: 7px 0;
|
||||
transition: color 0.5s;
|
||||
|
||||
a,a:visited {
|
||||
a,
|
||||
a:visited {
|
||||
/* Taken from boostrap navbar-inverse-link-color variables */
|
||||
color: lighten(lighten(#000, 46.7%), 15%);
|
||||
}
|
||||
@ -61,7 +62,7 @@
|
||||
transition: color 0.5s;
|
||||
pointer: cursor;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.main {
|
||||
|
@ -1,4 +1,4 @@
|
||||
@import "../Common.module";
|
||||
@import '../Common.module';
|
||||
|
||||
.qb_nested {
|
||||
margin-top: 5px;
|
||||
@ -23,11 +23,10 @@
|
||||
color: #999;
|
||||
|
||||
select option {
|
||||
color: #555
|
||||
color: #555;
|
||||
}
|
||||
}
|
||||
|
||||
.qb_unselected_key {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
|
@ -57,22 +57,25 @@
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.copyGenerated img, .copyExecution img {
|
||||
.copyGenerated img,
|
||||
.copyExecution img {
|
||||
width: 20px;
|
||||
opacity: .6;
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.copyGenerated img:hover, .copyExecution img:hover {
|
||||
.copyGenerated img:hover,
|
||||
.copyExecution img:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.copyGenerated:focus, .copyExecution:focus {
|
||||
.copyGenerated:focus,
|
||||
.copyExecution:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.copyTooltip {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.copyTooltip i {
|
||||
@ -80,36 +83,36 @@
|
||||
}
|
||||
|
||||
.copyTooltip .tooltiptext {
|
||||
background-color: #555;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border-radius: 6px;
|
||||
padding: 4px 0px;
|
||||
font-size: 14px;
|
||||
position: absolute;
|
||||
z-index: 1000000000;
|
||||
right: -21px;
|
||||
bottom: 30px;
|
||||
opacity: 0;
|
||||
-webkit-transition: opacity 0.3s;
|
||||
transition: opacity 0.3s;
|
||||
background-color: #555;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border-radius: 6px;
|
||||
padding: 4px 0px;
|
||||
font-size: 14px;
|
||||
position: absolute;
|
||||
z-index: 1000000000;
|
||||
right: -21px;
|
||||
bottom: 30px;
|
||||
opacity: 0;
|
||||
-webkit-transition: opacity 0.3s;
|
||||
transition: opacity 0.3s;
|
||||
display: none;
|
||||
width: 57px;
|
||||
}
|
||||
|
||||
.copyTooltip .tooltiptext::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 26px;
|
||||
right: 22px;
|
||||
margin-left: -5px;
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
border-color: #555 transparent transparent transparent;
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 26px;
|
||||
right: 22px;
|
||||
margin-left: -5px;
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
border-color: #555 transparent transparent transparent;
|
||||
}
|
||||
|
||||
.copyTooltip:hover .tooltiptext {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
display: block;
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
display: block;
|
||||
}
|
||||
|
@ -1,3 +1,3 @@
|
||||
.tooltipIcon{
|
||||
.tooltipIcon {
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
@import "../Common.module";
|
||||
@import '../Common.module';
|
||||
|
||||
.warningSymbol {
|
||||
color: #d9534f;
|
||||
}
|
||||
}
|
||||
|
@ -192,7 +192,7 @@ export function getAllJsonPaths(
|
||||
const handleSubJson = (subJson: any, newPrefix: string) => {
|
||||
const subPaths = getAllJsonPaths(subJson, leafKeys, newPrefix);
|
||||
|
||||
subPaths.forEach((subPath: typeof subPaths[0]) => {
|
||||
subPaths.forEach((subPath: (typeof subPaths)[0]) => {
|
||||
paths.push(subPath);
|
||||
});
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
@import "../../Common/Common.module";
|
||||
@import '../../Common/Common.module';
|
||||
|
||||
.addPaddCommom {
|
||||
padding: 10px 0;
|
||||
@ -52,7 +52,7 @@
|
||||
.commonBtn {
|
||||
text-align: center;
|
||||
padding: 20px 0;
|
||||
padding-bottom: 10px
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.readMore {
|
||||
@ -61,7 +61,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.iconWrapper{
|
||||
.iconWrapper {
|
||||
padding: 20px 0;
|
||||
|
||||
.icon {
|
||||
@ -119,7 +119,8 @@
|
||||
.inputLabel {
|
||||
margin-left: 0;
|
||||
|
||||
input, select {
|
||||
input,
|
||||
select {
|
||||
width: 300px;
|
||||
}
|
||||
}
|
||||
@ -140,7 +141,7 @@
|
||||
}
|
||||
|
||||
.red_button {
|
||||
color: #FFF;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
a {
|
||||
@ -166,7 +167,6 @@
|
||||
.set_line_height {
|
||||
line-height: 26px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.actionsImg {
|
||||
@ -193,7 +193,7 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
a{
|
||||
a {
|
||||
color: #909090;
|
||||
}
|
||||
|
||||
@ -260,24 +260,24 @@
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.instructionsWrapper, .instructionsWrapperPos {
|
||||
.instructionsWrapper,
|
||||
.instructionsWrapperPos {
|
||||
margin-top: 20px;
|
||||
border-top: 1px solid #DEDEDE;
|
||||
border-top: 1px solid #dedede;
|
||||
.instructions {
|
||||
padding: 12px 0;
|
||||
}
|
||||
}
|
||||
.instructionsWrapper
|
||||
{
|
||||
.instructionsWrapper {
|
||||
position: relative;
|
||||
}
|
||||
.instructionsWrapperPos
|
||||
{
|
||||
.instructionsWrapperPos {
|
||||
position: static;
|
||||
}
|
||||
.instructionsWrapper:hover, .instructionsWrapperPos:hover {
|
||||
.instructionsWrapper:hover,
|
||||
.instructionsWrapperPos:hover {
|
||||
.instructions {
|
||||
color: #505050
|
||||
color: #505050;
|
||||
}
|
||||
|
||||
.rightArrow {
|
||||
|
@ -1 +1 @@
|
||||
@import '../../../Common/Common.module';
|
||||
@import '../../../Common/Common.module';
|
||||
|
@ -86,8 +86,8 @@ const acceptedGQLTypes = [
|
||||
'Double',
|
||||
] as const;
|
||||
export type VariableData = {
|
||||
kind: typeof acceptedTypeKind[number] | 'Unsupported';
|
||||
type: typeof acceptedGQLTypes[number];
|
||||
kind: (typeof acceptedTypeKind)[number] | 'Unsupported';
|
||||
type: (typeof acceptedGQLTypes)[number];
|
||||
name: string;
|
||||
};
|
||||
|
||||
|
@ -10,27 +10,28 @@ import IntrospectionTable from './IntrospectionTable';
|
||||
|
||||
interface IntrospectionOptionsComponentProps extends InjectedProps {}
|
||||
|
||||
const IntrospectionOptionsComponent: React.FC<IntrospectionOptionsComponentProps> =
|
||||
({ metadata, allRoles, dispatch }) => {
|
||||
// Fire on component load, so that pro console doesn't crash on undefined metadata
|
||||
useEffect(() => {
|
||||
dispatch(exportMetadata());
|
||||
}, []);
|
||||
const IntrospectionOptionsComponent: React.FC<
|
||||
IntrospectionOptionsComponentProps
|
||||
> = ({ metadata, allRoles, dispatch }) => {
|
||||
// Fire on component load, so that pro console doesn't crash on undefined metadata
|
||||
useEffect(() => {
|
||||
dispatch(exportMetadata());
|
||||
}, []);
|
||||
|
||||
const disabledRoles =
|
||||
metadata?.graphql_schema_introspection?.disabled_for_roles ?? [];
|
||||
const disabledRoles =
|
||||
metadata?.graphql_schema_introspection?.disabled_for_roles ?? [];
|
||||
|
||||
const tableData = allRoles.map(role => ({
|
||||
roleName: role,
|
||||
instrospectionIsDisabled: disabledRoles.includes(role),
|
||||
}));
|
||||
const tableData = allRoles.map(role => ({
|
||||
roleName: role,
|
||||
instrospectionIsDisabled: disabledRoles.includes(role),
|
||||
}));
|
||||
|
||||
return (
|
||||
<SecurityTabs tabName="introspection">
|
||||
<IntrospectionTable rows={tableData} />
|
||||
</SecurityTabs>
|
||||
);
|
||||
};
|
||||
return (
|
||||
<SecurityTabs tabName="introspection">
|
||||
<IntrospectionTable rows={tableData} />
|
||||
</SecurityTabs>
|
||||
);
|
||||
};
|
||||
|
||||
const mapDispatchToProps = (dispatch: Dispatch) => ({
|
||||
dispatch,
|
||||
|
@ -1,5 +1,5 @@
|
||||
@import "../../../Common/Common.module";
|
||||
@import "../../../Common/TextAreaWithCopy/TextAreaWithCopy.module";
|
||||
@import '../../../Common/Common.module';
|
||||
@import '../../../Common/TextAreaWithCopy/TextAreaWithCopy.module';
|
||||
|
||||
.wd100 {
|
||||
width: 100%;
|
||||
@ -11,7 +11,7 @@
|
||||
height: 0;
|
||||
border-top: 8px solid transparent;
|
||||
border-bottom: 8px solid transparent;
|
||||
border-right:8px solid #fff;
|
||||
border-right: 8px solid #fff;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 20px;
|
||||
@ -32,7 +32,7 @@
|
||||
}
|
||||
|
||||
.commonBorBottom {
|
||||
border-bottom: 1px solid #DEDEDE;
|
||||
border-bottom: 1px solid #dedede;
|
||||
}
|
||||
|
||||
.addPaddLeft {
|
||||
@ -59,12 +59,12 @@
|
||||
top: 60px;
|
||||
left: 524px;
|
||||
}
|
||||
.popupWrapper
|
||||
{
|
||||
.popupWrapper {
|
||||
bottom: 0px;
|
||||
left: 244px;
|
||||
}
|
||||
.popupWrapper, .popupWrapperPos {
|
||||
.popupWrapper,
|
||||
.popupWrapperPos {
|
||||
box-shadow: 0 0 14px 0 rgba(0, 0, 0, 0.16);
|
||||
background-color: #ffffff;
|
||||
position: absolute;
|
||||
@ -90,7 +90,6 @@
|
||||
}
|
||||
|
||||
.copyGenerated {
|
||||
|
||||
}
|
||||
|
||||
.copyTooltip .tooltiptext::after {
|
||||
|
@ -1 +1 @@
|
||||
@import "../../../Common/Common.module";
|
||||
@import '../../../Common/Common.module';
|
||||
|
@ -33,46 +33,47 @@ interface FrequentlyUsedColumnSelectorProps {
|
||||
dispatch?: Dispatch | null;
|
||||
}
|
||||
|
||||
const FrequentlyUsedColumnSelector: React.VFC<FrequentlyUsedColumnSelectorProps> =
|
||||
({ onSelect, postgresVersion, action = null, dispatch = null }) => {
|
||||
const frequentlyUsedColumnsOptions = frequentlyUsedColumns
|
||||
.filter(fuc => !action || fuc.validFor.includes(action))
|
||||
.filter(col =>
|
||||
postgresVersion && col.minPGVersion
|
||||
? parseFloat(postgresVersion) >= col.minPGVersion
|
||||
: true
|
||||
)
|
||||
.map(fuc => {
|
||||
const { title, subTitle } = getFreqUsedColDisplayInfo(fuc);
|
||||
return {
|
||||
content: (
|
||||
const FrequentlyUsedColumnSelector: React.VFC<
|
||||
FrequentlyUsedColumnSelectorProps
|
||||
> = ({ onSelect, postgresVersion, action = null, dispatch = null }) => {
|
||||
const frequentlyUsedColumnsOptions = frequentlyUsedColumns
|
||||
.filter(fuc => !action || fuc.validFor.includes(action))
|
||||
.filter(col =>
|
||||
postgresVersion && col.minPGVersion
|
||||
? parseFloat(postgresVersion) >= col.minPGVersion
|
||||
: true
|
||||
)
|
||||
.map(fuc => {
|
||||
const { title, subTitle } = getFreqUsedColDisplayInfo(fuc);
|
||||
return {
|
||||
content: (
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<b>{title}</b>
|
||||
</div>
|
||||
<div>{subTitle}</div>
|
||||
<b>{title}</b>
|
||||
</div>
|
||||
),
|
||||
onClick: () => (dispatch ? dispatch(onSelect(fuc)) : onSelect(fuc)),
|
||||
};
|
||||
});
|
||||
<div>{subTitle}</div>
|
||||
</div>
|
||||
),
|
||||
onClick: () => (dispatch ? dispatch(onSelect(fuc)) : onSelect(fuc)),
|
||||
};
|
||||
});
|
||||
|
||||
return (
|
||||
<Dropdown
|
||||
testId="frequently-used-columns"
|
||||
options={frequentlyUsedColumnsOptions}
|
||||
data-test="frequently-used-columns"
|
||||
position="bottom"
|
||||
key="frequently-used-columns"
|
||||
keyPrefix="frequently-used-columns"
|
||||
>
|
||||
{({ onClick }) => (
|
||||
<Button size="sm" onClick={onClick}>
|
||||
+ Frequently used columns
|
||||
</Button>
|
||||
)}
|
||||
</Dropdown>
|
||||
);
|
||||
};
|
||||
return (
|
||||
<Dropdown
|
||||
testId="frequently-used-columns"
|
||||
options={frequentlyUsedColumnsOptions}
|
||||
data-test="frequently-used-columns"
|
||||
position="bottom"
|
||||
key="frequently-used-columns"
|
||||
keyPrefix="frequently-used-columns"
|
||||
>
|
||||
{({ onClick }) => (
|
||||
<Button size="sm" onClick={onClick}>
|
||||
+ Frequently used columns
|
||||
</Button>
|
||||
)}
|
||||
</Dropdown>
|
||||
);
|
||||
};
|
||||
|
||||
export default FrequentlyUsedColumnSelector;
|
||||
|
@ -5,46 +5,47 @@ import { IndicatorCard } from '@/new-components/IndicatorCard';
|
||||
import { FaExclamationTriangle } from 'react-icons/fa';
|
||||
import styles from '../../DataSources.module.scss';
|
||||
|
||||
export const CumulativeMaxConnections: React.VFC<ConnectionSettingsFormProps> =
|
||||
({ connectionDBState, connectionDBStateDispatch }) => (
|
||||
<>
|
||||
<div className={styles.connection_settings_input_layout}>
|
||||
<LabeledInput
|
||||
label="Total Max Connections"
|
||||
tooltipText="Maximum number of database connections"
|
||||
type="number"
|
||||
className={`form-control ${styles.connnection_settings_form_input}`}
|
||||
placeholder="1000"
|
||||
value={
|
||||
connectionDBState.connectionSettings?.total_max_connections ||
|
||||
undefined
|
||||
}
|
||||
onChange={e =>
|
||||
connectionDBStateDispatch({
|
||||
type: 'UPDATE_TOTAL_MAX_CONNECTIONS',
|
||||
data: e.target.value,
|
||||
})
|
||||
}
|
||||
min="0"
|
||||
boldlabel
|
||||
data-test="max-connections"
|
||||
icon={
|
||||
connectionDBState?.connectionSettings?.max_connections !== undefined
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
{connectionDBState?.connectionSettings?.max_connections && (
|
||||
<IndicatorCard status="info">
|
||||
<p className="font-bold">
|
||||
<FaExclamationTriangle className="text-blue-300 pb-1 mr-4 text-lg" />
|
||||
Set Total Max Connections
|
||||
</p>
|
||||
<p className="ml-lg">
|
||||
You have set <b>Max Connections Per Instance</b> which is not
|
||||
recommended for Hasura Cloud. Use <b>Total Max Connections</b>{' '}
|
||||
instead.
|
||||
</p>
|
||||
</IndicatorCard>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
export const CumulativeMaxConnections: React.VFC<
|
||||
ConnectionSettingsFormProps
|
||||
> = ({ connectionDBState, connectionDBStateDispatch }) => (
|
||||
<>
|
||||
<div className={styles.connection_settings_input_layout}>
|
||||
<LabeledInput
|
||||
label="Total Max Connections"
|
||||
tooltipText="Maximum number of database connections"
|
||||
type="number"
|
||||
className={`form-control ${styles.connnection_settings_form_input}`}
|
||||
placeholder="1000"
|
||||
value={
|
||||
connectionDBState.connectionSettings?.total_max_connections ||
|
||||
undefined
|
||||
}
|
||||
onChange={e =>
|
||||
connectionDBStateDispatch({
|
||||
type: 'UPDATE_TOTAL_MAX_CONNECTIONS',
|
||||
data: e.target.value,
|
||||
})
|
||||
}
|
||||
min="0"
|
||||
boldlabel
|
||||
data-test="max-connections"
|
||||
icon={
|
||||
connectionDBState?.connectionSettings?.max_connections !== undefined
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
{connectionDBState?.connectionSettings?.max_connections && (
|
||||
<IndicatorCard status="info">
|
||||
<p className="font-bold">
|
||||
<FaExclamationTriangle className="text-blue-300 pb-1 mr-4 text-lg" />
|
||||
Set Total Max Connections
|
||||
</p>
|
||||
<p className="ml-lg">
|
||||
You have set <b>Max Connections Per Instance</b> which is not
|
||||
recommended for Hasura Cloud. Use <b>Total Max Connections</b>{' '}
|
||||
instead.
|
||||
</p>
|
||||
</IndicatorCard>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
|
@ -9,8 +9,9 @@ export default {
|
||||
argTypes: { onChange: { action: 'change' } },
|
||||
} as ComponentMeta<typeof GraphQLFieldCustomization>;
|
||||
|
||||
export const Playground: ComponentStory<typeof GraphQLFieldCustomization> =
|
||||
args => <GraphQLFieldCustomization {...args} />;
|
||||
export const Playground: ComponentStory<
|
||||
typeof GraphQLFieldCustomization
|
||||
> = args => <GraphQLFieldCustomization {...args} />;
|
||||
|
||||
Playground.args = {
|
||||
rootFields: {
|
||||
|
@ -30,33 +30,34 @@ export const getActionType = (
|
||||
): ConnectDBActions['type'] | null =>
|
||||
CustomizationFieldNameToActionTypeMap[fieldName] || null;
|
||||
|
||||
export const GraphQLFieldCustomizationContainer: React.FC<GraphQLFieldCustomizationContainerProps> =
|
||||
({
|
||||
rootFields,
|
||||
typeNames,
|
||||
namingConvention,
|
||||
connectionDBStateDispatch,
|
||||
connectionDBState,
|
||||
}) => {
|
||||
const onChange = (
|
||||
fieldName: CustomizationFieldName,
|
||||
fieldValue: string | null | undefined
|
||||
) => {
|
||||
const actionType = getActionType(fieldName);
|
||||
if (actionType) {
|
||||
connectionDBStateDispatch({
|
||||
type: actionType,
|
||||
data: fieldValue,
|
||||
} as ConnectDBActions);
|
||||
}
|
||||
};
|
||||
return (
|
||||
<GraphQLFieldCustomization
|
||||
rootFields={rootFields}
|
||||
typeNames={typeNames}
|
||||
namingConvention={namingConvention}
|
||||
onChange={onChange}
|
||||
connectionDBState={connectionDBState}
|
||||
/>
|
||||
);
|
||||
export const GraphQLFieldCustomizationContainer: React.FC<
|
||||
GraphQLFieldCustomizationContainerProps
|
||||
> = ({
|
||||
rootFields,
|
||||
typeNames,
|
||||
namingConvention,
|
||||
connectionDBStateDispatch,
|
||||
connectionDBState,
|
||||
}) => {
|
||||
const onChange = (
|
||||
fieldName: CustomizationFieldName,
|
||||
fieldValue: string | null | undefined
|
||||
) => {
|
||||
const actionType = getActionType(fieldName);
|
||||
if (actionType) {
|
||||
connectionDBStateDispatch({
|
||||
type: actionType,
|
||||
data: fieldValue,
|
||||
} as ConnectDBActions);
|
||||
}
|
||||
};
|
||||
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 {
|
||||
display: inline-block;
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
.table {
|
||||
width: 100%;
|
||||
background-color: white;
|
||||
@ -75,7 +74,7 @@
|
||||
|
||||
.ace_custom_style {
|
||||
border: 1px solid #dddddd;
|
||||
margin: .5em 0;
|
||||
margin: 0.5em 0;
|
||||
background-color: #f8fafb;
|
||||
border-radius: 4px;
|
||||
}
|
||||
@ -85,7 +84,7 @@
|
||||
padding: 4px 8px;
|
||||
font-weight: 600;
|
||||
border-radius: 16px;
|
||||
color: #6B7280;
|
||||
color: #6b7280;
|
||||
border: 1px solid #d1d5db;
|
||||
}
|
||||
|
||||
@ -116,7 +115,7 @@
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
tr:hover .schema_gallery_button{
|
||||
tr:hover .schema_gallery_button {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
|
@ -28,77 +28,77 @@ type TableTrackingCustomizationModalContainerProps = Omit<
|
||||
'onSubmit'
|
||||
> & { dataSource: string; driver: Driver; schema: string };
|
||||
|
||||
export const TableTrackingCustomizationModalContainer: React.FC<TableTrackingCustomizationModalContainerProps> =
|
||||
({ onClose, tableName, schema, dataSource, driver }) => {
|
||||
const { fireNotification } = useFireNotification();
|
||||
const dispatch: ThunkDispatch<ReduxState, unknown, AnyAction> =
|
||||
useDispatch();
|
||||
const mutation = useMetadataMigration({
|
||||
onSuccess: () => {
|
||||
dispatch({ type: REQUEST_SUCCESS });
|
||||
dispatch(updateSchemaInfo()).then(() => {
|
||||
const nextRoute =
|
||||
driver !== 'bigquery'
|
||||
? getTableModifyRoute(schema, dataSource, tableName, true)
|
||||
: getTableBrowseRoute(schema, dataSource, tableName, true);
|
||||
dispatch(_push(nextRoute));
|
||||
dispatch(setSidebarLoading(false));
|
||||
fireNotification({
|
||||
title: 'Success!',
|
||||
message: 'Existing table/view added',
|
||||
type: 'success',
|
||||
});
|
||||
if (onClose) onClose();
|
||||
});
|
||||
},
|
||||
onError: (error: Error) => {
|
||||
export const TableTrackingCustomizationModalContainer: React.FC<
|
||||
TableTrackingCustomizationModalContainerProps
|
||||
> = ({ onClose, tableName, schema, dataSource, driver }) => {
|
||||
const { fireNotification } = useFireNotification();
|
||||
const dispatch: ThunkDispatch<ReduxState, unknown, AnyAction> = useDispatch();
|
||||
const mutation = useMetadataMigration({
|
||||
onSuccess: () => {
|
||||
dispatch({ type: REQUEST_SUCCESS });
|
||||
dispatch(updateSchemaInfo()).then(() => {
|
||||
const nextRoute =
|
||||
driver !== 'bigquery'
|
||||
? getTableModifyRoute(schema, dataSource, tableName, true)
|
||||
: getTableBrowseRoute(schema, dataSource, tableName, true);
|
||||
dispatch(_push(nextRoute));
|
||||
dispatch(setSidebarLoading(false));
|
||||
fireNotification({
|
||||
title: 'Error',
|
||||
message: error?.message ?? 'Error while adding table/view',
|
||||
type: 'error',
|
||||
title: 'Success!',
|
||||
message: 'Existing table/view added',
|
||||
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 requestBody = {
|
||||
type: getTrackTableType(driver) as allowedMetadataTypes,
|
||||
args: {
|
||||
source: dataSource,
|
||||
table: getQualifiedTable({
|
||||
driver,
|
||||
tableName,
|
||||
schema,
|
||||
}),
|
||||
configuration: {
|
||||
custom_name: values.custom_name,
|
||||
custom_root_fields: {
|
||||
select: values.select,
|
||||
select_by_pk: values.select_by_pk,
|
||||
select_aggregate: values.select_aggregate,
|
||||
select_stream: values.select_stream,
|
||||
insert: values.insert,
|
||||
insert_one: values.insert_one,
|
||||
update: values.update,
|
||||
update_by_pk: values.update_by_pk,
|
||||
delete: values.delete,
|
||||
delete_by_pk: values.delete_by_pk,
|
||||
update_many: values.update_many,
|
||||
},
|
||||
const onCustomizationFormSubmit = (values: FormValues) => {
|
||||
const requestBody = {
|
||||
type: getTrackTableType(driver) as allowedMetadataTypes,
|
||||
args: {
|
||||
source: dataSource,
|
||||
table: getQualifiedTable({
|
||||
driver,
|
||||
tableName,
|
||||
schema,
|
||||
}),
|
||||
configuration: {
|
||||
custom_name: values.custom_name,
|
||||
custom_root_fields: {
|
||||
select: values.select,
|
||||
select_by_pk: values.select_by_pk,
|
||||
select_aggregate: values.select_aggregate,
|
||||
select_stream: values.select_stream,
|
||||
insert: values.insert,
|
||||
insert_one: values.insert_one,
|
||||
update: values.update,
|
||||
update_by_pk: values.update_by_pk,
|
||||
delete: values.delete,
|
||||
delete_by_pk: values.delete_by_pk,
|
||||
update_many: values.update_many,
|
||||
},
|
||||
},
|
||||
};
|
||||
mutation.mutate({
|
||||
query: requestBody,
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
return (
|
||||
<TableTrackingCustomizationModal
|
||||
tableName={tableName}
|
||||
onSubmit={onCustomizationFormSubmit}
|
||||
onClose={onClose}
|
||||
isLoading={mutation.isLoading}
|
||||
/>
|
||||
);
|
||||
mutation.mutate({
|
||||
query: requestBody,
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<TableTrackingCustomizationModal
|
||||
tableName={tableName}
|
||||
onSubmit={onCustomizationFormSubmit}
|
||||
onClose={onClose}
|
||||
isLoading={mutation.isLoading}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
@ -21,125 +21,126 @@ export type TableTrackingCustomizationFormProps = {
|
||||
onClose: () => void;
|
||||
};
|
||||
|
||||
export const TableTrackingCustomizationForm: React.VFC<TableTrackingCustomizationFormProps> =
|
||||
props => {
|
||||
const { onClose } = props;
|
||||
export const TableTrackingCustomizationForm: React.VFC<
|
||||
TableTrackingCustomizationFormProps
|
||||
> = props => {
|
||||
const { onClose } = props;
|
||||
|
||||
const {
|
||||
errors,
|
||||
formMethods,
|
||||
handleSubmit,
|
||||
hasValues,
|
||||
isMutateOpen,
|
||||
isQueryOpen,
|
||||
placeholders,
|
||||
reset,
|
||||
setCustomTableName,
|
||||
} = useGqlCustomizationForm(props);
|
||||
const {
|
||||
errors,
|
||||
formMethods,
|
||||
handleSubmit,
|
||||
hasValues,
|
||||
isMutateOpen,
|
||||
isQueryOpen,
|
||||
placeholders,
|
||||
reset,
|
||||
setCustomTableName,
|
||||
} = useGqlCustomizationForm(props);
|
||||
|
||||
return (
|
||||
<FormProvider {...formMethods}>
|
||||
<form onSubmit={formMethods.handleSubmit(handleSubmit)}>
|
||||
<div>
|
||||
<div className="px-sm pb-sm">
|
||||
<SanitizeTips />
|
||||
<div className="mb-4 flex justify-end">
|
||||
<Button disabled={!hasValues} size="sm" onClick={reset}>
|
||||
Clear All Fields
|
||||
</Button>
|
||||
</div>
|
||||
return (
|
||||
<FormProvider {...formMethods}>
|
||||
<form onSubmit={formMethods.handleSubmit(handleSubmit)}>
|
||||
<div>
|
||||
<div className="px-sm pb-sm">
|
||||
<SanitizeTips />
|
||||
<div className="mb-4 flex justify-end">
|
||||
<Button disabled={!hasValues} size="sm" onClick={reset}>
|
||||
Clear All Fields
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
<div className="pl-6">
|
||||
<InputField
|
||||
label="Custom Table Name"
|
||||
fieldName="custom_name"
|
||||
placeholder={placeholders.custom_name}
|
||||
onClear={() => {
|
||||
setCustomTableName('');
|
||||
}}
|
||||
onChange={value => {
|
||||
setCustomTableName(value);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
{errors.custom_name?.type === 'required' && (
|
||||
<div className="grid grid-cols-12 gap-3">
|
||||
<div className="col-span-4 flex items-center" />
|
||||
<div className="col-span-8">
|
||||
<div
|
||||
role="alert"
|
||||
aria-label="custom table name is a required field!"
|
||||
className="text-red-600 flex items-center text-sm pt-1"
|
||||
>
|
||||
<span className="flex items-center">
|
||||
<FaExclamationCircle className="mr-1" />
|
||||
This field is required!
|
||||
</span>
|
||||
</div>
|
||||
<div className="pl-6">
|
||||
<InputField
|
||||
label="Custom Table Name"
|
||||
fieldName="custom_name"
|
||||
placeholder={placeholders.custom_name}
|
||||
onClear={() => {
|
||||
setCustomTableName('');
|
||||
}}
|
||||
onChange={value => {
|
||||
setCustomTableName(value);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
{errors.custom_name?.type === 'required' && (
|
||||
<div className="grid grid-cols-12 gap-3">
|
||||
<div className="col-span-4 flex items-center" />
|
||||
<div className="col-span-8">
|
||||
<div
|
||||
role="alert"
|
||||
aria-label="custom table name is a required field!"
|
||||
className="text-red-600 flex items-center text-sm pt-1"
|
||||
>
|
||||
<span className="flex items-center">
|
||||
<FaExclamationCircle className="mr-1" />
|
||||
This field is required!
|
||||
</span>
|
||||
</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 className="flex items-center">
|
||||
<Collapse
|
||||
defaultOpen={isMutateOpen}
|
||||
title="Mutation"
|
||||
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 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>
|
||||
</Collapse.Content>
|
||||
</Collapse>
|
||||
</div>
|
||||
</div>
|
||||
</Collapse.Content>
|
||||
</Collapse>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Dialog.Footer
|
||||
callToAction="Save"
|
||||
callToActionLoadingText="Saving..."
|
||||
callToDeny="Cancel"
|
||||
onClose={onClose}
|
||||
className="absolute w-full bottom-0"
|
||||
/>
|
||||
<div>
|
||||
<div className="flex items-center">
|
||||
<Collapse
|
||||
defaultOpen={isMutateOpen}
|
||||
title="Mutation"
|
||||
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>
|
||||
</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;
|
||||
};
|
||||
|
||||
export const TableTrackingCustomizationModal: React.FC<TableTrackingCustomizationModalProps> =
|
||||
({
|
||||
tableName,
|
||||
onSubmit,
|
||||
onClose,
|
||||
show = true,
|
||||
currentConfiguration,
|
||||
dialogDescription,
|
||||
}) => {
|
||||
return (
|
||||
<>
|
||||
{show && (
|
||||
<Analytics
|
||||
name="TableTrackingCustomizationModal"
|
||||
{...REDACT_EVERYTHING}
|
||||
export const TableTrackingCustomizationModal: React.FC<
|
||||
TableTrackingCustomizationModalProps
|
||||
> = ({
|
||||
tableName,
|
||||
onSubmit,
|
||||
onClose,
|
||||
show = true,
|
||||
currentConfiguration,
|
||||
dialogDescription,
|
||||
}) => {
|
||||
return (
|
||||
<>
|
||||
{show && (
|
||||
<Analytics
|
||||
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
|
||||
hasBackdrop
|
||||
title={tableName}
|
||||
description={dialogDescription}
|
||||
<TableTrackingCustomizationForm
|
||||
initialTableName={tableName}
|
||||
currentConfiguration={currentConfiguration}
|
||||
onClose={onClose}
|
||||
titleTooltip="Customize table name and root fields for GraphQL operations."
|
||||
contentContainer={{
|
||||
className: 'mb-[60px]',
|
||||
}}
|
||||
>
|
||||
<TableTrackingCustomizationForm
|
||||
initialTableName={tableName}
|
||||
currentConfiguration={currentConfiguration}
|
||||
onClose={onClose}
|
||||
onSubmit={onSubmit}
|
||||
/>
|
||||
</Dialog>
|
||||
</Analytics>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
};
|
||||
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;
|
||||
background-color: transparent;
|
||||
border-bottom: 2px dotted;
|
||||
@ -12,7 +13,8 @@
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.qb_select:focus, .qb_input:focus {
|
||||
.qb_select:focus,
|
||||
.qb_input:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
|
@ -1,9 +1,10 @@
|
||||
@import "../TableModify/ModifyTable.module";
|
||||
@import '../TableModify/ModifyTable.module';
|
||||
|
||||
.permissionsTable {
|
||||
width: 85%;
|
||||
|
||||
td, th {
|
||||
td,
|
||||
th {
|
||||
text-align: center;
|
||||
vertical-align: middle !important;
|
||||
position: relative;
|
||||
@ -13,12 +14,14 @@
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
td:last-child, th:last-child {
|
||||
td:last-child,
|
||||
th:last-child {
|
||||
border-left: 4px double #ddd;
|
||||
width: 10%;
|
||||
}
|
||||
|
||||
td:first-child, th:first-child {
|
||||
td:first-child,
|
||||
th:first-child {
|
||||
overflow: auto;
|
||||
border-right: 4px double #ddd;
|
||||
max-width: 250px;
|
||||
@ -56,9 +59,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
.currEdit, .currEdit:hover {
|
||||
background-color: #FFF3D5;
|
||||
color: #FD9540;
|
||||
.currEdit,
|
||||
.currEdit:hover {
|
||||
background-color: #fff3d5;
|
||||
color: #fd9540;
|
||||
|
||||
.editPermsIcon {
|
||||
display: inline-block;
|
||||
|
@ -14,4 +14,4 @@
|
||||
|
||||
.ant-tree {
|
||||
color: grey;
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
@import "../../../../Common/TableCommon/Table.module";
|
||||
@import '../../../../Common/TableCommon/Table.module';
|
||||
|
||||
.dropdown_wrapper {
|
||||
width: 300px;
|
||||
@ -28,15 +28,13 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.tabletdCenter
|
||||
{
|
||||
.tabletdCenter {
|
||||
height: 21px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.tableArrowCenter
|
||||
{
|
||||
.tableArrowCenter {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@ -56,7 +54,7 @@
|
||||
}
|
||||
|
||||
.invocationSuccess {
|
||||
color: #28a745
|
||||
color: #28a745;
|
||||
}
|
||||
.invocationFailure {
|
||||
color: red;
|
||||
@ -107,7 +105,7 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background-color: #FFF3D5;
|
||||
background-color: #fff3d5;
|
||||
padding: 5px;
|
||||
min-height: 41px;
|
||||
}
|
||||
@ -116,7 +114,7 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background-color: #FFF3D5;
|
||||
background-color: #fff3d5;
|
||||
padding: 5px;
|
||||
min-height: 41px;
|
||||
position: relative;
|
||||
@ -176,7 +174,7 @@
|
||||
}
|
||||
|
||||
i:hover {
|
||||
color: #4D4D4D ;
|
||||
color: #4d4d4d;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -83,4 +83,4 @@
|
||||
"2021-05-18 07:14:19.196511",
|
||||
"f"
|
||||
]
|
||||
]
|
||||
]
|
||||
|
@ -1,222 +1,222 @@
|
||||
[
|
||||
[
|
||||
"id",
|
||||
"event_id",
|
||||
"status",
|
||||
"request",
|
||||
"response",
|
||||
"created_at",
|
||||
"id",
|
||||
"schema_name",
|
||||
"table_name",
|
||||
"trigger_name",
|
||||
"payload",
|
||||
"delivered",
|
||||
"error",
|
||||
"tries",
|
||||
"created_at",
|
||||
"locked",
|
||||
"next_retry_at",
|
||||
"archived"
|
||||
],
|
||||
[
|
||||
"31b4c28c-954d-4871-ba95-a6d7da8d6988",
|
||||
"7bc7b398-f1cd-4761-839d-44971e01be48",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"7bc7b398-f1cd-4761-839d-44971e01be48",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.658771",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
],
|
||||
[
|
||||
"bf1760ee-c628-4b94-b535-1d5453675958",
|
||||
"c3ac48be-a569-4d87-8c52-cb84309002ed",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"c3ac48be-a569-4d87-8c52-cb84309002ed",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.332379",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
],
|
||||
[
|
||||
"5836823f-9104-489e-b339-946b45e266a9",
|
||||
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.831182",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
],
|
||||
[
|
||||
"7b314fa3-fa10-4d1d-9c7b-0799e2a2345c",
|
||||
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.490999",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
],
|
||||
[
|
||||
"c6ec4304-3848-4c4c-a188-ff91ebe61ea0",
|
||||
"7bc7b398-f1cd-4761-839d-44971e01be48",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"7bc7b398-f1cd-4761-839d-44971e01be48",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.658771",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
],
|
||||
[
|
||||
"8c88c745-29eb-4637-ad2d-85f3d6ba82c4",
|
||||
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.490999",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
],
|
||||
[
|
||||
"48532d4d-ee73-4245-a8f6-378b034eb4f0",
|
||||
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.831182",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
],
|
||||
[
|
||||
"33105396-99dc-446c-ac7f-d93c38ceb686",
|
||||
"c3ac48be-a569-4d87-8c52-cb84309002ed",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"c3ac48be-a569-4d87-8c52-cb84309002ed",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.332379",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
],
|
||||
[
|
||||
"f7980cf5-7520-489a-87f1-f658773f9e60",
|
||||
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.490999",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
],
|
||||
[
|
||||
"18e6a7de-c38d-4f56-90f5-d0cc1298ea97",
|
||||
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.831182",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
]
|
||||
]
|
||||
[
|
||||
"id",
|
||||
"event_id",
|
||||
"status",
|
||||
"request",
|
||||
"response",
|
||||
"created_at",
|
||||
"id",
|
||||
"schema_name",
|
||||
"table_name",
|
||||
"trigger_name",
|
||||
"payload",
|
||||
"delivered",
|
||||
"error",
|
||||
"tries",
|
||||
"created_at",
|
||||
"locked",
|
||||
"next_retry_at",
|
||||
"archived"
|
||||
],
|
||||
[
|
||||
"31b4c28c-954d-4871-ba95-a6d7da8d6988",
|
||||
"7bc7b398-f1cd-4761-839d-44971e01be48",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"7bc7b398-f1cd-4761-839d-44971e01be48",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.658771",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
],
|
||||
[
|
||||
"bf1760ee-c628-4b94-b535-1d5453675958",
|
||||
"c3ac48be-a569-4d87-8c52-cb84309002ed",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"c3ac48be-a569-4d87-8c52-cb84309002ed",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.332379",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
],
|
||||
[
|
||||
"5836823f-9104-489e-b339-946b45e266a9",
|
||||
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.831182",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
],
|
||||
[
|
||||
"7b314fa3-fa10-4d1d-9c7b-0799e2a2345c",
|
||||
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.490999",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
],
|
||||
[
|
||||
"c6ec4304-3848-4c4c-a188-ff91ebe61ea0",
|
||||
"7bc7b398-f1cd-4761-839d-44971e01be48",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"7bc7b398-f1cd-4761-839d-44971e01be48",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.658771",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
],
|
||||
[
|
||||
"8c88c745-29eb-4637-ad2d-85f3d6ba82c4",
|
||||
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.490999",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
],
|
||||
[
|
||||
"48532d4d-ee73-4245-a8f6-378b034eb4f0",
|
||||
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.831182",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
],
|
||||
[
|
||||
"33105396-99dc-446c-ac7f-d93c38ceb686",
|
||||
"c3ac48be-a569-4d87-8c52-cb84309002ed",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"c3ac48be-a569-4d87-8c52-cb84309002ed",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.332379",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
],
|
||||
[
|
||||
"f7980cf5-7520-489a-87f1-f658773f9e60",
|
||||
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"423e5a24-d4e0-493a-83df-ecff0eca2398",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.490999",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
],
|
||||
[
|
||||
"18e6a7de-c38d-4f56-90f5-d0cc1298ea97",
|
||||
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
||||
"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\"}",
|
||||
"{\"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",
|
||||
"338eec2d-0c1f-4358-ae12-05d3f73a85c6",
|
||||
"public",
|
||||
"users",
|
||||
"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\"}}",
|
||||
"f",
|
||||
"t",
|
||||
"5",
|
||||
"2021-05-18 07:39:50.831182",
|
||||
"NULL",
|
||||
"NULL",
|
||||
"f"
|
||||
]
|
||||
]
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -332,4 +332,4 @@
|
||||
width: 15px;
|
||||
min-width: 15px;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ const InheritedRolesEditor: React.FC<EditorProps> = ({
|
||||
const [isCollapsed, setIsCollapsed] = useState(props.isCollapsed);
|
||||
|
||||
type Option = {
|
||||
value: typeof allRoles[number];
|
||||
value: (typeof allRoles)[number];
|
||||
isChecked: true | false;
|
||||
};
|
||||
|
||||
|
@ -150,24 +150,26 @@ CloudMetadataKo.parameters = {
|
||||
msw: mockHandlers({}),
|
||||
};
|
||||
|
||||
export const ProLitePrometheusEnabled: ComponentStory<typeof Sidebar> =
|
||||
args => {
|
||||
// eslint-disable-next-line no-underscore-dangle
|
||||
window.__env.consoleType = 'pro-lite';
|
||||
return <Sidebar {...args} />;
|
||||
};
|
||||
export const ProLitePrometheusEnabled: ComponentStory<
|
||||
typeof Sidebar
|
||||
> = args => {
|
||||
// eslint-disable-next-line no-underscore-dangle
|
||||
window.__env.consoleType = 'pro-lite';
|
||||
return <Sidebar {...args} />;
|
||||
};
|
||||
ProLitePrometheusEnabled.storyName = '💠 Demo Pro Lite Prometheus Enabled';
|
||||
ProLitePrometheusEnabled.args = generateArgs();
|
||||
ProLitePrometheusEnabled.parameters = {
|
||||
msw: mockHandlers({ prometheusEnabled: true }),
|
||||
};
|
||||
|
||||
export const ProLitePrometheusDisabled: ComponentStory<typeof Sidebar> =
|
||||
args => {
|
||||
// eslint-disable-next-line no-underscore-dangle
|
||||
window.__env.consoleType = 'pro-lite';
|
||||
return <Sidebar {...args} />;
|
||||
};
|
||||
export const ProLitePrometheusDisabled: ComponentStory<
|
||||
typeof Sidebar
|
||||
> = args => {
|
||||
// eslint-disable-next-line no-underscore-dangle
|
||||
window.__env.consoleType = 'pro-lite';
|
||||
return <Sidebar {...args} />;
|
||||
};
|
||||
ProLitePrometheusDisabled.storyName = '💠 Demo Pro Lite Prometheus Disabled';
|
||||
ProLitePrometheusDisabled.args = generateArgs();
|
||||
ProLitePrometheusDisabled.parameters = {
|
||||
|
@ -46,7 +46,7 @@ export const drivers = [
|
||||
'cockroach',
|
||||
'alloy',
|
||||
] as const;
|
||||
export type Driver = typeof drivers[number];
|
||||
export type Driver = (typeof drivers)[number];
|
||||
|
||||
export const driverToLabel: Record<Driver, string> = {
|
||||
postgres: 'PostgreSQL',
|
||||
|
@ -7,37 +7,38 @@ export interface OasGeneratorMoreInfoProps {
|
||||
operation: Operation;
|
||||
}
|
||||
|
||||
export const OasGeneratorMoreInfo: React.FC<OasGeneratorMoreInfoProps> =
|
||||
props => {
|
||||
const { operation } = props;
|
||||
const [isExpanded, setExpanded] = React.useState(false);
|
||||
return (
|
||||
<div>
|
||||
<div
|
||||
className="flex justify-between cursor-pointer"
|
||||
onClick={() => setExpanded(!isExpanded)}
|
||||
>
|
||||
<div>{operation.path}</div>
|
||||
<div>
|
||||
More info{' '}
|
||||
<FaChevronDown
|
||||
className={clsx(
|
||||
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'}
|
||||
export const OasGeneratorMoreInfo: React.FC<
|
||||
OasGeneratorMoreInfoProps
|
||||
> = props => {
|
||||
const { operation } = props;
|
||||
const [isExpanded, setExpanded] = React.useState(false);
|
||||
return (
|
||||
<div>
|
||||
<div
|
||||
className="flex justify-between cursor-pointer"
|
||||
onClick={() => setExpanded(!isExpanded)}
|
||||
>
|
||||
<div>{operation.path}</div>
|
||||
<div>
|
||||
More info{' '}
|
||||
<FaChevronDown
|
||||
className={clsx(
|
||||
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>
|
||||
);
|
||||
};
|
||||
|
@ -7,33 +7,34 @@ interface AllowListSidebarSearchFormProps {
|
||||
setSearch: (search: string) => void;
|
||||
}
|
||||
|
||||
export const AllowListSidebarSearchForm: React.FC<AllowListSidebarSearchFormProps> =
|
||||
({ setSearch }) => {
|
||||
const schema = z.object({
|
||||
search: z.string(),
|
||||
});
|
||||
export const AllowListSidebarSearchForm: React.FC<
|
||||
AllowListSidebarSearchFormProps
|
||||
> = ({ setSearch }) => {
|
||||
const schema = z.object({
|
||||
search: z.string(),
|
||||
});
|
||||
|
||||
const {
|
||||
methods: { watch },
|
||||
Form,
|
||||
} = useConsoleForm({
|
||||
schema,
|
||||
});
|
||||
const {
|
||||
methods: { watch },
|
||||
Form,
|
||||
} = useConsoleForm({
|
||||
schema,
|
||||
});
|
||||
|
||||
const search = watch('search');
|
||||
const search = watch('search');
|
||||
|
||||
useEffect(() => {
|
||||
setSearch(search);
|
||||
}, [search]);
|
||||
useEffect(() => {
|
||||
setSearch(search);
|
||||
}, [search]);
|
||||
|
||||
return (
|
||||
<Form onSubmit={() => {}} className="pl-0 pr-0 !p-0 bg-transparent">
|
||||
<InputField
|
||||
id="search"
|
||||
placeholder="Search Collections..."
|
||||
icon={<FaSearch />}
|
||||
name="search"
|
||||
/>
|
||||
</Form>
|
||||
);
|
||||
};
|
||||
return (
|
||||
<Form onSubmit={() => {}} className="pl-0 pr-0 !p-0 bg-transparent">
|
||||
<InputField
|
||||
id="search"
|
||||
placeholder="Search Collections..."
|
||||
icon={<FaSearch />}
|
||||
name="search"
|
||||
/>
|
||||
</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