- Notifications
You must be signed in to change notification settings - Fork1
Create a custom GPT to chat with your PostgreSQL Database in ChatGPT. The most popular DB you can get from Supabase, Vercel, AWS or Azure. Ask Q&A in ChatGPT and refer to database by project name.
cameronking4/chat-with-postgresql-chatgpt-action
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Use natural language to retrieve database values realtime and have ChatGPT analyze data from storage options from Supabase or Vercel - KV or Postgres DB. Host your own Next14 Admin API to securely browse your DB through ChatGPT
This is aNext.js project bootstrapped withcreate-next-app for storing database connection strings for various side projects.
This API using Next14 enables me to have a custom GPT in ChatGPT where I can query data from various side project. I can now ask ChatGPT how many users do I have and other SQL queries using natural language.
You could extend this API to build a frontend application to manage your side projects.
Get connection string for my project BuyMyRepo, then use it to understand my database. Once understood, show me a table of my users with their app profile details in a nice table.
Deploy this project in one click:
Check out ourNext.js deployment documentation for more details.
- Deploy this project to Vercel with your .env values for a PostgresQL DATABASE_URL and your own API_KEY password
- Click Actions
- ***Choose API KEY option for Authorization and select the option "Custom" header
- Set the custom header value to "api-key"*** & set your API_KEY value here
- Copy & Paste the following YAML spec into the "Schema":
openapi:3.1.0info:title:PostgreSQL Database Viewer APIdescription:API for interacting with PostgreSQL databases to retrieve schema, query tables dynamically, and manage project connection strings.version:"1.0.0"servers: -url:https://postgre-sql-databse-viewer-action.vercel.appcomponents:securitySchemes:ApiKeyAuth:type:apiKeyin:headername:api-keyschemas:Project:type:objectproperties:projectName:type:stringdescription:The name of the project.connectionString:type:stringdescription:The connection string for the PostgreSQL database.ErrorResponse:type:objectproperties:error:type:stringdetails:type:objectsecurity: -ApiKeyAuth:[]paths:/api/get-db-schema:post:operationId:getDbSchemasummary:Get Database Schemadescription:Retrieve the schema (table names and column details) from the specified PostgreSQL database.security: -ApiKeyAuth:[]requestBody:required:truecontent:application/json:schema:$ref:'#/components/schemas/Project'responses:'200':description:Schema information retrieved successfully.content:application/json:schema:type:arrayitems:type:objectproperties:table_name:type:stringcolumn_name:type:stringdata_type:type:string'401':description:Unauthorized. API key is missing or invalid.'500':description:Error querying the database schema.content:application/json:schema:$ref:'#/components/schemas/ErrorResponse'/api/query-table:post:operationId:queryTablesummary:Query Tabledescription:Query a specified table in the PostgreSQL database and retrieve records based on optional conditions.security: -ApiKeyAuth:[]requestBody:required:truecontent:application/json:schema:type:objectproperties:connectionString:type:stringdescription:Connection string for the PostgreSQL database.table:type:stringdescription:The name of the table to query.fields:type:arrayitems:type:stringdescription:Optional array of fields to retrieve.conditions:type:objectdescription:Optional conditions for querying records.responses:'200':description:Records retrieved successfully.content:application/json:schema:type:arrayitems:type:objectadditionalProperties:type:string'401':description:Unauthorized. API key is missing or invalid.'500':description:Error querying the table.content:application/json:schema:$ref:'#/components/schemas/ErrorResponse'/api/projects:post:operationId:createProjectsummary:Create Projectdescription:Add a new project with its corresponding connection string to the system.security: -ApiKeyAuth:[]requestBody:required:truecontent:application/json:schema:$ref:'#/components/schemas/Project'responses:'201':description:Project added successfully.content:application/json:schema:$ref:'#/components/schemas/Project''401':description:Unauthorized. API key is missing or invalid.'500':description:Error adding project.content:application/json:schema:$ref:'#/components/schemas/ErrorResponse'/api/projects/{projectName}:get:operationId:getProjectConnectionStringsummary:Get Project Connection Stringdescription:Retrieve the connection string for a project by its name.security: -ApiKeyAuth:[]parameters: -name:projectNamein:pathrequired:trueschema:type:stringdescription:The name of the project.responses:'200':description:Connection string retrieved successfully.content:application/json:schema:$ref:'#/components/schemas/Project''401':description:Unauthorized. API key is missing or invalid.'404':description:Project not found.content:application/json:schema:$ref:'#/components/schemas/ErrorResponse''500':description:Error retrieving project connection string.content:application/json:schema:$ref:'#/components/schemas/ErrorResponse'
- POST: Add Project and Connection String
curl -X POST http://localhost:3000/api/projects \-H"api-key: MOCHA1233" \-H"Content-Type: application/json" \-d'{"projectName": "MyProject", "connectionString": "postgres://your_db_user:your_db_password@localhost:5432/your_db_name"}'
- GET: Retrieve Connection String by Project Name
curl -X GET http://localhost:3000/api/projects/MyProject \-H"api-key: API-KEY-HERE"- POST: Fetch Schema Information from a Database
curl -X POST http://localhost:3000/api/fetch-schema \-H"api-key: API-KEY-HERE" \-H"Content-Type: application/json" \-d'{"connectionString": "postgres://your_db_user:your_db_password@localhost:5432/your_db_name"}'
- POST: Query a Table with Fields and Conditions
curl -X POST http://localhost:3000/api/query-table \-H"api-key: API-KEY-HERE" \-H"Content-Type: application/json" \-d'{"connectionString": "postgres://your_db_user:your_db_password@localhost:5432/your_db_name", "table": "your_table", "fields": ["field1", "field2"], "conditions": {"field1": "value1"}}'
First, run the development server:
npm run dev# oryarn dev# orpnpm dev# orbun dev
Openhttp://localhost:3000 with your browser to see the result.
You can start editing the page by modifyingapp/page.tsx. The page auto-updates as you edit the file.
This project usesnext/font to automatically optimize and load Inter, a custom Google Font.
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check outthe Next.js GitHub repository - your feedback and contributions are welcome!
About
Create a custom GPT to chat with your PostgreSQL Database in ChatGPT. The most popular DB you can get from Supabase, Vercel, AWS or Azure. Ask Q&A in ChatGPT and refer to database by project name.
Topics
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.
