{"id":42702048,"url":"https://github.com/synle/sqlui-native","last_synced_at":"2026-04-17T05:04:24.976Z","repository":{"id":37032267,"uuid":"450996679","full_name":"synle/sqlui-native","owner":"synle","description":"SQLUI Native (sqluinative) is a simple UI client for most SQL Engines written in Electron. It is compatible with Windows, Mac, Ubuntu / Debian and Redhat. It supports most dialects of RMBDs like MySQL, Microsoft SQL Server, Postgres, SQLite and has limited supports for Cassandra, MongoDB, Redis, CockroachDB, Azure CosmosDB and Azure Storage Tab","archived":false,"fork":false,"pushed_at":"2026-04-14T02:19:33.000Z","size":16386,"stargazers_count":65,"open_issues_count":1,"forks_count":7,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-04-14T02:29:21.623Z","etag":null,"topics":["azure","azure-storage","cassandra","cockroachdb","cosmosdb","mongodb","mssql","mysql","postgresql","redis","sql","sqlite","sqlui-native","sqluinative"],"latest_commit_sha":null,"homepage":"https://synle.github.io/sqlui-native/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/synle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"synle"}},"created_at":"2022-01-23T03:42:41.000Z","updated_at":"2026-04-14T02:19:36.000Z","dependencies_parsed_at":"2024-08-28T16:12:17.947Z","dependency_job_id":"5ab2b05b-aa15-48c1-afe1-cd95a4e147a5","html_url":"https://github.com/synle/sqlui-native","commit_stats":null,"previous_names":[],"tags_count":305,"template":false,"template_full_name":null,"purl":"pkg:github/synle/sqlui-native","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synle%2Fsqlui-native","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synle%2Fsqlui-native/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synle%2Fsqlui-native/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synle%2Fsqlui-native/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/synle","download_url":"https://codeload.github.com/synle/sqlui-native/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/synle%2Fsqlui-native/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31915902,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure","azure-storage","cassandra","cockroachdb","cosmosdb","mongodb","mssql","mysql","postgresql","redis","sql","sqlite","sqlui-native","sqluinative"],"created_at":"2026-01-29T14:22:01.397Z","updated_at":"2026-04-17T05:04:24.959Z","avatar_url":"https://github.com/synle.png","language":"TypeScript","readme":"[![build-main](https://github.com/synle/sqlui-native/actions/workflows/build-main.yml/badge.svg)](https://github.com/synle/sqlui-native/actions/workflows/build-main.yml)\n\n# [sqlui-native](https://github.com/synle/sqlui-native)\n\n![64](https://user-images.githubusercontent.com/3792401/160178384-638de88f-1712-4419-aed4-b1ef79e5d82a.png)\n\n`sqlui-native` is a simple UI client for most SQL Engines written in Electron. It is compatible with most desktop OS's and support most dialects of RDBMS like MySQL, Microsoft SQL Server, Postgres, SQLite, Cassandra, MongoDB, Redis, Azure CosmosDB, Azure Storage Table, and Salesforce.\n\nIt supports multiple Windows, so you can have different sets of queries and connections side by side. The connections and queries are all stored locally, so you can continue where you left off in later visits.\n\n## Downloads\n\nRefer to the following link for download information.\n\n- [Sqlui Native Homepage](https://synle.github.io/sqlui-native)\n\n## Supported OS's\n\n- [Windows 10/11 (Intel - AMD x64)](https://synle.github.io/sqlui-native/installation#windows)\n- [Windows 10/11 (ARM architecture)](https://synle.github.io/sqlui-native/installation#windows)\n- [macOS / OSX (Apple Silicon M-Series)](https://synle.github.io/sqlui-native/installation#mac) (Tested on Mac OS Monterey and macOS 26) - See [quarantine troubleshooting](#mac-apple-silicon-m-series---app-is-damaged-error)\n- [macOS / OSX (Intel x64)](https://synle.github.io/sqlui-native/installation#mac) (Tested on Mac OS Monterey)\n- [Linux Mint / Ubuntu / Debian](https://synle.github.io/sqlui-native/installation#ubuntu--debian)\n- [Linux Redhat / CentOS / Fedora](https://synle.github.io/sqlui-native/installation#redhat--centos--fedora) : Refer to this link for [Installation Instructions](https://synle.github.io/sqlui-native/installation)\n- [Linux Arch Linux](https://synle.github.io/sqlui-native/installation#arch-linux-with-pacman) (Tested on Steam Deck)\n- [Linux Other Distro](https://synle.github.io/sqlui-native/installation#linux-appimage) (Tested on Linux Mint)\n\n## Supported Database Adapters\n\nThe list below are supported data stores.\nYou can also refer to this link for [General Queries](https://synle.github.io/sqlui-native/guides)\n\n- [MySQL](https://synle.github.io/sqlui-native/guides#mysql)\n- [MariaDB](https://synle.github.io/sqlui-native/guides#mariadb)\n- [Microsoft SQL Server](https://synle.github.io/sqlui-native/guides#mssql)\n- [PostgresSQL](https://synle.github.io/sqlui-native/guides#postgres)\n- [CockroachDB](https://github.com/synle/sqlui-native#cockroachdb-limitations) (Limited Supported by using PostgresSQL driver)\n- [SQLite](https://synle.github.io/sqlui-native/guides#sqlite)\n- [Cassandra](https://synle.github.io/sqlui-native/guides#cassandra) (Limited Supported)\n- [MongoDB](https://synle.github.io/sqlui-native/guides#mongodb) (Limited Supported)\n- [Redis](https://synle.github.io/sqlui-native/guides#redis) (Limited Supported)\n- [Azure CosmosDB](https://synle.github.io/sqlui-native/guides#cosmosdb) (Limited Supported)\n- [Azure Table Storage (Azure Table)](https://synle.github.io/sqlui-native/guides#aztable) (Limited Supported)\n- [Salesforce (SFDC)](https://synle.github.io/sqlui-native/guides#sfdc) (Limited Supported)\n- REST API (curl / fetch) — Postman-like API client with `{{variable}}` interpolation\n\n## Features\n\n### Overall Demo\n\n![demo-full](https://user-images.githubusercontent.com/3792401/151750703-419b66f2-938b-4edd-b852-97bfdfa12efd.gif)\n\n### Import and Export\n\nImport and Export can be used to share connections across different machines and users. Below is a sample import config.\n\n```\n[\n  {\n    \"_type\": \"connection\",\n    \"id\": \"connection.1643485516220.4798705129674932\",\n    \"connection\": \"postgres://postgres:password@localhost:5432\",\n    \"name\": \"sy postgres\"\n  },\n  {\n    \"_type\": \"query\",\n    \"id\": \"query.1643561715854.5278536054107370\",\n    \"name\": \"Employee Query on Postgres\",\n    \"sql\": \"SELECT\\n  *\\nFROM\\n  employees\\nLIMIT\\n  10\",\n    \"connectionId\": \"connection.1643485516220.4798705129674932\",\n    \"databaseId\": \"music_store\"\n  }\n]\n```\n\nYou can also drag and drop the file directly into sqlui-native application. At the moment, we only support drag and drop for a single file.\n\n![demo-import-export](https://user-images.githubusercontent.com/3792401/151750721-9ea1ab38-e185-40dd-ba4d-71d28f3ae1d6.gif)\n\n### Session Management\n\nThis application supports multiple windows / instances. Sessions are used to control which instances it persist the data with.\nAlso these sessions, and the associated connections and queries are persisted locally. So you can continue where you left off in the future.\n\n![demo-session](https://user-images.githubusercontent.com/3792401/151750740-10ff3497-11b4-4026-bd39-c34b80bc1e3a.gif)\n\n### Dark Mode\n\nDark mode will be turned on automatically with respect to your OS Preference. You can update settings to prefer Dark Mode or Light Mode if desired.\n\n![demo-darkmode](https://user-images.githubusercontent.com/3792401/151746840-e4889ae1-cab9-4ade-b56b-5a4dbb654712.gif)\n\n### Query Tabs\n\n#### Query Tab Orientation\n\nWhen there is more than 20 tabs, the query tabs will be wrapped vertically.\n\n![image](https://user-images.githubusercontent.com/3792401/152028900-400605a2-0cb0-48df-9249-8ce060d3a256.png)\n\n#### Reordering Query Tabs\n\nQuery tabs can be re-ordered by drag and drop the query tabs bar.\n\n![tab-ordering](https://user-images.githubusercontent.com/3792401/153722628-ea28a940-e33a-4f66-983d-eb3e824e2a1c.gif)\n\n#### Resizing the sidebar\n\nThe left sidebar can be resized by clicking and dragging the small section between the sidebar and the query box.\n\n![sidebar-resize](https://user-images.githubusercontent.com/3792401/153722656-10529ff3-e818-4b6d-954c-7bdf57631d11.gif)\n\n### Command Palette\n\nSimilar to VS Code and Sublime Text, sqlui-native comes with a command palette that lets you reach your mostly used command via a key combo `CMD + P` or `Ctrl + P` on Windows.\n\n![image](https://user-images.githubusercontent.com/3792401/152029205-5798c53d-6304-40dc-b9d8-11700bfc03f2.png)\n\n### Connection Hints\n\nSample URI connection string can be accessed by clicking on the `Show Connection Hints` on New / Edit Connection Page. Then you can click on the sample URI connection to use that sample connection string as a starting place.\n\n![image](https://user-images.githubusercontent.com/3792401/152658433-74fdb868-293c-46b4-8bc3-ec0008f32b2d.png)\n\n### Settings\n\nSettings can be accessed via the top right menu icon. It allows you to set up preferred settings for things like Editor and Color Theme, etc...\n\n![image](https://user-images.githubusercontent.com/3792401/152658383-10a204b8-ab45-46be-87f3-03084cc2ae7a.png)\n\n![image](https://user-images.githubusercontent.com/3792401/167707497-82546e72-4a7f-4724-bf1e-8c36836d685d.png)\n\n### SQLite-based Storage\n\nApplication data (connections, queries, sessions, settings, caches) is stored in a single SQLite database file (`sqlui-native-storage.db`) in the app data directory. This makes import/export simpler compared to the previous approach of many individual JSON files.\n\nOn first launch after upgrading, existing JSON storage files are automatically migrated into the SQLite database. The original JSON files are moved to a `backup/` subdirectory (not deleted) so you can restore them if needed by moving them back to the parent directory.\n\n### Data Migration\n\nIf you happens to work with different database engine, there's a chance you want to move data from one engine to another engine. You can use `Data Migration` to craft a query to pull in data from the old engine and select a destination to generate the new schema / data for the new engine.\n\n- `Data Migration` can be accessed from the top right hamburger icon\n- From there, you have 2 options to migrate data. Either by a raw JSON or by data from an existing connection.\n\n![image](https://user-images.githubusercontent.com/3792401/176089071-ddfe9c67-46bb-4261-9e2b-0978fa25eee2.png)\n\n![image](https://user-images.githubusercontent.com/3792401/176088421-5b0e6e48-0e44-41ab-b98f-0677feff70d1.png)\n\n#### Migration of Real Existing Connection\n\nUse this data migration option to move data from an existing connection\n\n![image](https://user-images.githubusercontent.com/3792401/176088688-eaba3a95-0bf9-4efa-8513-e7b4c534074f.png)\n\n#### Migration of Raw JSON Data\n\nUse this data migration option to move raw JSON data\n\n![image](https://user-images.githubusercontent.com/3792401/176088775-385777a8-a89b-460c-878d-8bb64af20f84.png)\n\n### Bookmarks\n\nThe system allows you to bookmark connections and queries. Bookmarked items can be applied to any workspace.\n\n#### Adding new bookmark\n\n- To bookmark a connection or query, open the context menu on the Connection name or Query tab name and choose `Add to Bookmark`.\n- Give the bookmarked item a `name` and hit Save.\n\n![image](https://user-images.githubusercontent.com/3792401/176319082-d6091511-8cee-4482-a0df-81e11af8f5ec.png)\n\n![image](https://user-images.githubusercontent.com/3792401/176326012-855b02ec-e87b-4c8e-a2f2-961bc2c76296.png)\n\n#### Open a bookmark\n\nYou can select and apply a bookmarked item from bookmarks page which can be accessed via the hamburger menu bar on the top right and select `Bookmarks`\n\n- From there, you can click on the bookmarked name to apply that bookmark item.\n\n![image](https://user-images.githubusercontent.com/3792401/176320070-f1194574-94d8-4626-95a8-4743f8b7eeb7.png)\n\n![image](https://user-images.githubusercontent.com/3792401/176325971-fabcb3ad-efe3-4b19-8383-becc58b9d287.png)\n\n#### Recycle bin\n\nBy default, all closed queries and deleted connections will be stored inside of a recycle bin which you can always restore at a later. To access the recycle bin, click on the hamburger menu bar on the top right and select `Recycle Bin`.\n\n- From there you can choose to `Restore` the deleted connections or closed queries.\n- To permanently delete the items from sqlui-native, you can choose either `Empty Trash` or `Delete` individual items permanently.\n\n![image](https://user-images.githubusercontent.com/3792401/176087950-36a3ec82-c975-43c8-b225-b044bd81248e.png)\n\n![image](https://user-images.githubusercontent.com/3792401/176088031-63c7bdfb-16a1-481c-9ca3-615043d5f362.png)\n\n##### Hard Delete\n\nIf you want to permanently delete those and not put it in the recycle bin, you can set the `Delete Mode` to be hard delete.\n\n![image](https://user-images.githubusercontent.com/3792401/176343562-0f4400b2-881d-4a55-becc-3ad82c564bc6.png)\n\n### Relationship Chart (FK Visualization)\n\nFor relational databases (MySQL, MariaDB, MSSQL, PostgreSQL, SQLite), you can visualize foreign key relationships between tables as an interactive diagram.\n\n- Access it from the context menu on a table name and choose `Show Relationships`\n- The diagram shows tables as nodes and foreign keys as edges with arrows\n- Switch between **Diagram** (interactive React Flow chart) and **Table** (sortable MUI table) views\n- Toggle between horizontal (3-column) and vertical (3-row) layouts\n- Expand/collapse edge labels to see full FK details or a summary\n- Export the diagram as a PNG image\n- Zoom, pan, and drag nodes to rearrange\n\n### Code Snippets\n\nGenerate ready-to-use connection code snippets for your database in **Java**, **JavaScript**, and **Python**. Access code snippets from the query script dropdown for any connection.\n\n### Record Pages\n\n#### New Record Page\n\n- New record page can be opened using the `New Record` button underneath the query editor.\n- There you need to select Connection / Database / Table you want to create a new record for.\n- The form will render where you need to fill out the form data.\n- Click on `Generate Script` to generate the query for the insert.\n\n![image](https://user-images.githubusercontent.com/3792401/176941021-dad33a56-55d3-439b-a3a5-600f68f7e049.png)\n\n![image](https://user-images.githubusercontent.com/3792401/176941201-460bd80e-6aa5-467d-987a-7a20637ad807.png)\n\n#### Record Details / Edit Record Page\n\n- Clicking on any record on the query results will bring up the Record Detail page\n- There you can toggle the edit mode.\n- The form will render where you need to fill out the form data.\n- Click on `Generate Script` to generate the query for the insert.\n\n## Contributing\n\n- [Repo](https://github.com/synle/sqlui-native)\n\n### Dev Note\n\nHere is the link where you can find information about how run this application locally.\n\n- [Dev Notes](https://github.com/synle/sqlui-native/blob/main/CONTRIBUTING.md)\n\n### Adding a New Database Adapter\n\nWant to add support for a new database engine? The project uses an adapter pattern where each database engine implements a standard interface (`IDataAdapter`). A starter template is provided at [`src/common/adapters/_SampleDataAdapter_/`](https://github.com/synle/sqlui-native/tree/main/src/common/adapters/_SampleDataAdapter_).\n\nThe high-level steps are:\n\n1. Add a new dialect to `typings/index.ts`\n2. Copy the sample adapter template and implement the adapter class (`index.ts`) and script generator (`scripts.ts`)\n3. Register your adapter in `DataAdapterFactory.ts` and `DataScriptFactory.ts`\n4. Add a dialect icon PNG in your adapter directory and import it in `scripts.ts`\n5. Add snapshot tests in `DataScriptFactory.spec.ts`\n\nFor the full step-by-step guide with code examples, see the [Adding new adapters](https://github.com/synle/sqlui-native/blob/main/CONTRIBUTING.md#adding-new-adapters) section in CONTRIBUTING.md.\n\n## Features / TODO's:\n\n- [x] Consolidate the interface for mocked server and the main.ts page.\n- [x] Make a build for Windows and Darwin.\n- [x] Added Basic CI/CD to package electron\n- [x] Make a build for other systems like Debian / Ubuntu and Redhat.\n- [x] Add a configuration / option page for color mode.\n- [x] Enhance the table with pagination.\n- [x] Enhance the table for result with sorting, and searching.\n- [x] Add quick query queries (such as select from a table or do update / insert).\n- [x] Add quick query to recreate the table definition (Create Table), Drop Table, etc....\n- [x] Add a full screen mode (F11)\n- [x] Add ability to save CSV / JSON / Table to files.\n- [x] Add ability to support multiple windows and sessions..\n- [x] Add ability to import and export connections and queries.\n- [x] Add ability to work with multiple instances.\n- [ ] Add autocomplete tokens for the query.\n- [x] Add dark theme (Dark mode respect system color theme).\n- [ ] Add auto update features.\n- [ ] Push a build to Microsoft Store.\n- [x] Add supports for Cassandra.\n- [x] Add supports for Azure CosmosDB.\n- [x] Add supports for [Azure Table (Azure Table storage)](https://docs.microsoft.com/en-us/azure/storage/tables/table-storage-overview).\n- [x] Add supports for Salesforce (SFDC).\n- [ ] Add supports for AWS Redshift.\n\n## Troubleshooting\n\n### Mac Apple Silicon (M-Series) - \"App is damaged\" Error\n\nOn macOS 26+ with Apple Silicon (M1/M2/M3/M4), you may see the following error when attempting to open the app:\n\n\u003e \"sqlui-native.app\" is damaged and can't be opened. You should move it to the Trash.\n\u003e \u003cimg width=\"866\" height=\"999\" alt=\"image\" src=\"https://github.com/user-attachments/assets/9a1c12fd-2936-4b77-87a5-217c461ebd56\" /\u003e\n\nThis is caused by macOS quarantine attributes applied to unsigned apps. To fix this, open Terminal and run:\n\n```\nxattr -cr /Applications/sqlui-native.app\n```\n\nAfter running the command, you should be able to open sqlui-native normally.\n\n## Limitations\n\n### sqlite Limitations\n\nsqlite doesn't support multiple statements. So if you have multiple inserts or updates in a single query, it will not work. Refer to this [Stackoverflow post for more details related to sqlite](https://stackoverflow.com/questions/1609637/is-it-possible-to-insert-multiple-rows-at-a-time-in-an-sqlite-database).\n\nIf you want to do bulk inserts, use bulk inserts API instead.\n\n```sql\nINSERT INTO\n  art (Name)\nVALUES\n  ('Queen'),\n  ('Kiss'),\n  ('Spyro Gyra')\n```\n\n### CockroachDB Limitations\n\nCockroachDB can be connected using postgresSQL. Replace `?sslmode=require` with `sslmode=no-verify`\n\nSample connection will look like this\n\n```\npostgres://demo:demo26472@127.0.0.1:26257/movr?sslmode=no-verify\n```\n\n### Cassandra Limitations\n\nCassandra Keyspaces are mapped to sqlui-native databases. And Cassandra Column Families are mapped to sqlui-native table.\n\n#### How to get connection string for CosmosDB with Cassandra API?\n\n- Go to `Connection String` of the Azure CosmosDB Cassandra\n\n![image](https://user-images.githubusercontent.com/3792401/181765317-6a63b300-ee0e-4041-a49c-e4ec6a698b39.png)\n\n##### Sample CosmosDB with Cassandra API Connection String\n\nIt will look something like this.\n\n```\ncassandra://USERNAME:PRIMARY PASSWORD@CONTACT POINT:PORT\n```\n\n### MongoDB Limitations\n\nMongoDB Collections is mapped to sqlui-native table. We scan the first 5 Documents to come up with the schema for the columns.\n\n#### Create new MongoDB Database\n\nAs of now (v1.27.0), you can create new mongodb using the following syntax\n\n```js\ndb.createDatabase(\"new-database-name\");\n```\n\n### Redis Limitations\n\nDue to the size of keys within Redis connection, we will not show all keys in the Redis cache.\n\n- As for SSL Redis support, use the `rediss://` connection scheme.\n\n#### How to get connection string for Azure Redis Cache?\n\n- Go to `Access Keys` on Azure Redis Cache.\n  ![image](https://user-images.githubusercontent.com/3792401/183109606-5c07c993-fed7-4877-be31-798a1ea9676d.png)\n- Connection will look like\n  `rediss://\u003cusername\u003e:\u003cpassword\u003e@\u003cyour_redis_host\u003e:\u003credis_port\u003e`\n- Sample connection will look like this. Due to how the URL scheme is parsed, a non empty string is required for the username placeholder. It can be anything but empty string.\n  `rediss://azure:Primary_Or_Secondary_Access_Key@syredis1.redis.cache.windows.net:6380`\n\n### Azure CosmosDB Limitations\n\nAzure CosmosDB Databases are mapped to sqlui-native Databases. And Azure CosmosDB Containers are mapped to sqlui-native Tables. We scan the first 5 items to come up with the schema for the columns.\n\nTested for Azure CosmosDB (with Core SQL).\n\n#### How to get connection string for CosmosDB with Core SQL API?\n\nHere's how to set up the connection. Open your resource, and click on `Keys`. Then copy and use either `PRIMARY CONNECTION STRING` or `SECONDARY CONNECTION STRING`\n\n![image](https://user-images.githubusercontent.com/3792401/168092880-28d066ad-725f-429a-8ebf-92bb7f4f6d68.png)\n![image](https://user-images.githubusercontent.com/3792401/168093067-fe0aa98c-297c-4f11-a16e-8c60797de800.png)\n\n##### Sample CosmosDB with Core SQL API Connection String\n\nIt will look something like this.\n\n```\ncosmosdb://\u003cyour_primary_connection_string\u003e\n\nor\n\ncosmosdb://\u003cyour_secondary_connection_string\u003e\n```\n\n### Salesforce (SFDC) Limitations\n\nSalesforce SObjects are mapped to sqlui-native Tables, and Salesforce Fields are mapped to sqlui-native Columns. Each connection represents a single Salesforce Org (mapped as a single database).\n\nThe adapter supports three query modes:\n\n- **SOQL** (read-only) -- Queries starting with `SELECT` are executed as SOQL\n- **SOSL** (read-only search) -- Queries starting with `FIND` are executed as SOSL\n- **JS API** (mutations) -- Queries containing `conn.` are executed as JavaScript for create, update, delete, and upsert operations\n\n#### Setting up connection string\n\n1. Sign up for a free Developer Org at [developer.salesforce.com/signup](https://developer.salesforce.com/signup)\n2. Get your Security Token: **Avatar \u003e Settings \u003e My Personal Information \u003e Reset My Security Token**\n3. Use JSON format for the connection string:\n\n```\nsfdc://{\"username\":\"you@yourcompany.dev\",\"password\":\"your_password\",\"securityToken\":\"your_token\",\"loginUrl\":\"login.salesforce.com\"}\n```\n\n- `loginUrl` defaults to `login.salesforce.com` if omitted. Use `test.salesforce.com` for sandbox orgs.\n- `securityToken` can be omitted if your IP is whitelisted.\n\n#### OAuth2 Client Credentials Flow\n\nFor orgs using Connected Apps, you can authenticate without a username/password by providing `clientId` and `clientSecret`:\n\n```\nsfdc://{\"clientId\":\"your_connected_app_client_id\",\"clientSecret\":\"your_connected_app_client_secret\",\"loginUrl\":\"your-org.my.salesforce.com\"}\n```\n\nSessions are automatically refreshed when they expire — no manual reconnection needed.\n\n#### Sample queries\n\n```sql\n-- SOQL: Select accounts\nSELECT Id, Name, Industry FROM Account LIMIT 10\n\n-- SOSL: Search across objects\nFIND {keyword} IN ALL FIELDS RETURNING Account(Id, Name), Contact(Id, Name) LIMIT 20\n```\n\n```js\n// JS API: Insert a record\nconn.sobject(\"Account\").create({ Name: \"New Account\", Industry: \"Technology\" });\n\n// JS API: Update a record\nconn.sobject(\"Account\").update({ Id: \"001xxx\", Name: \"Updated Name\" });\n\n// JS API: Delete a record\nconn.sobject(\"Account\").destroy(\"001xxx\");\n```\n\n### Azure Table Storage Limitations\n\nAzure Table Storage tables are mapped to sqlui-native Tables. We scan the first 5 items to come up with the schema for the columns.\n\n#### Setting up connection string\n\nHere's how to set up the connection.\n\n![image](https://user-images.githubusercontent.com/3792401/168092476-02b0ddb6-5cff-41fe-9b6a-8a212325999a.png)\n![image](https://user-images.githubusercontent.com/3792401/168092539-451ca459-3429-4030-9729-2894a5bbf259.png)\n\nSample connection will look like this\n\n```\naztable://\u003cyour_connection_string\u003e\n```\n\n### REST API Features\n\n- Dual syntax: auto-detects `curl` and `fetch()` input (paste from Chrome DevTools).\n- `{{VAR}}` variable interpolation with 4-layer priority (folder \u003e collection \u003e global), plus dynamic variables (`{{$timestamp}}`, `{{$randomUUID}}`).\n- Warns on unresolved `{{VAR}}` placeholders after variable resolution.\n- Supports proxy (`-x`/`--proxy`), timeouts (`--max-time`, `--connect-timeout`), basic auth (`-u`), SSL bypass (`-k`), redirects (`-L`), and file uploads (`-F`).\n- Code snippet generation for JavaScript (fetch), Python (requests), and Java (HttpClient).\n- Import from HAR files and Postman Collection v2.1; export as Postman Collection.\n- Response viewer with tabs for Body, Headers, Cookies, Timing, and Raw JSON download.\n\n### REST API Limitations\n\n- Requires `curl` installed on the system (pre-installed on macOS and most Linux distributions).\n- Uses curl/fetch syntax in the editor — not a visual form builder like Postman.\n- No persistent connection — each request is a standalone `curl` subprocess.\n- `{{VAR}}` variable interpolation is case-sensitive.\n- Connection string format: `rest://{\"HOST\":\"https://httpbin.org\"}` (also accepts legacy `restapi://`).\n- Folder nesting is limited to 2 levels (Connection → Folder → Request), matching the database/table model.\n\n## Suggestion?\n\nUse the following link to file a bug or a suggestion.\n\n- [File a bug or a suggestion?](https://github.com/synle/sqlui-native/issues/new)\n","funding_links":["https://github.com/sponsors/synle"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsynle%2Fsqlui-native","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsynle%2Fsqlui-native","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsynle%2Fsqlui-native/lists"}