### **PR Type** Enhancement ___ ### **Description** - Add custom column types to database tables - Improve handling of user-defined data types - Update UI components for custom type support - Refactor column type normalization and validation ___ ### Diagram Walkthrough ```mermaid flowchart LR A["Column Type Handling"] -- "Extend" --> B["Custom Types"] B -- "Update" --> C["UI Components"] B -- "Refactor" --> D["Type Normalization"] D -- "Improve" --> E["Data Validation"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>15 files</summary><table> <tr> <td><strong>Autocomplete.tsx</strong><dd><code>Enhance Autocomplete component for custom types</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-b185666714ca832d5c45c366618b79862f6b4f03e4f7657c78afa38a52e7c4c2">+27/-3</a> </td> </tr> <tr> <td><strong>BaseColumnForm.tsx</strong><dd><code>Update BaseColumnForm to support custom column types</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-9750f922830f8637c2d1b81c5e40128bc4fca7a9349a5314e421353d73bf6f38">+43/-16</a> </td> </tr> <tr> <td><strong>ColumnEditorRow.tsx</strong><dd><code>Modify ColumnEditorRow to handle custom types</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-264f067037cfa5d08dbb97964a9ddb8f6296129441682b78f6984c37051ea3f8">+37/-10</a> </td> </tr> <tr> <td><strong>DataBrowserGrid.tsx</strong><dd><code>Update DataBrowserGrid to display full data type</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-5910fd8730fbe65c60aa5f54031989a7868e944d5958f69535e5684b72ca1396">+6/-11</a> </td> </tr> <tr> <td><strong>DatabaseRecordInputGroup.tsx</strong><dd><code>Adjust DatabaseRecordInputGroup for custom types</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-52b5499e9afc3c5e4929046b487de649d421dda3250a4131462ec710575abc12">+1/-1</a> </td> </tr> <tr> <td><strong>prepareCreateColumnQuery.ts</strong><dd><code>Modify prepareCreateColumnQuery for custom types</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-9b3695fb28760e86fc966e2149082b798664f145a8b64ef66184e55a905f5071">+1/-1</a> </td> </tr> <tr> <td><strong>prepareCreateTableQuery.ts</strong><dd><code>Adjust prepareCreateTableQuery for custom types</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-1458307108df70f7037fa516ccab3a028533cf23f752778fcb09ed8d326530e5">+1/-1</a> </td> </tr> <tr> <td><strong>fetchTable.ts</strong><dd><code>Modify fetchTable to include full data type</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-a58cb7660972ff84991cdd9777de5cf0834485072cbd421f8809638227c36820">+36/-28</a> </td> </tr> <tr> <td><strong>prepareUpdateColumnQuery.ts</strong><dd><code>Adjust prepareUpdateColumnQuery for custom types</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-ef957000505e4ba437656c38b4371d4041471ce5a4c193ef381aa55e0c51c308">+1/-1</a> </td> </tr> <tr> <td><strong>dataBrowser.ts</strong><dd><code>Update type definitions for custom column types</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-33c6810dbd7e2910c86a15009467a348f064380b0e1dd787ef320b4e7543403b">+2/-3</a> </td> </tr> <tr> <td><strong>index.ts</strong><dd><code>Add new utility for normalizing column types</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-df62570fe4a332639b789274e3db4ea98cc695bc306f6dc1692851280bdb2fde">+1/-0</a> </td> </tr> <tr> <td><strong>normalizeColumnType.ts</strong><dd><code>Implement normalizeColumnType utility function</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-6bc7935091971eb83f99ba700e11f7214599d4d86e41f96d0d8295bdd6441d8f">+11/-0</a> </td> </tr> <tr> <td><strong>normalizeDatabaseColumn.ts</strong><dd><code>Modify normalizeDatabaseColumn to use new utility</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-e00d1c71fcbc63286896b597ce820388987e0a7edb005bda8a13bb0c0813434b">+2/-1</a> </td> </tr> <tr> <td><strong>postgresqlConstants.ts</strong><dd><code>Update PostgreSQL type constants and groups</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-b497da90feca5bff94b0d38b69e519d171d43acc292098054d672a73a89b4717">+6/-8</a> </td> </tr> <tr> <td><strong>DataGridTextCell.tsx</strong><dd><code>Adjust DataGridTextCell for custom type handling</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-d1ed74fe8eb7a61053dfe908966311e13915ad2127ee107b62f725d6c5282492">+1/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>5 files</summary><table> <tr> <td><strong>prepareCreateTableQuery.test.ts</strong><dd><code>Update tests for custom column type support</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-348ba7ca6fc037a9d0de76a24efc36846c634d82755bbf33dd5062a7face06ec">+232/-198</a></td> </tr> <tr> <td><strong>prepareUpdateColumnQuery.test.ts</strong><dd><code>Update tests for custom column type changes</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-65420c7003a95c03b31fc4b0e45f6a22387f81c1ce8e41a2d7cb89cc44dbda26">+557/-494</a></td> </tr> <tr> <td><strong>prepareUpdateTableQuery.test.ts</strong><dd><code>Update tests for custom column type support</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-57c2f882497d653700d68905bb54c891592a6bf302040d3008d624900f1bdf64">+2/-2</a> </td> </tr> <tr> <td><strong>getInputType.test.ts</strong><dd><code>Update tests for input type handling</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-01a507828b9440cd99bd0722ab5b577d8dd1774f2320168ad88222138960e831">+3/-3</a> </td> </tr> <tr> <td><strong>normalizeDatabaseColumn.test.ts</strong><dd><code>Update tests for database column normalization</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-a451c29ffa35243d4dbb462e3a048088c514f8056effedf782fcc57d5235e338">+5/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>rich-dragons-attend.md</strong><dd><code>Add changeset for custom column types feature</code> </dd></td> <td><a href="https://github.com/nhost/nhost/pull/3442/files#diff-bb90b20cf816a7c7bfc628f9daae90b9deff5d8c00f36361190d6147b46fb6be">+5/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___
Nhost
Quickstart
•
Website
•
Docs
•
Blog
•
Twitter
•
Discord
•
Ask Nhost Guru (third party, unofficial)
Nhost is an open source Firebase alternative with GraphQL, built with the following things in mind:
- Open Source
- GraphQL
- SQL
- Great Developer Experience
Nhost consists of open source software:
- Database: PostgreSQL
- Instant GraphQL API: Hasura
- Authentication: Hasura Auth
- Storage: Hasura Storage
- Serverless Functions: Node.js (JavaScript and TypeScript)
- Nhost CLI for local development
Architecture of Nhost
Visit https://docs.nhost.io for the complete documentation.
Get Started
Option 1: Nhost Hosted Platform
- Sign in to Nhost.
- Create Nhost app.
- Done.
Option 2: Self-hosting
Since Nhost is 100% open source, you can self-host the whole Nhost stack. Check out the example docker-compose file to self-host Nhost.
Sign In and Make a GraphQL Request
Install the @nhost/nhost-js package and start building your app:
import { NhostClient } from '@nhost/nhost-js'
const nhost = new NhostClient({
subdomain: '<your-subdomain>',
region: '<your-region>'
})
await nhost.auth.signIn({ email: 'user@domain.com', password: 'userPassword' })
await nhost.graphql.request(`{
users {
id
displayName
email
}
}`)
Frontend Agnostic
Nhost is frontend agnostic, which means Nhost works with all frontend frameworks.
Resources
- Start developing locally with the Nhost CLI
Nhost Clients
Integrations
Applications
Community ❤️
First and foremost: Star and watch this repository to stay up-to-date.
Also, follow Nhost on GitHub Discussions, our Blog, and on Twitter. You can chat with the team and other members on Discord and follow our tutorials and other video material at YouTube.
Nhost is Open Source
This repository, and most of our other open source projects, are licensed under the MIT license.
How to contribute
Here are some ways of contributing to making Nhost better:
- Try out Nhost, and think of ways to make the service better. Let us know here on GitHub.
- Join our Discord and connect with other members to share and learn from.
- Send a pull request to any of our open source repositories on Github. Check our contribution guide and our developers guide for more details about how to contribute. We're looking forward to your contribution!
Contributors

