ToolJet/plugins/packages/postgresql/lib/manifest.json
Akshay 4b6e6ee5cd
Feature: Dynamic form validations (#12292)
* fixed datasource page crash as function definition was referenced wrongly (#11562)

* Add new dynamicform

* Refactor postgres manifest file

* Add new input-v3 component

* Conditionally render DynamicformV2

* Make change to design system component

* Remove key-value label over header input and increase width

* Add validation function for individual inputs

* Add validations on datasource creation

* Update custom input wrapper

* Update manifest file

* Add validation setup for dynamic form with JSON schema

* Fix input labels

* Add more validation checks

* Update manifest

* Remove console logs

* Add props for header component

* Skip validation for encrypted fields

* Add validations while saving datasource

* Remove validations for connection-options

* Add fetch manifest function

* Centralise validation errors

* Add property name in datapath

* Initialize and map validation errors to property

* Reuse validationErrors while saving datasource

* Bypass design system validation by implementing custom validation prop

* Skip initial render validation

Skip validation message for unchanged elements

* Remove fetchManifest

* Add text input for connection string

* Add workflow schema

* Fix double border on error or success

* Remove redundant default populating logic

* Fix the error helper text color to red

* Validate all fields post initial render

* Show label name in helper-text for failed validation

* Correctly switch between the password eye svg

* Incorporate edit button on encrypted inputs

* Resolve lint issue

---------

Co-authored-by: Ganesh Kumar <40178541+ganesh8056@users.noreply.github.com>
Co-authored-by: Parth Adhikari <parthadhikari@192.168.1.3>
Co-authored-by: Parth Adhikari <parthadhikari@192.168.1.2>
Co-authored-by: Parth Adhikari <parthadhikari@192.168.1.6>
Co-authored-by: parthy007 <parthadhikari1812@gmail.com>
2025-04-03 13:47:49 +05:30

311 lines
No EOL
7.7 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Postgresql datasource",
"description": "A schema defining postgresql datasource",
"type": "object",
"tj:version": "1.0.0",
"tj:source": {
"name": "PostgreSQL",
"kind": "postgresql",
"type": "database"
},
"properties": {
"connection_type": {
"type": "string",
"title": "Connection type",
"description": "Single select dropdown for connection_type",
"enum": [
"manual",
"string"
],
"default": "manual"
},
"host": {
"type": "string",
"title": "Host",
"description": "Enter host",
"default": "localhost"
},
"port": {
"type": "number",
"title": "Port",
"description": "Enter port",
"default": 5432
},
"database": {
"type": "string",
"title": "Database name",
"description": "Name of the database"
},
"username": {
"type": "string",
"title": "Username",
"description": "Enter username"
},
"password": {
"type": "string",
"title": "Password",
"description": "Enter password"
},
"ssl_enabled": {
"type": "boolean",
"title": "SSL",
"description": "Toggle for ssl_enabled",
"default": true
},
"ssl_certificate": {
"type": "string",
"title": "SSL certificate",
"description": "Single select dropdown for choosing certificates",
"enum": [
"ca_certificate",
"self_signed",
"none"
],
"default": "none"
},
"connection_string": {
"type": "string",
"title": "Connection string",
"description": "postgres://username:password@hostname:port/database?sslmode=require"
},
"ca_cert": {
"type": "string",
"title": "CA Cert",
"description": "Enter ca certificate"
},
"client_key": {
"type": "string",
"title": "Client Key",
"description": "Enter client key"
},
"client_cert": {
"type": "string",
"title": "Client Cert",
"description": "Enter client certificate"
},
"root_cert": {
"type": "string",
"title": "Root Cert",
"description": "Enter root certificate"
}
},
"tj:encrypted": [
"password",
"ca_cert",
"client_key",
"client_cert",
"root_cert",
"connection_string"
],
"required": [
"connection_type"
],
"allOf": [
{
"if": {
"properties": {
"connection_type": {
"const": "manual"
}
}
},
"then": {
"required": [
"host",
"port",
"username",
"password",
"ssl_certificate"
],
"allOf": [
{
"if": {
"properties": {
"ssl_certificate": {
"const": "ca_certificate"
}
}
},
"then": {
"required": [
"ca_cert"
]
}
},
{
"if": {
"properties": {
"ssl_certificate": {
"const": "self_signed"
}
}
},
"then": {
"required": [
"client_key",
"client_cert",
"root_cert"
]
}
}
]
}
},
{
"if": {
"properties": {
"connection_type": {
"const": "string"
}
}
},
"then": {
"required": [
"connection_string"
]
}
}
],
"tj:ui:properties": {
"connection_type": {
"$ref": "#/properties/connection_type",
"key": "connection_type",
"label": "Connection type",
"description": "Single select dropdown for connection_type",
"widget": "dropdown-component-flip",
"list": [
{
"name": "Manual connection",
"value": "manual"
},
{
"name": "Connection string",
"value": "string"
}
]
},
"manual": {
"ssl_certificate": {
"$ref": "#/properties/ssl_certificate",
"key": "ssl_certificate",
"label": "SSL certificate",
"description": "Single select dropdown for choosing certificates",
"widget": "dropdown-component-flip",
"list": [
{
"value": "ca_certificate",
"name": "CA certificate"
},
{
"value": "self_signed",
"name": "Self-signed certificate"
},
{
"value": "none",
"name": "None"
}
],
"commonFields": {
"host": {
"$ref": "#/properties/host",
"key": "host",
"label": "Host",
"description": "Enter host",
"widget": "text-v3",
"required": true
},
"port": {
"$ref": "#/properties/port",
"key": "port",
"label": "Port",
"description": "Enter port",
"widget": "text-v3",
"required": true
},
"ssl_enabled": {
"$ref": "#/properties/ssl_enabled",
"key": "ssl_enabled",
"label": "SSL",
"description": "Toggle for ssl_enabled",
"widget": "toggle"
},
"database": {
"$ref": "#/properties/database",
"key": "database",
"label": "Database name",
"description": "Name of the database",
"widget": "text-v3"
},
"username": {
"$ref": "#/properties/username",
"key": "username",
"label": "Username",
"description": "Enter username",
"widget": "text-v3",
"required": true
},
"password": {
"$ref": "#/properties/password",
"key": "password",
"label": "Password",
"description": "Enter password",
"widget": "password-v3",
"required": true
},
"connection_options": {
"$ref": "#/properties/connection_options",
"key": "connection_options",
"label": "Connection options",
"widget": "react-component-headers",
"width": "316px",
"required": true
}
}
},
"ca_certificate": {
"ca_cert": {
"$ref": "#/properties/ca_cert",
"key": "ca_cert",
"label": "CA Cert",
"description": "Enter ca certificate",
"widget": "textarea"
}
},
"self_signed": {
"client_key": {
"$ref": "#/properties/client_key",
"key": "client_key",
"label": "Client Key",
"description": "Enter client key",
"widget": "textarea"
},
"client_cert": {
"$ref": "#/properties/client_cert",
"key": "client_cert",
"label": "Client Cert",
"description": "Enter client certificate",
"widget": "textarea"
},
"root_cert": {
"$ref": "#/properties/root_cert",
"key": "root_cert",
"label": "Root Cert",
"description": "Enter root certificate",
"widget": "textarea",
"required": true
}
}
},
"string": {
"connection_string": {
"$ref": "#/properties/connection_string",
"key": "connection_string",
"label": "Connection string",
"description": "postgres://username:password@hostname:port/database?sslmode=require",
"widget": "text",
"required": true
}
}
}
}