Add Activepieces integration for workflow automation
- Add Activepieces fork with SmoothSchedule custom piece - Create integrations app with Activepieces service layer - Add embed token endpoint for iframe integration - Create Automations page with embedded workflow builder - Add sidebar visibility fix for embed mode - Add list inactive customers endpoint to Public API - Include SmoothSchedule triggers: event created/updated/cancelled - Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"Multi Model Database": "Multimodelldatenbank",
|
||||
"Connection URL": "Verbindungs-URL",
|
||||
"Database": "Datenbank",
|
||||
"Namespace": "Namensraum",
|
||||
"Username": "Benutzername",
|
||||
"Password": "Kennwort",
|
||||
"Connection string, e.g. http://1.2.3.5:8000.": "Verbindungsstring, z.B. http://1.2.3.5:8000.",
|
||||
"A string indicating the name of the database to connect to.": "Ein String, der den Namen der zu verbindenden Datenbank angibt.",
|
||||
"As string indicating the namespace of the database to connect to.": "Als Zeichenkette, der den Namensraum der zu verbindenden Datenbank angibt.",
|
||||
"As string indicating the username of the database to connect to.": "Als String, der den Benutzernamen der zu verbindenden Datenbank angibt.",
|
||||
"As string indicating the password of the database to connect to.": "Als Zeichenkette, der das Passwort der zu verbindenden Datenbank angibt.",
|
||||
"Run Query": "Abfrage ausführen",
|
||||
"Run a query in SurrealDB.": "Eine Abfrage in SurrealDB ausführen.",
|
||||
"Markdown": "Markdown",
|
||||
"Query": "Abfrage",
|
||||
"Arguments": "Argumente",
|
||||
"Query Timeout (ms)": "Abfrage-Timeout (ms)",
|
||||
"Application Name": "Anwendungsname",
|
||||
"\n **NOTE:** Prevent SQL injection by using parameterized queries.\n ": "\n **HINWEIS:** Verhindere SQL-Einschleusung durch parametrierte Abfragen.\n ",
|
||||
"Provide a SurrealDB query string to execute.": "Geben Sie einen SurrealDB Abfrage-String zum Ausführen an.",
|
||||
"\n **NOTE:** Query example: `SELECT * FROM table_name WHERE name = $name`. Then add the name parameter in the arguments.\n ": "\n **HINWEIS:** Abfragebeispiel: `SELECT * FROM table_name WHERE name = $name`. Fügen Sie dann den Namensparameter in die Argumente ein.\n ",
|
||||
"Add all arguments as names here, don't add the $ sign.": "Füge hier alle Argumente als Namen hinzu, füge nicht das $ Zeichen hinzu.",
|
||||
"The maximum time to wait for a query to complete before timing out.": "Die maximale Wartezeit, bis die Abfrage abgeschlossen ist, bevor die Abfrage beendet wird.",
|
||||
"An identifier for the client application executing the query.": "Ein Bezeichner für die Client-Anwendung, die die Abfrage ausführt.",
|
||||
"New Row": "Neue Zeile",
|
||||
"Triggers when a new row is added to the defined table.": "Wird ausgelöst, wenn eine neue Zeile der definierten Tabelle hinzugefügt wird.",
|
||||
"Table name": "Tabellenname",
|
||||
"Column to order by": "Zu bestellende Spalte nach",
|
||||
"Order Direction": "Bestellrichtung",
|
||||
"**NOTE:** The trigger fetches the latest rows using the provided order by column (newest first), and then will keep polling until the previous last row is reached. It's suggested to add a created_at timestamp. `DEFINE FIELD OVERWRITE createdAt ON schedule VALUE time::now() READONLY;`": "**HINWEIS:** Der Trigger holt die neuesten Zeilen mit der angegebenen Reihenfolge nach Spalte (neueste zuerst) und wird dann weiter abfragen, bis die letzte Zeile erreicht ist. Es wird vorgeschlagen, einen created_at Timestamp hinzuzufügen. `DEFINE FIELD OVERWRITE createdAt ON Zeitplan VALUE time::now() READONLY;`",
|
||||
"Use something like a created timestamp.": "Verwenden Sie so etwas wie einen erstellten Zeitstempel.",
|
||||
"The direction to sort by such that the newest rows are fetched first.": "Die zu sortierende Richtung, so dass die neuesten Zeilen zuerst abgerufen werden.",
|
||||
"Ascending": "Aufsteigend",
|
||||
"Descending": "Absteigend"
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"Multi Model Database": "Base de datos multicanal",
|
||||
"Connection URL": "URL de conexión",
|
||||
"Database": "Base de datos",
|
||||
"Namespace": "Espacio de nombres",
|
||||
"Username": "Usuario",
|
||||
"Password": "Contraseña",
|
||||
"Connection string, e.g. http://1.2.3.5:8000.": "Cadena de conexión, por ejemplo, http://1.2.3.5:8000.",
|
||||
"A string indicating the name of the database to connect to.": "Una cadena que indica el nombre de la base de datos a la que conectar.",
|
||||
"As string indicating the namespace of the database to connect to.": "Como cadena que indica el espacio de nombres de la base de datos a conectar.",
|
||||
"As string indicating the username of the database to connect to.": "Como cadena que indica el nombre de usuario de la base de datos a conectar.",
|
||||
"As string indicating the password of the database to connect to.": "Como cadena que indica la contraseña de la base de datos a conectar.",
|
||||
"Run Query": "Ejecutar consulta",
|
||||
"Run a query in SurrealDB.": "Ejecutar una consulta en SurrealDB.",
|
||||
"Markdown": "Markdown",
|
||||
"Query": "Consulta",
|
||||
"Arguments": "Argumentos",
|
||||
"Query Timeout (ms)": "Tiempo de espera (ms)",
|
||||
"Application Name": "Nombre de la aplicación",
|
||||
"\n **NOTE:** Prevent SQL injection by using parameterized queries.\n ": "\n **NOTE:** Prevent SQL injection by using parameterized queries.\n ",
|
||||
"Provide a SurrealDB query string to execute.": "Proporciona una cadena de consulta SurrealDB para ejecutar.",
|
||||
"\n **NOTE:** Query example: `SELECT * FROM table_name WHERE name = $name`. Then add the name parameter in the arguments.\n ": "\n **NOTE:** Query example: `SELECT * FROM table_name WHERE name = $name`. Then add the name parameter in the arguments.\n ",
|
||||
"Add all arguments as names here, don't add the $ sign.": "Agregue todos los argumentos como nombres aquí, no añadas el signo $.",
|
||||
"The maximum time to wait for a query to complete before timing out.": "El tiempo máximo para esperar a que se complete una consulta antes de agotar el tiempo.",
|
||||
"An identifier for the client application executing the query.": "Un identificador para la aplicación cliente que ejecuta la consulta.",
|
||||
"New Row": "Nueva fila",
|
||||
"Triggers when a new row is added to the defined table.": "Se activa cuando se añade una nueva fila a la tabla definida.",
|
||||
"Table name": "Nombre de tabla",
|
||||
"Column to order by": "Columna para ordenar por",
|
||||
"Order Direction": "Dirección del pedido",
|
||||
"**NOTE:** The trigger fetches the latest rows using the provided order by column (newest first), and then will keep polling until the previous last row is reached. It's suggested to add a created_at timestamp. `DEFINE FIELD OVERWRITE createdAt ON schedule VALUE time::now() READONLY;`": "**NOTA:** El disparador obtiene las últimas filas usando el orden proporcionado por columna (más reciente primero), y luego continuarán las encuestas hasta que se alcance la última fila anterior. Se sugiere añadir un timestamp created_at created. `DEFINE FIELD OVERWRITE createdAt ON schedule VALUE time::now() ONLY;`",
|
||||
"Use something like a created timestamp.": "Usa algo como una marca de tiempo creada.",
|
||||
"The direction to sort by such that the newest rows are fetched first.": "La dirección para ordenar por tal que las filas más recientes se obtengan primero.",
|
||||
"Ascending": "Ascendiente",
|
||||
"Descending": "Descendiente"
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"Multi Model Database": "Base de données multi-modèles",
|
||||
"Connection URL": "URL de la connexion",
|
||||
"Database": "Base de données",
|
||||
"Namespace": "Espace de noms",
|
||||
"Username": "Nom d'utilisateur",
|
||||
"Password": "Password",
|
||||
"Connection string, e.g. http://1.2.3.5:8000.": "Chaîne de connexion, par exemple http://1.2.3.5:8000.",
|
||||
"A string indicating the name of the database to connect to.": "Une chaîne indiquant le nom de la base de données à laquelle se connecter.",
|
||||
"As string indicating the namespace of the database to connect to.": "En tant que chaîne de caractères indiquant l'espace de noms de la base de données auquel se connecter.",
|
||||
"As string indicating the username of the database to connect to.": "En tant que chaîne indiquant le nom d'utilisateur de la base de données auquel se connecter.",
|
||||
"As string indicating the password of the database to connect to.": "En tant que chaîne de caractères indiquant le mot de passe de la base de données auquel se connecter.",
|
||||
"Run Query": "Exécuter la requête",
|
||||
"Run a query in SurrealDB.": "Exécuter une requête dans SurrealDB.",
|
||||
"Markdown": "Markdown",
|
||||
"Query": "Requête",
|
||||
"Arguments": "Arguments",
|
||||
"Query Timeout (ms)": "Délai de requête (ms)",
|
||||
"Application Name": "Nom de l'application",
|
||||
"\n **NOTE:** Prevent SQL injection by using parameterized queries.\n ": "\n **NOTE:** Empêcher l'injection SQL en utilisant des requêtes paramétrées.\n ",
|
||||
"Provide a SurrealDB query string to execute.": "Fournir une chaîne de requête SurrealDB à exécuter.",
|
||||
"\n **NOTE:** Query example: `SELECT * FROM table_name WHERE name = $name`. Then add the name parameter in the arguments.\n ": "\n **NOTE:** Exemple de requête : `SELECT * FROM table_name WHERE name = $name`. Puis ajouter le paramètre de nom dans les arguments.\n ",
|
||||
"Add all arguments as names here, don't add the $ sign.": "Ajoute tous les arguments en tant que noms ici, n'ajoute pas le signe $.",
|
||||
"The maximum time to wait for a query to complete before timing out.": "Le temps maximum d'attente pour qu'une requête se termine avant la fin du délai.",
|
||||
"An identifier for the client application executing the query.": "Un identifiant pour l'application client exécutant la requête.",
|
||||
"New Row": "Nouvelle ligne",
|
||||
"Triggers when a new row is added to the defined table.": "Déclenche quand une nouvelle ligne est ajoutée à la table définie.",
|
||||
"Table name": "Nom du tableau",
|
||||
"Column to order by": "Colonne à ordonner par",
|
||||
"Order Direction": "Direction de la commande",
|
||||
"**NOTE:** The trigger fetches the latest rows using the provided order by column (newest first), and then will keep polling until the previous last row is reached. It's suggested to add a created_at timestamp. `DEFINE FIELD OVERWRITE createdAt ON schedule VALUE time::now() READONLY;`": "**NOTE:** Le trigger récupère les dernières lignes en utilisant l'ordre fourni par colonne (plus récent en premier), puis continuera de voter jusqu'à ce que la dernière ligne précédente soit atteinte. Il est suggéré d'ajouter un timestamp created_at. `DEFINE FIELD OVERWRITE createdAt ON schedule VALUE time::now() READONLY;`",
|
||||
"Use something like a created timestamp.": "Utilisez quelque chose comme un horodatage créé.",
|
||||
"The direction to sort by such that the newest rows are fetched first.": "La direction à suivre pour trier de telle sorte que les lignes les plus récentes soient récupérées en premier.",
|
||||
"Ascending": "Ascendant",
|
||||
"Descending": "Descendant"
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"Multi Model Database": "マルチモデルデータベース",
|
||||
"Connection URL": "接続URL",
|
||||
"Database": "データベース",
|
||||
"Namespace": "名前空間",
|
||||
"Username": "ユーザー名",
|
||||
"Password": "Password",
|
||||
"Connection string, e.g. http://1.2.3.5:8000.": "接続文字列。例: http://1.2.3.5:8000。",
|
||||
"A string indicating the name of the database to connect to.": "接続するデータベースの名前を示す文字列。",
|
||||
"As string indicating the namespace of the database to connect to.": "接続するデータベースの名前空間を示す文字列として。",
|
||||
"As string indicating the username of the database to connect to.": "接続するデータベースのユーザー名を示す文字列です。",
|
||||
"As string indicating the password of the database to connect to.": "接続するデータベースのパスワードを示す文字列として",
|
||||
"Run Query": "クエリの実行",
|
||||
"Run a query in SurrealDB.": "SurrealDB でクエリを実行します。",
|
||||
"Markdown": "Markdown",
|
||||
"Query": "クエリ",
|
||||
"Arguments": "引数",
|
||||
"Query Timeout (ms)": "クエリのタイムアウト (ms)",
|
||||
"Application Name": "アプリケーション名",
|
||||
"\n **NOTE:** Prevent SQL injection by using parameterized queries.\n ": "\n **注意:** パラメータ化されたクエリを使用してSQLインジェクションを防止します。\n ",
|
||||
"Provide a SurrealDB query string to execute.": "実行するSurrealDBクエリ文字列を指定します。",
|
||||
"\n **NOTE:** Query example: `SELECT * FROM table_name WHERE name = $name`. Then add the name parameter in the arguments.\n ": "\n **注意:** クエリ例: `SELECT * FROM table_name WHERE名 = $name`。そして引数にname パラメータを追加します。\n ",
|
||||
"Add all arguments as names here, don't add the $ sign.": "ここにすべての引数を名前として追加し、$ 記号を追加しないでください。",
|
||||
"The maximum time to wait for a query to complete before timing out.": "タイムアウト前にクエリが完了するのを待つ最大時間。",
|
||||
"An identifier for the client application executing the query.": "クエリを実行しているクライアント・アプリケーションの識別子。",
|
||||
"New Row": "新しい行",
|
||||
"Triggers when a new row is added to the defined table.": "定義されたテーブルに新しい行が追加されたときにトリガーされます。",
|
||||
"Table name": "テーブル名",
|
||||
"Column to order by": "次の順序の列",
|
||||
"Order Direction": "注文の方向",
|
||||
"**NOTE:** The trigger fetches the latest rows using the provided order by column (newest first), and then will keep polling until the previous last row is reached. It's suggested to add a created_at timestamp. `DEFINE FIELD OVERWRITE createdAt ON schedule VALUE time::now() READONLY;`": "**注意:** トリガーは与えられた順序で最新の行を取得します(最新の順序)。 最後の行に達するまでポーリングを続けます。 created_at timestampを追加することをお勧めします。`DEFINE FIELD OVERWRITE createdAt schedule VALUE time::now() READONLY;`",
|
||||
"Use something like a created timestamp.": "作成したタイムスタンプのようなものを使用します。",
|
||||
"The direction to sort by such that the newest rows are fetched first.": "最新の行が最初に取得されるように並べ替える方向。",
|
||||
"Ascending": "昇順",
|
||||
"Descending": "降順"
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"Multi Model Database": "Multi Model Database",
|
||||
"Connection URL": "Connectie URL",
|
||||
"Database": "Database",
|
||||
"Namespace": "Namespace",
|
||||
"Username": "Gebruikersnaam",
|
||||
"Password": "Wachtwoord",
|
||||
"Connection string, e.g. http://1.2.3.5:8000.": "Connectie string, bijvoorbeeld http://1.2.3.5:8000.",
|
||||
"A string indicating the name of the database to connect to.": "Een string die de naam van de database aangeeft waarmee je verbinding wilt maken.",
|
||||
"As string indicating the namespace of the database to connect to.": "Als string die de namespace van de database aangeeft waarmee verbinding kan worden gemaakt.",
|
||||
"As string indicating the username of the database to connect to.": "Als tekenreeks die de gebruikersnaam van de database aangeeft waarmee je verbinding wilt maken.",
|
||||
"As string indicating the password of the database to connect to.": "Als tekenreeks die het wachtwoord van de database aangeeft waarmee u verbinding wilt maken.",
|
||||
"Run Query": "Query uitvoeren",
|
||||
"Run a query in SurrealDB.": "Voer een query uit in SurrealDB.",
|
||||
"Markdown": "Markdown",
|
||||
"Query": "Zoekopdracht",
|
||||
"Arguments": "Argumenten",
|
||||
"Query Timeout (ms)": "Time-out zoekopdracht (ms)",
|
||||
"Application Name": "Applicatie Naam",
|
||||
"\n **NOTE:** Prevent SQL injection by using parameterized queries.\n ": "\n **NOTE:** Voorkom SQL-injectie door het gebruik van geparameteriseerde queries.\n ",
|
||||
"Provide a SurrealDB query string to execute.": "Geef een SurrealDB query string op om uit te voeren.",
|
||||
"\n **NOTE:** Query example: `SELECT * FROM table_name WHERE name = $name`. Then add the name parameter in the arguments.\n ": "\n **NOTE:** Query voorbeeld: `SELECT * FROM table_name WHERE name = $name`. Voeg dan de naam parameter toe in de argumenten.\n ",
|
||||
"Add all arguments as names here, don't add the $ sign.": "Voeg hier alle argumenten toe als namen, voeg het $ teken niet toe.",
|
||||
"The maximum time to wait for a query to complete before timing out.": "De maximale tijd om te wachten tot een query is voltooid voordat er een time-out is opgetreden.",
|
||||
"An identifier for the client application executing the query.": "Een id voor de client applicatie die de query uitvoert.",
|
||||
"New Row": "Nieuwe rij",
|
||||
"Triggers when a new row is added to the defined table.": "Triggert wanneer een nieuwe rij wordt toegevoegd aan de gedefinieerde tabel.",
|
||||
"Table name": "Tabel naam",
|
||||
"Column to order by": "Kolom sorteren op",
|
||||
"Order Direction": "Order richting",
|
||||
"**NOTE:** The trigger fetches the latest rows using the provided order by column (newest first), and then will keep polling until the previous last row is reached. It's suggested to add a created_at timestamp. `DEFINE FIELD OVERWRITE createdAt ON schedule VALUE time::now() READONLY;`": "**Let op:** De trigger haalt de laatste rijen met behulp van de opgegeven volgorde per kolom (nieuwste eerst), en zal dan doorgaan met stemmen tot de vorige rij is bereikt. Het wordt aangeraden om een created_at timestamp toe te voegen. `DEFINE VIELD OVERWRITE is aangemaakt. Bij planning VALUE tijd::now() READONLY;`",
|
||||
"Use something like a created timestamp.": "Gebruik zoiets als een aangemaakte tijdstempel.",
|
||||
"The direction to sort by such that the newest rows are fetched first.": "De richting die gesorteerd moet worden zodat de nieuwste rijen eerst opgehaald worden.",
|
||||
"Ascending": "Oplopend",
|
||||
"Descending": "Aflopend"
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"Multi Model Database": "Banco de dados de vários modelos",
|
||||
"Connection URL": "URL de conexão",
|
||||
"Database": "Banco",
|
||||
"Namespace": "Espaço nominal",
|
||||
"Username": "Usuário:",
|
||||
"Password": "Senha",
|
||||
"Connection string, e.g. http://1.2.3.5:8000.": "Frase de conexão, por exemplo, http://1.2.3.5:8000.",
|
||||
"A string indicating the name of the database to connect to.": "Uma string que indica o nome do banco de dados a ser conectado.",
|
||||
"As string indicating the namespace of the database to connect to.": "Como string que indica o namespace do banco de dados a ser conectado.",
|
||||
"As string indicating the username of the database to connect to.": "Como string indicando o nome de usuário do banco de dados a ser conectado.",
|
||||
"As string indicating the password of the database to connect to.": "Como string indicando a senha do banco de dados a ser conectado.",
|
||||
"Run Query": "Executar consulta",
|
||||
"Run a query in SurrealDB.": "Execute uma consulta no SurrealDB.",
|
||||
"Markdown": "Markdown",
|
||||
"Query": "Requisição",
|
||||
"Arguments": "Parâmetros",
|
||||
"Query Timeout (ms)": "Tempo limite da consulta (ms)",
|
||||
"Application Name": "Nome da aplicação",
|
||||
"\n **NOTE:** Prevent SQL injection by using parameterized queries.\n ": "\n **NOTA:** Previne a injeção de SQL usando consultas parametrizadas.\n ",
|
||||
"Provide a SurrealDB query string to execute.": "Forneça uma string de consulta SurrealDB para ser executada.",
|
||||
"\n **NOTE:** Query example: `SELECT * FROM table_name WHERE name = $name`. Then add the name parameter in the arguments.\n ": "\n **NOTE:** Query example: `SELECT * FROM table_name WHERE name = $name`. Then add the name parameter in the arguments.\n ",
|
||||
"Add all arguments as names here, don't add the $ sign.": "Adicione todos os argumentos como nomes aqui, não adicione a placa $.",
|
||||
"The maximum time to wait for a query to complete before timing out.": "O tempo máximo de espera que a consulta seja concluída antes de expirar.",
|
||||
"An identifier for the client application executing the query.": "Um identificador para a aplicação cliente executando a consulta.",
|
||||
"New Row": "Nova linha",
|
||||
"Triggers when a new row is added to the defined table.": "Dispara quando uma nova linha é adicionada à tabela definida.",
|
||||
"Table name": "Nome da tabela",
|
||||
"Column to order by": "Coluna para ordenar por",
|
||||
"Order Direction": "Direção da ordem",
|
||||
"**NOTE:** The trigger fetches the latest rows using the provided order by column (newest first), and then will keep polling until the previous last row is reached. It's suggested to add a created_at timestamp. `DEFINE FIELD OVERWRITE createdAt ON schedule VALUE time::now() READONLY;`": "**NOTA:** O gatilho obtém as linhas mais recentes usando a ordem por coluna fornecida (a mais recente primeiro), e então continuará a sondagem até que a última linha seja alcançada. É sugerido adicionar um timestamp created_at. `DEFINE OVERWRITE createdAt ON schedule VALUE time::now() LEONLY;`",
|
||||
"Use something like a created timestamp.": "Use algo como um timestamp criado.",
|
||||
"The direction to sort by such that the newest rows are fetched first.": "A direção para ordenar por tal que as linhas mais recentes são buscadas primeiro.",
|
||||
"Ascending": "Crescente",
|
||||
"Descending": "Decrescente"
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"SurrealDB": "SurrealDB",
|
||||
"Multi Model Database": "Мультимодельная база данных",
|
||||
"Connection URL": "URL подключения",
|
||||
"Database": "База данных",
|
||||
"Namespace": "Пространство имен",
|
||||
"Username": "Имя пользователя",
|
||||
"Password": "Пароль",
|
||||
"Connection string, e.g. http://1.2.3.5:8000.": "Строка подключения, например http://1.2.3.5:8000.",
|
||||
"A string indicating the name of the database to connect to.": "Строка, указывающая имя базы данных для подключения.",
|
||||
"As string indicating the namespace of the database to connect to.": "Как строка, указывающая пространство имен базы данных для подключения.",
|
||||
"As string indicating the username of the database to connect to.": "Как строка, указывающая имя пользователя базы данных подключиться.",
|
||||
"As string indicating the password of the database to connect to.": "Как строка, указывающая пароль базы данных для подключения.",
|
||||
"Run Query": "Запустить запрос",
|
||||
"Run a query in SurrealDB.": "Запустите запрос в SurrealDB.",
|
||||
"Markdown": "Markdown",
|
||||
"Query": "Запрос",
|
||||
"Arguments": "Аргументы",
|
||||
"Query Timeout (ms)": "Таймаут запроса (мс)",
|
||||
"Application Name": "Название приложения",
|
||||
"\n **NOTE:** Prevent SQL injection by using parameterized queries.\n ": "\n **ПРИМЕЧАНИЕ:** Предотвратить инъекцию SQL с помощью параметризованных запросов.\n ",
|
||||
"Provide a SurrealDB query string to execute.": "Предоставить строку запроса SurrealDB для выполнения.",
|
||||
"\n **NOTE:** Query example: `SELECT * FROM table_name WHERE name = $name`. Then add the name parameter in the arguments.\n ": "\n **ПРИМЕЧАНИЕ:** Пример запроса: `SELECT * FROM table_name WHERE name = $name`. Затем добавьте имя параметра в аргументы.\n ",
|
||||
"Add all arguments as names here, don't add the $ sign.": "Добавьте здесь все аргументы как имена, не добавляйте знак $.",
|
||||
"The maximum time to wait for a query to complete before timing out.": "Максимальное время ожидания выполнения запроса до истечения таймаута.",
|
||||
"An identifier for the client application executing the query.": "Идентификатор клиентского приложения, выполняющего запрос.",
|
||||
"New Row": "Новая строка",
|
||||
"Triggers when a new row is added to the defined table.": "Включает при добавлении новой строки в заданную таблицу.",
|
||||
"Table name": "Название таблицы",
|
||||
"Column to order by": "Столбец для заказа на",
|
||||
"Order Direction": "Направление заказа",
|
||||
"**NOTE:** The trigger fetches the latest rows using the provided order by column (newest first), and then will keep polling until the previous last row is reached. It's suggested to add a created_at timestamp. `DEFINE FIELD OVERWRITE createdAt ON schedule VALUE time::now() READONLY;`": "**ПРИМЕЧАНИЕ:** Триггер получает последние строки, используя указанный порядок по столбцу (сначала новые), и будет продолжать голосовать до тех пор, пока не будет достигнута предыдущая строка. Рекомендуется добавить created_at timestamp. `УСТАНОВИТЬ ФАЙЛ OVERWRITE createdAt ON schedule VALUE time::now() READONLY;`",
|
||||
"Use something like a created timestamp.": "Использовать что-то вроде созданной метки времени.",
|
||||
"The direction to sort by such that the newest rows are fetched first.": "Направление сортировки, по которому сначала получаются самые новые строки.",
|
||||
"Ascending": "По возрастанию",
|
||||
"Descending": "По убыванию"
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"Multi Model Database": "Multi Model Database",
|
||||
"Connection URL": "Connection URL",
|
||||
"Database": "Database",
|
||||
"Namespace": "Namespace",
|
||||
"Username": "Username",
|
||||
"Password": "Password",
|
||||
"Connection string, e.g. http://1.2.3.5:8000.": "Connection string, e.g. http://1.2.3.5:8000.",
|
||||
"A string indicating the name of the database to connect to.": "A string indicating the name of the database to connect to.",
|
||||
"As string indicating the namespace of the database to connect to.": "As string indicating the namespace of the database to connect to.",
|
||||
"As string indicating the username of the database to connect to.": "As string indicating the username of the database to connect to.",
|
||||
"As string indicating the password of the database to connect to.": "As string indicating the password of the database to connect to.",
|
||||
"Run Query": "Run Query",
|
||||
"Run a query in SurrealDB.": "Run a query in SurrealDB.",
|
||||
"Markdown": "Markdown",
|
||||
"Query": "Query",
|
||||
"Arguments": "Arguments",
|
||||
"Query Timeout (ms)": "Query Timeout (ms)",
|
||||
"Application Name": "Application Name",
|
||||
"\n **NOTE:** Prevent SQL injection by using parameterized queries.\n ": "\n **NOTE:** Prevent SQL injection by using parameterized queries.\n ",
|
||||
"Provide a SurrealDB query string to execute.": "Provide a SurrealDB query string to execute.",
|
||||
"\n **NOTE:** Query example: `SELECT * FROM table_name WHERE name = $name`. Then add the name parameter in the arguments.\n ": "\n **NOTE:** Query example: `SELECT * FROM table_name WHERE name = $name`. Then add the name parameter in the arguments.\n ",
|
||||
"Add all arguments as names here, don't add the $ sign.": "Add all arguments as names here, don't add the $ sign.",
|
||||
"The maximum time to wait for a query to complete before timing out.": "The maximum time to wait for a query to complete before timing out.",
|
||||
"An identifier for the client application executing the query.": "An identifier for the client application executing the query.",
|
||||
"New Row": "New Row",
|
||||
"Triggers when a new row is added to the defined table.": "Triggers when a new row is added to the defined table.",
|
||||
"Table name": "Table name",
|
||||
"Column to order by": "Column to order by",
|
||||
"Order Direction": "Order Direction",
|
||||
"**NOTE:** The trigger fetches the latest rows using the provided order by column (newest first), and then will keep polling until the previous last row is reached. It's suggested to add a created_at timestamp. `DEFINE FIELD OVERWRITE createdAt ON schedule VALUE time::now() READONLY;`": "**NOTE:** The trigger fetches the latest rows using the provided order by column (newest first), and then will keep polling until the previous last row is reached. It's suggested to add a created_at timestamp. `DEFINE FIELD OVERWRITE createdAt ON schedule VALUE time::now() READONLY;`",
|
||||
"Use something like a created timestamp.": "Use something like a created timestamp.",
|
||||
"The direction to sort by such that the newest rows are fetched first.": "The direction to sort by such that the newest rows are fetched first.",
|
||||
"Ascending": "Ascending",
|
||||
"Descending": "Descending"
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"SurrealDB": "SurrealDB",
|
||||
"Multi Model Database": "Multi Model Database",
|
||||
"Connection URL": "Connection URL",
|
||||
"Database": "Database",
|
||||
"Namespace": "Namespace",
|
||||
"Username": "Username",
|
||||
"Password": "Password",
|
||||
"Connection string, e.g. http://1.2.3.5:8000.": "Connection string, e.g. http://1.2.3.5:8000.",
|
||||
"A string indicating the name of the database to connect to.": "A string indicating the name of the database to connect to.",
|
||||
"As string indicating the namespace of the database to connect to.": "As string indicating the namespace of the database to connect to.",
|
||||
"As string indicating the username of the database to connect to.": "As string indicating the username of the database to connect to.",
|
||||
"As string indicating the password of the database to connect to.": "As string indicating the password of the database to connect to.",
|
||||
"Run Query": "Run Query",
|
||||
"Run a query in SurrealDB.": "Run a query in SurrealDB.",
|
||||
"Markdown": "Markdown",
|
||||
"Query": "Query",
|
||||
"Arguments": "Arguments",
|
||||
"Query Timeout (ms)": "Query Timeout (ms)",
|
||||
"Application Name": "Application Name",
|
||||
"\n **NOTE:** Prevent SQL injection by using parameterized queries.\n ": "\n **NOTE:** Prevent SQL injection by using parameterized queries.\n ",
|
||||
"Provide a SurrealDB query string to execute.": "Provide a SurrealDB query string to execute.",
|
||||
"\n **NOTE:** Query example: `SELECT * FROM table_name WHERE name = $name`. Then add the name parameter in the arguments.\n ": "\n **NOTE:** Query example: `SELECT * FROM table_name WHERE name = $name`. Then add the name parameter in the arguments.\n ",
|
||||
"Add all arguments as names here, don't add the $ sign.": "Add all arguments as names here, don't add the $ sign.",
|
||||
"The maximum time to wait for a query to complete before timing out.": "The maximum time to wait for a query to complete before timing out.",
|
||||
"An identifier for the client application executing the query.": "An identifier for the client application executing the query.",
|
||||
"New Row": "New Row",
|
||||
"Triggers when a new row is added to the defined table.": "Triggers when a new row is added to the defined table.",
|
||||
"Table name": "Table name",
|
||||
"Column to order by": "Column to order by",
|
||||
"Order Direction": "Order Direction",
|
||||
"**NOTE:** The trigger fetches the latest rows using the provided order by column (newest first), and then will keep polling until the previous last row is reached. It's suggested to add a created_at timestamp. `DEFINE FIELD OVERWRITE createdAt ON schedule VALUE time::now() READONLY;`": "**NOTE:** The trigger fetches the latest rows using the provided order by column (newest first), and then will keep polling until the previous last row is reached. It's suggested to add a created_at timestamp. `DEFINE FIELD OVERWRITE createdAt ON schedule VALUE time::now() READONLY;`",
|
||||
"Use something like a created timestamp.": "Use something like a created timestamp.",
|
||||
"The direction to sort by such that the newest rows are fetched first.": "The direction to sort by such that the newest rows are fetched first.",
|
||||
"Ascending": "Tăng dần",
|
||||
"Descending": "Giảm dần"
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"Multi Model Database": "Multi Model Database",
|
||||
"Connection URL": "Connection URL",
|
||||
"Database": "Database",
|
||||
"Namespace": "Namespace",
|
||||
"Username": "用户名",
|
||||
"Password": "密码",
|
||||
"Connection string, e.g. http://1.2.3.5:8000.": "Connection string, e.g. http://1.2.3.5:8000.",
|
||||
"A string indicating the name of the database to connect to.": "A string indicating the name of the database to connect to.",
|
||||
"As string indicating the namespace of the database to connect to.": "As string indicating the namespace of the database to connect to.",
|
||||
"As string indicating the username of the database to connect to.": "As string indicating the username of the database to connect to.",
|
||||
"As string indicating the password of the database to connect to.": "As string indicating the password of the database to connect to.",
|
||||
"Run Query": "Run Query",
|
||||
"Run a query in SurrealDB.": "Run a query in SurrealDB.",
|
||||
"Markdown": "Markdown",
|
||||
"Query": "Query",
|
||||
"Arguments": "Arguments",
|
||||
"Query Timeout (ms)": "Query Timeout (ms)",
|
||||
"Application Name": "Application Name",
|
||||
"\n **NOTE:** Prevent SQL injection by using parameterized queries.\n ": "\n **NOTE:** Prevent SQL injection by using parameterized queries.\n ",
|
||||
"Provide a SurrealDB query string to execute.": "Provide a SurrealDB query string to execute.",
|
||||
"\n **NOTE:** Query example: `SELECT * FROM table_name WHERE name = $name`. Then add the name parameter in the arguments.\n ": "\n **NOTE:** Query example: `SELECT * FROM table_name WHERE name = $name`. Then add the name parameter in the arguments.\n ",
|
||||
"Add all arguments as names here, don't add the $ sign.": "Add all arguments as names here, don't add the $ sign.",
|
||||
"The maximum time to wait for a query to complete before timing out.": "The maximum time to wait for a query to complete before timing out.",
|
||||
"An identifier for the client application executing the query.": "An identifier for the client application executing the query.",
|
||||
"New Row": "New Row",
|
||||
"Triggers when a new row is added to the defined table.": "Triggers when a new row is added to the defined table.",
|
||||
"Table name": "表格名称",
|
||||
"Column to order by": "Column to order by",
|
||||
"Order Direction": "Order Direction",
|
||||
"**NOTE:** The trigger fetches the latest rows using the provided order by column (newest first), and then will keep polling until the previous last row is reached. It's suggested to add a created_at timestamp. `DEFINE FIELD OVERWRITE createdAt ON schedule VALUE time::now() READONLY;`": "**NOTE:** The trigger fetches the latest rows using the provided order by column (newest first), and then will keep polling until the previous last row is reached. It's suggested to add a created_at timestamp. `DEFINE FIELD OVERWRITE createdAt ON schedule VALUE time::now() READONLY;`",
|
||||
"Use something like a created timestamp.": "Use something like a created timestamp.",
|
||||
"The direction to sort by such that the newest rows are fetched first.": "The direction to sort by such that the newest rows are fetched first.",
|
||||
"Ascending": "升序",
|
||||
"Descending": "降序"
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
import {
|
||||
PieceAuth,
|
||||
Property,
|
||||
createPiece,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { PieceCategory } from '@activepieces/shared';
|
||||
import { runQuery } from './lib/actions/run-query';
|
||||
import { newRow } from './lib/triggers/new-row';
|
||||
import surrealClient from './lib/common';
|
||||
|
||||
export const surrealdbAuth = PieceAuth.CustomAuth({
|
||||
props: {
|
||||
url: Property.ShortText({
|
||||
displayName: 'Connection URL',
|
||||
required: true,
|
||||
description: 'Connection string, e.g. http://1.2.3.5:8000.',
|
||||
}),
|
||||
database: Property.ShortText({
|
||||
displayName: 'Database',
|
||||
description:
|
||||
'A string indicating the name of the database to connect to.',
|
||||
required: true,
|
||||
}),
|
||||
namespace: Property.ShortText({
|
||||
displayName: 'Namespace',
|
||||
required: true,
|
||||
description:
|
||||
'As string indicating the namespace of the database to connect to.',
|
||||
}),
|
||||
username: Property.ShortText({
|
||||
displayName: 'Username',
|
||||
required: true,
|
||||
description:
|
||||
'As string indicating the username of the database to connect to.',
|
||||
}),
|
||||
password: Property.ShortText({
|
||||
displayName: 'Password',
|
||||
required: true,
|
||||
description:
|
||||
'As string indicating the password of the database to connect to.',
|
||||
}),
|
||||
},
|
||||
required: true,
|
||||
validate: async ({ auth }) => {
|
||||
try {
|
||||
surrealClient.query(auth, 'INFO for db');
|
||||
} catch (e) {
|
||||
return {
|
||||
valid: false,
|
||||
error: JSON.stringify(e),
|
||||
};
|
||||
}
|
||||
return {
|
||||
valid: true,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
export const surrealdb = createPiece({
|
||||
displayName: 'SurrealDB',
|
||||
description: "Multi Model Database",
|
||||
minimumSupportedRelease: '0.30.0',
|
||||
categories: [PieceCategory.DEVELOPER_TOOLS],
|
||||
logoUrl: 'https://cdn.activepieces.com/pieces/surrealdb.jpg',
|
||||
authors: ['maarteNNNN'],
|
||||
auth: surrealdbAuth,
|
||||
actions: [runQuery],
|
||||
triggers: [newRow],
|
||||
});
|
||||
@@ -0,0 +1,59 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { surrealdbAuth } from '../..';
|
||||
import surrealClient from '../common';
|
||||
|
||||
export const runQuery = createAction({
|
||||
auth: surrealdbAuth,
|
||||
name: 'run-query',
|
||||
displayName: 'Run Query',
|
||||
description: 'Run a query in SurrealDB.',
|
||||
props: {
|
||||
markdown: Property.MarkDown({
|
||||
value: `
|
||||
**NOTE:** Prevent SQL injection by using parameterized queries.
|
||||
`,
|
||||
}),
|
||||
query: Property.ShortText({
|
||||
displayName: 'Query',
|
||||
description: 'Provide a SurrealDB query string to execute.',
|
||||
required: true,
|
||||
}),
|
||||
queryMarkdown: Property.MarkDown({
|
||||
value: `
|
||||
**NOTE:** Query example: \`SELECT * FROM table_name WHERE name = $name\`. Then add the name parameter in the arguments.
|
||||
`,
|
||||
}),
|
||||
args: Property.Object({
|
||||
displayName: 'Arguments',
|
||||
description: "Add all arguments as names here, don't add the $ sign.",
|
||||
required: false,
|
||||
}),
|
||||
query_timeout: Property.Number({
|
||||
displayName: 'Query Timeout (ms)',
|
||||
description:
|
||||
'The maximum time to wait for a query to complete before timing out.',
|
||||
required: false,
|
||||
defaultValue: 30000,
|
||||
}),
|
||||
application_name: Property.ShortText({
|
||||
displayName: 'Application Name',
|
||||
description:
|
||||
'An identifier for the client application executing the query.',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
try {
|
||||
const { query, args } = context.propsValue;
|
||||
const response = await surrealClient.query(
|
||||
context.auth.props,
|
||||
query,
|
||||
args as Record<string, string>
|
||||
);
|
||||
return response.body;
|
||||
} catch (error) {
|
||||
throw new Error(`Query execution failed: ${(error as Error).message}`);
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,40 @@
|
||||
import {
|
||||
HttpMethod,
|
||||
HttpRequest,
|
||||
httpClient,
|
||||
} from '@activepieces/pieces-common';
|
||||
import { PiecePropValueSchema } from '@activepieces/pieces-framework';
|
||||
import { surrealdbAuth } from '..';
|
||||
|
||||
const query = async (
|
||||
auth: PiecePropValueSchema<typeof surrealdbAuth>,
|
||||
query: string,
|
||||
args?: Record<string, string>
|
||||
) => {
|
||||
const { url, username, password, namespace, database } = auth;
|
||||
|
||||
const sqlUrl = new URL('/sql', url);
|
||||
const request: HttpRequest = {
|
||||
method: HttpMethod.POST,
|
||||
url: sqlUrl.toString(),
|
||||
headers: {
|
||||
'Content-Type': 'text/plain',
|
||||
Accept: 'application/json',
|
||||
Authorization: `Basic ${Buffer.from(`${username}:${password}`).toString(
|
||||
'base64'
|
||||
)}`,
|
||||
'surreal-ns': namespace,
|
||||
'surreal-db': database,
|
||||
},
|
||||
queryParams: args,
|
||||
body: query,
|
||||
};
|
||||
|
||||
const response = await httpClient.sendRequest(request);
|
||||
|
||||
return response;
|
||||
};
|
||||
|
||||
export default {
|
||||
query,
|
||||
};
|
||||
@@ -0,0 +1,192 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
PiecePropValueSchema,
|
||||
Property,
|
||||
AppConnectionValueForAuthProperty,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import {
|
||||
DedupeStrategy,
|
||||
Polling,
|
||||
pollingHelper,
|
||||
} from '@activepieces/pieces-common';
|
||||
import dayjs from 'dayjs';
|
||||
import { surrealdbAuth } from '../..';
|
||||
import client from '../common';
|
||||
import crypto from 'crypto';
|
||||
|
||||
// replace auth with piece auth variable
|
||||
const polling: Polling<
|
||||
AppConnectionValueForAuthProperty<typeof surrealdbAuth>,
|
||||
{
|
||||
table: string;
|
||||
order_by: string;
|
||||
order_direction: 'ASC' | 'DESC' | undefined;
|
||||
}
|
||||
> = {
|
||||
strategy: DedupeStrategy.LAST_ITEM,
|
||||
items: async ({ auth, propsValue, lastItemId }) => {
|
||||
const lastItem = lastItemId as string;
|
||||
const query = constructQuery({
|
||||
order_by: propsValue.order_by,
|
||||
lastItem: lastItem,
|
||||
order_direction: propsValue.order_direction,
|
||||
});
|
||||
|
||||
const authProps = auth.props;
|
||||
const result = await client.query(authProps, query, {
|
||||
table: propsValue.table,
|
||||
});
|
||||
|
||||
const items = result.body[0].result.map(function (
|
||||
row: Record<string, any>
|
||||
) {
|
||||
const rowHash = crypto
|
||||
.createHash('md5')
|
||||
.update(JSON.stringify(row))
|
||||
.digest('hex');
|
||||
const isTimestamp = dayjs(row[propsValue.order_by]).isValid();
|
||||
const orderValue = isTimestamp
|
||||
? dayjs(row[propsValue.order_by]).toISOString()
|
||||
: row[propsValue.order_by];
|
||||
return {
|
||||
id: orderValue + '|' + rowHash,
|
||||
data: row,
|
||||
};
|
||||
});
|
||||
|
||||
return items;
|
||||
},
|
||||
};
|
||||
|
||||
function constructQuery({
|
||||
order_by,
|
||||
lastItem,
|
||||
order_direction,
|
||||
}: {
|
||||
order_by: string;
|
||||
order_direction: 'ASC' | 'DESC' | undefined;
|
||||
lastItem: string;
|
||||
}): string {
|
||||
const lastOrderKey = lastItem ? lastItem.split('|')[0] : null;
|
||||
if (lastOrderKey === null) {
|
||||
switch (order_direction) {
|
||||
case 'ASC':
|
||||
return `SELECT * FROM type::table($table) ORDER BY ${order_by} ASC LIMIT 5`;
|
||||
case 'DESC':
|
||||
return `SELECT * FROM type::table($table) ORDER BY ${order_by} DESC LIMIT 5`;
|
||||
default:
|
||||
throw new Error(
|
||||
JSON.stringify({
|
||||
message: 'Invalid order direction',
|
||||
order_direction: order_direction,
|
||||
})
|
||||
);
|
||||
}
|
||||
} else {
|
||||
switch (order_direction) {
|
||||
case 'ASC':
|
||||
return `SELECT * FROM type::table($table) WHERE ${order_by} <= '${lastOrderKey}' ORDER BY ${order_by} ASC`;
|
||||
case 'DESC':
|
||||
return `SELECT * FROM type::table($table) WHERE ${order_by} >= '${lastOrderKey}' ORDER BY ${order_by} DESC`;
|
||||
default:
|
||||
throw new Error(
|
||||
JSON.stringify({
|
||||
message: 'Invalid order direction',
|
||||
order_direction: order_direction,
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const newRow = createTrigger({
|
||||
name: 'new-row',
|
||||
displayName: 'New Row',
|
||||
description: 'Triggers when a new row is added to the defined table.',
|
||||
props: {
|
||||
description: Property.MarkDown({
|
||||
value: `**NOTE:** The trigger fetches the latest rows using the provided order by column (newest first), and then will keep polling until the previous last row is reached. It's suggested to add a created_at timestamp. \`DEFINE FIELD OVERWRITE createdAt ON schedule VALUE time::now() READONLY;\``,
|
||||
}),
|
||||
table: Property.Dropdown({
|
||||
displayName: 'Table name',
|
||||
required: true,
|
||||
refreshers: ['auth'],
|
||||
refreshOnSearch: false,
|
||||
auth: surrealdbAuth,
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please authenticate first',
|
||||
};
|
||||
}
|
||||
const authProps = auth.props;
|
||||
try {
|
||||
const result = await client.query(authProps, 'INFO FOR DB');
|
||||
const options = Object.keys(result.body[0].result.tables).map(
|
||||
(row) => ({
|
||||
label: row,
|
||||
value: row,
|
||||
})
|
||||
);
|
||||
return {
|
||||
disabled: false,
|
||||
options,
|
||||
};
|
||||
} catch (e) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: JSON.stringify(e),
|
||||
};
|
||||
}
|
||||
},
|
||||
}),
|
||||
order_by: Property.ShortText({
|
||||
displayName: 'Column to order by',
|
||||
description: 'Use something like a created timestamp.',
|
||||
required: true,
|
||||
defaultValue: 'created_at',
|
||||
}),
|
||||
order_direction: Property.StaticDropdown<'ASC' | 'DESC'>({
|
||||
displayName: 'Order Direction',
|
||||
description:
|
||||
'The direction to sort by such that the newest rows are fetched first.',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{
|
||||
label: 'Ascending',
|
||||
value: 'ASC',
|
||||
},
|
||||
{
|
||||
label: 'Descending',
|
||||
value: 'DESC',
|
||||
},
|
||||
],
|
||||
},
|
||||
defaultValue: 'DESC',
|
||||
}),
|
||||
},
|
||||
sampleData: {},
|
||||
type: TriggerStrategy.POLLING,
|
||||
auth: surrealdbAuth,
|
||||
async test(context) {
|
||||
return await pollingHelper.test(polling, context);
|
||||
},
|
||||
async onEnable(context) {
|
||||
const { store, auth, propsValue } = context;
|
||||
await pollingHelper.onEnable(polling, { store, propsValue, auth });
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
const { store, auth, propsValue } = context;
|
||||
await pollingHelper.onDisable(polling, { store, propsValue, auth });
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(polling, context);
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user