2023-04-03 08:18:01 -07:00
import type { INodeProperties } from 'n8n-workflow' ;
export const optionsCollection : INodeProperties = {
displayName : 'Options' ,
name : 'options' ,
type : 'collection' ,
placeholder : 'Add Option' ,
default : { } ,
options : [
{
displayName : 'Cascade' ,
name : 'cascade' ,
type : 'boolean' ,
default : false ,
description :
'Whether to drop all objects that depend on the table, such as views and sequences' ,
displayOptions : {
show : {
'/operation' : [ 'deleteTable' ] ,
} ,
hide : {
'/deleteCommand' : [ 'delete' ] ,
} ,
} ,
} ,
{
displayName : 'Connection Timeout' ,
name : 'connectionTimeout' ,
type : 'number' ,
default : 30 ,
description : 'Number of seconds reserved for connecting to the database' ,
} ,
{
displayName : 'Query Batching' ,
name : 'queryBatching' ,
type : 'options' ,
noDataExpression : true ,
options : [
{
name : 'Single Query' ,
value : 'single' ,
description : 'A single query for all incoming items' ,
} ,
{
name : 'Independently' ,
value : 'independently' ,
description : 'Execute one query per incoming item of the run' ,
} ,
{
name : 'Transaction' ,
value : 'transaction' ,
description :
'Execute all queries in a transaction, if a failure occurs, all changes are rolled back' ,
} ,
] ,
default : 'single' ,
description : 'The way queries should be sent to the database' ,
} ,
{
displayName : 'Query Parameters' ,
name : 'queryReplacement' ,
type : 'string' ,
default : '' ,
description :
2023-07-12 03:26:46 -07:00
'Comma-separated list of the values you want to use as query parameters. <a href="https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.postgres/#use-query-parameters" target="_blank">More info</a>.' ,
2023-04-03 08:18:01 -07:00
hint : 'Comma-separated list of values: reference them in your query as $1, $2, $3…' ,
placeholder : 'e.g. value1,value2,value3' ,
displayOptions : {
show : { '/operation' : [ 'executeQuery' ] } ,
} ,
} ,
{
// eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-multi-options
displayName : 'Output Columns' ,
name : 'outputColumns' ,
type : 'multiOptions' ,
2023-07-12 03:26:46 -07:00
// eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-multi-options
2023-04-03 08:18:01 -07:00
description :
2023-07-12 03:26:46 -07:00
'Choose from the list, or specify IDs using an <a href="https://docs.n8n.io/code-examples/expressions/" target="_blank">expression</a>' ,
2023-04-03 08:18:01 -07:00
typeOptions : {
loadOptionsMethod : 'getColumnsMultiOptions' ,
loadOptionsDependsOn : [ 'table.value' ] ,
} ,
default : [ ] ,
displayOptions : {
show : { '/operation' : [ 'select' , 'insert' , 'update' , 'upsert' ] } ,
} ,
} ,
{
displayName : 'Output Large-Format Numbers As' ,
name : 'largeNumbersOutput' ,
type : 'options' ,
options : [
{
name : 'Numbers' ,
value : 'numbers' ,
} ,
{
name : 'Text' ,
value : 'text' ,
description :
'Use this if you expect numbers longer than 16 digits (otherwise numbers may be incorrect)' ,
} ,
] ,
hint : 'Applies to NUMERIC and BIGINT columns only' ,
default : 'text' ,
} ,
{
displayName : 'Skip on Conflict' ,
name : 'skipOnConflict' ,
type : 'boolean' ,
default : false ,
description :
'Whether to skip the row and do not throw error if a unique constraint or exclusion constraint is violated' ,
displayOptions : {
show : {
'/operation' : [ 'insert' ] ,
} ,
} ,
} ,
{
displayName : 'Replace Empty Strings with NULL' ,
name : 'replaceEmptyStrings' ,
type : 'boolean' ,
default : false ,
description :
'Whether to replace empty strings with NULL in input, could be useful when data come from spreadsheet' ,
displayOptions : {
show : {
'/operation' : [ 'insert' , 'update' , 'upsert' , 'executeQuery' ] ,
} ,
} ,
} ,
] ,
} ;
export const schemaRLC : INodeProperties = {
displayName : 'Schema' ,
name : 'schema' ,
type : 'resourceLocator' ,
default : { mode : 'list' , value : 'public' } ,
required : true ,
placeholder : 'e.g. public' ,
description : 'The schema that contains the table you want to work on' ,
modes : [
{
displayName : 'From List' ,
name : 'list' ,
type : 'list' ,
typeOptions : {
searchListMethod : 'schemaSearch' ,
} ,
} ,
{
displayName : 'By Name' ,
name : 'name' ,
type : 'string' ,
} ,
] ,
} ;
export const tableRLC : INodeProperties = {
displayName : 'Table' ,
name : 'table' ,
type : 'resourceLocator' ,
default : { mode : 'list' , value : '' } ,
required : true ,
description : 'The table you want to work on' ,
modes : [
{
displayName : 'From List' ,
name : 'list' ,
type : 'list' ,
typeOptions : {
searchListMethod : 'tableSearch' ,
} ,
} ,
{
displayName : 'By Name' ,
name : 'name' ,
type : 'string' ,
} ,
] ,
} ;
export const whereFixedCollection : INodeProperties = {
displayName : 'Select Rows' ,
name : 'where' ,
type : 'fixedCollection' ,
typeOptions : {
multipleValues : true ,
} ,
placeholder : 'Add Condition' ,
default : { } ,
description : 'If not set, all rows will be selected' ,
options : [
{
displayName : 'Values' ,
name : 'values' ,
values : [
{
// eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-options
displayName : 'Column' ,
name : 'column' ,
type : 'options' ,
2023-07-12 03:26:46 -07:00
// eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options
2023-04-03 08:18:01 -07:00
description :
2023-07-12 03:26:46 -07:00
'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/" target="_blank">expression</a>' ,
2023-04-03 08:18:01 -07:00
default : '' ,
placeholder : 'e.g. ID' ,
typeOptions : {
loadOptionsMethod : 'getColumns' ,
loadOptionsDependsOn : [ 'schema.value' , 'table.value' ] ,
} ,
} ,
{
displayName : 'Operator' ,
name : 'condition' ,
type : 'options' ,
description :
"The operator to check the column against. When using 'LIKE' operator percent sign ( %) matches zero or more characters, underscore ( _ ) matches any single character." ,
// eslint-disable-next-line n8n-nodes-base/node-param-options-type-unsorted-items
options : [
{
name : 'Equal' ,
value : 'equal' ,
} ,
{
name : 'Not Equal' ,
value : '!=' ,
} ,
{
name : 'Like' ,
value : 'LIKE' ,
} ,
{
name : 'Greater Than' ,
value : '>' ,
} ,
{
name : 'Less Than' ,
value : '<' ,
} ,
{
name : 'Greater Than Or Equal' ,
value : '>=' ,
} ,
{
name : 'Less Than Or Equal' ,
value : '<=' ,
} ,
{
name : 'Is Null' ,
value : 'IS NULL' ,
} ,
] ,
default : 'equal' ,
} ,
{
displayName : 'Value' ,
name : 'value' ,
type : 'string' ,
default : '' ,
} ,
] ,
} ,
] ,
} ;
export const sortFixedCollection : INodeProperties = {
displayName : 'Sort' ,
name : 'sort' ,
type : 'fixedCollection' ,
typeOptions : {
multipleValues : true ,
} ,
placeholder : 'Add Sort Rule' ,
default : { } ,
options : [
{
displayName : 'Values' ,
name : 'values' ,
values : [
{
// eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-options
displayName : 'Column' ,
name : 'column' ,
type : 'options' ,
2023-07-12 03:26:46 -07:00
// eslint-disable-next-line n8n-nodes-base/node-param-description-wrong-for-dynamic-options
2023-04-03 08:18:01 -07:00
description :
2023-07-12 03:26:46 -07:00
'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/" target="_blank">expression</a>' ,
2023-04-03 08:18:01 -07:00
default : '' ,
typeOptions : {
loadOptionsMethod : 'getColumns' ,
loadOptionsDependsOn : [ 'schema.value' , 'table.value' ] ,
} ,
} ,
{
displayName : 'Direction' ,
name : 'direction' ,
type : 'options' ,
options : [
{
name : 'ASC' ,
value : 'ASC' ,
} ,
{
name : 'DESC' ,
value : 'DESC' ,
} ,
] ,
default : 'ASC' ,
} ,
] ,
} ,
] ,
} ;
export const combineConditionsCollection : INodeProperties = {
displayName : 'Combine Conditions' ,
name : 'combineConditions' ,
type : 'options' ,
description :
'How to combine the conditions defined in "Select Rows": AND requires all conditions to be true, OR requires at least one condition to be true' ,
options : [
{
name : 'AND' ,
value : 'AND' ,
description : 'Only rows that meet all the conditions are selected' ,
} ,
{
name : 'OR' ,
value : 'OR' ,
description : 'Rows that meet at least one condition are selected' ,
} ,
] ,
default : 'AND' ,
} ;