├── .dockerignore ├── .gitignore ├── Dockerfile ├── README.md ├── next.config.js ├── package-lock.json ├── package.json ├── postcss.config.js ├── public ├── IMG_2024.jpg ├── MKKY_logo.svg ├── gh.svg ├── home-icon.svg ├── mkky.svg ├── mouse.svg ├── next.svg ├── ourGif.gif ├── pngegg.png ├── teampic.svg └── vercel.svg ├── src └── app │ ├── Providers.tsx │ ├── api │ ├── auth │ │ ├── [...nextauth] │ │ │ └── route.ts │ │ └── lib │ │ │ └── mongodb.ts │ ├── delete │ │ └── route.ts │ ├── methods │ │ └── route.ts │ └── route.ts │ ├── components │ ├── Nav.tsx │ ├── home │ │ ├── display.tsx │ │ ├── input.tsx │ │ ├── page.tsx │ │ ├── style.css │ │ ├── tableCell.tsx │ │ └── wrapper.tsx │ ├── login │ │ └── page.tsx │ ├── signOut │ │ └── page.tsx │ └── signUp │ │ └── page.tsx │ ├── globals.css │ ├── layout.tsx │ ├── model │ └── user.ts │ ├── page.tsx │ └── utils │ └── database.tsx ├── tailwind.config.js └── tsconfig.json /.dockerignore: -------------------------------------------------------------------------------- 1 | Exclude node_modules directory -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env*.local 29 | 30 | # vercel 31 | .vercel 32 | 33 | # typescript 34 | *.tsbuildinfo 35 | next-env.d.ts 36 | 37 | *.zip 38 | 39 | .env -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:16.13 2 | WORKDIR /usr/src/app 3 | COPY . /usr/src/app/ 4 | RUN npm install && \ 5 | npm run build 6 | EXPOSE 3000 7 | CMD ["npm", "start"] -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | This is a [Next.js](https://nextjs.org/) project 3 | 4 | 42 | 43 | PRS Welcome || License MIT 44 | 45 | Welcome to PGQL! Our product allows you to seamlessly visualize your SQL database tables and perform edits right in the application. No more writing queries. 46 | 47 | ## Getting Started 48 | 49 | Requirements 50 | 51 | You'll need a Postgres database with it's respective URI. After logging in, input your URI in the provided space to get started. 52 | 53 | That's it! 54 | 55 | ## Features 56 | 57 | PostGres-Query-Less(PGQL) is an open-source web application that can be used to connect to any cloud PostgreSQL database to visualize and adjust it’s content. We strive to provide our users with a simple interface to communicate with their cloud databases through onClick functionality. When users make changes in their visualized database, queries are automated to adjust their databases directly in real-time. 58 | 59 | Currently the application supports UPDATE and DELETE queries. Once a URI is inputted, our application visualizes all the tables and populates the data into interactive table cells. These cells can be updated, onClick, and once a change is made the user can press ENTER to execute built in queries that update your database in real-time. To delete rows, users can change the primary key value of the target row to “-1” and press ENTER. 60 | 61 | 62 | ## Resources 63 | 64 | Built using: 65 | - React 66 | - NodeJS 67 | - NextJS 68 | - TypeScript 69 | - TailwindCSS 70 | - PostgreSQL 71 | - MongoDB 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | 3 | const nextConfig = {} 4 | 5 | module.exports = nextConfig 6 | 7 | 8 | // const withTM = require('next-transpile-modules')(['pg']); 9 | 10 | // module.exports = withTM(); 11 | 12 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mkky", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "@next-auth/mongodb-adapter": "^1.1.3", 13 | "@types/node": "20.1.3", 14 | "@types/react": "18.2.6", 15 | "@types/react-dom": "18.2.4", 16 | "autoprefixer": "10.4.14", 17 | "chart.js": "^4.3.0", 18 | "daisyui": "^2.52.0", 19 | "fs-extra": "^11.1.1", 20 | "mongodb": "^5.5.0", 21 | "mongoose": "^7.1.1", 22 | "next": "^13.4.3", 23 | "next-auth": "^4.22.1", 24 | "next-server": "^9.0.5", 25 | "next-transpile-modules": "^10.0.0", 26 | "pg": "^8.11.0", 27 | "postcss": "8.4.23", 28 | "react": "18.2.0", 29 | "react-dom": "18.2.0", 30 | "react-query": "^3.39.3", 31 | "tailwindcss": "3.3.2", 32 | "typescript": "5.0.4" 33 | }, 34 | "devDependencies": { 35 | "@types/pg": "^8.6.6" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/IMG_2024.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oslabs-beta/MKKY/40b6832340acc64d71c24fa92d40c201f2804a1f/public/IMG_2024.jpg -------------------------------------------------------------------------------- /public/MKKY_logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /public/gh.svg: -------------------------------------------------------------------------------- 1 | 3 | 71 | 152 | 173 | -------------------------------------------------------------------------------- /public/home-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/mkky.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | ]> 13 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 32 | 33 | 36 | 37 | 38 | 44 | 45 | 49 | 53 | 58 | 59 | 60 | 61 | 66 | 67 | 71 | 73 | 78 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 109 | 120 | 129 | 133 | 135 | 138 | 139 | 140 | 141 | 142 | 143 | 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 215 | 216 | 217 | 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 289 | 290 | 291 | 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 363 | 364 | 365 | 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 437 | 438 | 439 | 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 511 | 512 | 513 | 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 585 | 586 | 587 | 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 659 | 660 | 661 | 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 733 | 734 | 735 | 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 807 | 808 | 809 | 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 844 | 3hBlNA== 845 | 846 | 847 | 848 | -------------------------------------------------------------------------------- /public/mouse.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 17 | 21 | 25 | 30 | 35 | 37 | 39 | 41 | 43 | 45 | image/svg+xml 48 | 51 | 54 | 56 | 59 | Openclipart 62 | 64 | 66 | Mouse pointer 69 | 2011-04-06T19:30:10 72 | Simple mouse pointer for web designers :) 75 | https://openclipart.org/detail/131491/mouse-pointer-by-user9-131491 78 | 80 | 82 | user9 85 | 87 | 89 | 91 | 93 | cursor 96 | finger 99 | hand 102 | hyperlink 105 | link 108 | mouse 111 | pointer 114 | pointing 117 | web pointer 120 | 122 | 124 | 126 | 129 | 132 | 135 | 138 | 140 | 142 | 144 | 146 | -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/ourGif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oslabs-beta/MKKY/40b6832340acc64d71c24fa92d40c201f2804a1f/public/ourGif.gif -------------------------------------------------------------------------------- /public/pngegg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oslabs-beta/MKKY/40b6832340acc64d71c24fa92d40c201f2804a1f/public/pngegg.png -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/Providers.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | import { SessionProvider } from "next-auth/react"; 3 | export default function Provider({ 4 | children, 5 | }: { 6 | children: React.ReactNode 7 | }) { 8 | return ( 9 | 10 | {children} 11 | 12 | ) 13 | } -------------------------------------------------------------------------------- /src/app/api/auth/[...nextauth]/route.ts: -------------------------------------------------------------------------------- 1 | import NextAuth from "next-auth/next"; 2 | import GoogleProvider from 'next-auth/providers/google' //OAuth 3 | import { MongoDBAdapter } from "@next-auth/mongodb-adapter" 4 | import clientPromise from "../lib/mongodb" 5 | 6 | 7 | const handler = NextAuth({ 8 | adapter: MongoDBAdapter(clientPromise), 9 | providers: [ 10 | GoogleProvider({ 11 | clientId: process.env.GOOGLE_ID!, 12 | clientSecret: process.env.GOOGLE_CLIENT_SECRET!, 13 | }), 14 | ], 15 | }) 16 | 17 | export {handler as GET, handler as POST}; 18 | -------------------------------------------------------------------------------- /src/app/api/auth/lib/mongodb.ts: -------------------------------------------------------------------------------- 1 | // This approach is taken from https://github.com/vercel/next.js/tree/canary/examples/with-mongodb 2 | import { MongoClient } from "mongodb"; 3 | 4 | if (!process.env.MONGODB_URI) { 5 | throw new Error('Invalid/Missing environment variable: "MONGODB_URI"'); 6 | console.log('didnt work') 7 | } 8 | 9 | const uri = process.env.MONGODB_URI; 10 | const options = {}; 11 | 12 | let client; 13 | let clientPromise: Promise; 14 | 15 | if (process.env.NODE_ENV === "development") { 16 | // In development mode, use a global variable so that the value 17 | // is preserved across module reloads caused by HMR (Hot Module Replacement). 18 | if (!global._mongoClientPromise) { 19 | client = new MongoClient(uri, options); 20 | global._mongoClientPromise = client.connect(); 21 | } 22 | clientPromise = global._mongoClientPromise; 23 | // console.log('client promoise:', clientPromise) 24 | } else { 25 | // In production mode, it's best to not use a global variable. 26 | client = new MongoClient(uri, options); 27 | clientPromise = client.connect(); 28 | console.log('connected'); 29 | } 30 | 31 | // Export a module-scoped MongoClient promise. By doing this in a 32 | // separate module, the client can be shared across functions. 33 | export default clientPromise; -------------------------------------------------------------------------------- /src/app/api/delete/route.ts: -------------------------------------------------------------------------------- 1 | export const POST = async(req) => { 2 | 3 | try{ 4 | const body = await req.json(); 5 | 6 | 7 | console.log('THE QUERY ======', body.query) 8 | console.log('THE URI ======', body.uri) 9 | console.log('THE VALUE ======', body.value) 10 | const URI = body.uri; 11 | const query = body.query; 12 | let pg = require('pg') 13 | let client = new pg.Client(URI) 14 | await client.connect() 15 | await client.query(query) 16 | await client.end(); 17 | return new Response(JSON.stringify("query successful")); 18 | }catch(error){ 19 | const body = await req.json(); 20 | console.log(body) 21 | console.log(error) 22 | return new Response(JSON.stringify("query unsuccessful")); 23 | } 24 | } -------------------------------------------------------------------------------- /src/app/api/methods/route.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | export const POST = async(req) => { 5 | const { stringURI } = await req.json(); 6 | let pg = require('pg') 7 | let pool = new pg.Pool({connectionString: stringURI}) 8 | let client = await pool.connect() 9 | const allTables = await client.query("SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';") 10 | console.log("TABLES 1", allTables) 11 | 12 | for(let i = 0; i< allTables.rows.length; i++){ 13 | if (allTables.rows[i]["table_name"] === "pg_stat_statements"){ 14 | allTables.rows.splice(i,1) 15 | } 16 | } 17 | console.log("TABLES 2", allTables) 18 | const allTableNames: any[] = Object.values(allTables.rows) 19 | console.log("ALL TABLE NAME POST SLICE", allTableNames) 20 | let tableData: string[] = []; 21 | let allTablesData: any[] = []; 22 | allTableNames.forEach( async (table: any) => { 23 | tableData = await client.query(`SELECT * FROM ${table.table_name}`) 24 | allTablesData.push(tableData) 25 | }) 26 | tableData = await client.query(`SELECT * FROM ${allTableNames[0].table_name}`); 27 | let allTablesFields: any[] = []; 28 | allTablesData.forEach(table => { 29 | let newFieldsArr: any[] = [] 30 | table.fields.forEach(field => { 31 | newFieldsArr.push(field.name) 32 | }) 33 | allTablesFields.push(newFieldsArr) 34 | }) 35 | const allData = { 36 | allTableNames, 37 | allTablesFields, 38 | allTablesData 39 | } 40 | await client.release(); 41 | await client.end(); 42 | return new Response(JSON.stringify(allData)) 43 | } -------------------------------------------------------------------------------- /src/app/api/route.ts: -------------------------------------------------------------------------------- 1 | 2 | export async function PATCH(request: Request) { 3 | //const {tableName, colID, newVal, keyName, rowID} = request.body 4 | // console.log("THE BODY", await request.json()) 5 | let theBody = await request.json() 6 | let pg = require('pg') 7 | const URI = theBody.uri; 8 | let client = new pg.Client(URI) 9 | // //let updateQuery = `UPDATE ${request.body.tableName} SET ${colID} = ${newVal} WHERE ${keyName} = ${rowID} ` 10 | await client.connect() 11 | 12 | // let pg = require('pg') 13 | // // const URI = "postgres://jxbiwedv:tWMx8_U1YtUH3Noj4vFCNMVW1yHOfEWb@jelani.db.elephantsql.com/jxbiwedv"; 14 | // let client = new pg.Client(URI) 15 | // //let updateQuery = `UPDATE ${request.body.tableName} SET ${colID} = ${newVal} WHERE ${keyName} = ${rowID} ` 16 | // client.connect() 17 | let result = await client.query(theBody.query) 18 | await client.end(); 19 | return result; 20 | // return NextResponse.json({ data }); 21 | } 22 | 23 | 24 | 25 | 26 | export const POST = async(req) => { 27 | const { URI } = await req.json() 28 | let pg = require('pg') 29 | try{ 30 | let client = new pg.Client(URI) 31 | await client.connect() 32 | await client.end(); 33 | return new Response(JSON.stringify(true)) 34 | } 35 | catch (error){ 36 | return new Response(JSON.stringify("ERROR IN URL")) 37 | } 38 | } -------------------------------------------------------------------------------- /src/app/components/Nav.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | import Link from 'next/link'; 3 | import Image from 'next/image'; 4 | import Something from './signOut/page'; 5 | import { useSession } from 'next-auth/react'; 6 | 7 | import {signIn} from 'next-auth/react'; 8 | 9 | const Nav = () => { 10 | const { data: session } = useSession(); 11 | // console.log('THE SESSION:', session?.user.email) 12 | return ( 13 | 54 | ) 55 | } 56 | 57 | export default Nav -------------------------------------------------------------------------------- /src/app/components/home/display.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import React , {useEffect, useState} from "react"; 4 | import TableCell from "./tableCell"; 5 | import "./style.css" 6 | 7 | 8 | //const UpdateQueryContext = createContext(null) 9 | const Display = ({ uri }) =>{ 10 | console.log('IN DISPLAY:', uri) 11 | const [data, setData] = useState({ 12 | allTableNames: ['Holder'], 13 | allTablesFields: [[]], 14 | allTablesData: {rows : ['Holder']} 15 | }); 16 | const [showData, setShowData] = useState(false); 17 | useEffect((): any => { 18 | fetch('/api/methods/', { 19 | headers:{ 20 | 'Content-Type': 'application/json' 21 | }, 22 | method: 'POST', 23 | body: JSON.stringify({stringURI: uri}) 24 | }) 25 | .then(data => data.json()) 26 | .then(data => { 27 | setData(data); 28 | setShowData(true); 29 | }) 30 | 31 | }, []) 32 | if (showData) { 33 | return ( 34 | 35 | 36 |
37 | 38 | {data.allTableNames.map((table:any, index: number) => ( 39 | 40 |
41 |

{table.table_name}

42 | 43 | 44 | {data.allTablesFields[index].map((fields:any) => ( 45 | 46 | 47 | ))} 48 | {data.allTablesData[index].rows.map((row: any) => ( 49 | 50 | {Object.keys(row).map((cell:any, colIndex: number) => ( 51 | // 52 | 53 | 54 | ))} 55 | {/* {console.log("ROWID", row.id, "COLID", allTablesFields[index], "TABLE", table.table_name)} */} 56 | 57 | )) 58 | } 59 |
{fields}
{submitQuery(table.table_name, allTablesFields[index][colIndex], event.target.value, allTablesFields[index][0], row.id)}}>
60 | 61 |
62 | ))} 63 |
64 | ) 65 | } 66 | else { 67 | return ( 68 |
69 |

Loading...

70 |
71 | 75 | Loading... 76 |
77 |
78 | ) 79 | } 80 | // let pg = require('pg') 81 | // // const URI = "postgres://jxbiwedv:tWMx8_U1YtUH3Noj4vFCNMVW1yHOfEWb@jelani.db.elephantsql.com/jxbiwedv"; 82 | // let client = new pg.Client('postgres://jxbiwedv:tWMx8_U1YtUH3Noj4vFCNMVW1yHOfEWb@jelani.db.elephantsql.com/jxbiwedv') 83 | // //let updateQuery = `UPDATE ${request.body.tableName} SET ${colID} = ${newVal} WHERE ${keyName} = ${rowID} ` 84 | // client.connect() 85 | // //const allTables = await executeQuery("SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';") 86 | // const allTables = await client.query("SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';") 87 | //allTables.rows.pop() 88 | 89 | 90 | // let allTablesData = [] 91 | // let tableData; 92 | 93 | // for(let i = 0; i< allTables.rows.length; i++){ 94 | // if (allTables.rows[i]["table_name"] === "pg_stat_statements"){ 95 | // allTables.rows.splice(1,i) 96 | // } 97 | 98 | // } 99 | // const allTableNames = Object.values(allTables.rows) 100 | // console.log("NOW THE TABLES ARE ", allTableNames ) 101 | // //Removing SQL default table 102 | // //allTableNames.pop() 103 | // allTableNames.forEach( async (table) => { 104 | // //tableData = await executeQuery(`SELECT * FROM ${table.table_name}`) 105 | // tableData = await client.query(`SELECT * FROM ${table.table_name}`) 106 | // allTablesData.push(tableData) 107 | // }) 108 | // //tableData = await executeQuery(`SELECT * FROM ${allTableNames[0].table_name}`); 109 | // tableData = await client.query(`SELECT * FROM ${allTableNames[0].table_name}`); 110 | 111 | //allTables.rows.pop() 112 | 113 | // let allTablesFields = []; 114 | // //let newFieldsArr = [] 115 | // allTablesData.forEach(table => { 116 | // let newFieldsArr = [] 117 | // table.fields.forEach(field => { 118 | // newFieldsArr.push(field.name) 119 | // }) 120 | // allTablesFields.push(newFieldsArr) 121 | // }) 122 | 123 | //await client.end() 124 | 125 | 126 | // return ( 127 | 128 | //
129 | 130 | // 131 | // {console.log('ALL DATA:', data)} 132 | // {data.allTableNames.map((table:any, index: number) => ( 133 | 134 | //
135 | //

{table.table_name}

136 | 137 | // 138 | // {data.allTablesFields[index].map((fields:any) => ( 139 | 140 | // 141 | // ))} 142 | // {data.allTablesData[index].map((row: any) => ( 143 | // 144 | // {Object.keys(row).map((cell:any, colIndex: number) => ( 145 | // // 146 | // 147 | 148 | // ))} 149 | // {/* {console.log("ROWID", row.id, "COLID", allTablesFields[index], "TABLE", table.table_name)} */} 150 | // 151 | // )) 152 | // } 153 | //
{fields}
{submitQuery(table.table_name, allTablesFields[index][colIndex], event.target.value, allTablesFields[index][0], row.id)}}>
154 | 155 | //
156 | // ))} 157 | //
158 | // ) 159 | // ); 160 | // }; 161 | //
162 | //

hello

163 | //
164 | 165 | 166 | // export default Display; 167 | 168 | 169 | 170 | 171 | //LOOP 1: TABLE NAME 172 | //LOOP 2: FIELDS 173 | //LOOP 2: TABLE DATA 174 | 175 | 176 | //TEST QUERIES 177 | // {console.log("All DATA", allTablesData)} 178 | // {console.log("FIELDS", allTablesData[0].fields)} 179 | // {console.log(allTables.rows)} 180 | // {console.log("ALL FIELDS", allTablesFields)} 181 | // 'use client' 182 | // import React, { useEffect, useState } from "react"; 183 | // import Chart from "chart.js"; 184 | // import { Pool } from "pg"; 185 | // import TableCell from "./tableCell"; 186 | // import Wrapper from "./wrapper"; 187 | // import "./style.css"; 188 | 189 | // const Display = (props) => { 190 | // const [allTablesData, setAllTablesData] = useState([]); 191 | // const [allTablesFields, setAllTablesFields] = useState([]); 192 | // const URI = props.URI; 193 | 194 | // useEffect(() => { 195 | // const fetchData = async () => { 196 | // let pg = require("pg"); 197 | // let client = new pg.Client(URI); 198 | // client.connect(); 199 | 200 | // const allTables = await client.query( 201 | // "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';" 202 | // ); 203 | 204 | // let filteredTables = allTables.rows.filter( 205 | // (row) => row.table_name !== "pg_stat_statements" 206 | // ); 207 | 208 | // const allTableNames = filteredTables.map((row) => row.table_name); 209 | 210 | // const tableDataPromises = allTableNames.map((tableName) => 211 | // client.query(`SELECT * FROM ${tableName}`) 212 | // ); 213 | // const resolvedTableData = await Promise.all(tableDataPromises); 214 | 215 | // setAllTablesData(resolvedTableData); 216 | 217 | // const tableFields = resolvedTableData.map((table) => 218 | // table.fields.map((field) => field.name) 219 | // ); 220 | // setAllTablesFields(tableFields); 221 | 222 | // client.end(); 223 | // }; 224 | 225 | // fetchData(); 226 | // }, [URI]); 227 | 228 | // return ( 229 | //
230 | // 231 | // {allTablesData.map((table, index) => ( 232 | //
233 | //

{table.rows[index].table_name}

234 | // 235 | // 236 | // 237 | // {allTablesFields[index].map((field, fieldIndex) => ( 238 | // 239 | // ))} 240 | // 241 | // 242 | // 243 | // {table.rows.map((row) => ( 244 | // 245 | // {Object.keys(row).map((cell, colIndex) => ( 246 | // 255 | // ))} 256 | // 257 | // ))} 258 | // 259 | //
{field}
260 | //
261 | // ))} 262 | //
263 | // ); 264 | // }; 265 | 266 | } 267 | export default Display; 268 | -------------------------------------------------------------------------------- /src/app/components/home/input.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | import React, { useState } from 'react' 3 | import Display from "./display" 4 | 5 | const Input = () => { 6 | const [value, setValue] = useState('') 7 | const [showComponent, setShowComponent] = useState(false); 8 | const handleURI = async(value, e) => { 9 | e.preventDefault(); 10 | await fetch('/api/', { 11 | method: 'POST', 12 | body: JSON.stringify({ 13 | URI: value 14 | }) 15 | }) 16 | .then(response => response.json()) 17 | .then(data => { 18 | if(data){ 19 | setShowComponent(true) 20 | } 21 | }) 22 | 23 | } 24 | if (!showComponent){ 25 | return ( 26 |
27 |
28 |

URI :

29 | setValue(event.target.value)}> 30 | 31 | 32 | 33 |
34 | 35 |
36 | ) 37 | } else{ 38 | return( 39 | 40 | // router.push("/components/display") 41 |
42 |
43 | 44 |
45 | 46 |
47 | 48 | ) 49 | } 50 | } 51 | 52 | export default Input -------------------------------------------------------------------------------- /src/app/components/home/page.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | //import ReactDOM from 'react-dom'; 3 | //import Display from "./display" 4 | import Input from "./input" 5 | 6 | function App() { 7 | 8 | return ( 9 | 10 |
11 | 12 | 13 |

PGQL

14 | 15 |
16 | ); 17 | }; 18 | 19 | export default App; -------------------------------------------------------------------------------- /src/app/components/home/style.css: -------------------------------------------------------------------------------- 1 | 2 | /* @import url('https://fonts.googleapis.com/css2?family=Rubik&display=swap'); */ 3 | @import url('https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,400;1,800&display=swap'); 4 | 5 | 6 | h2 { 7 | background-color: rgb(129, 205, 212) ; 8 | font-family: 'Rubik', sans-serif 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/app/components/home/tableCell.tsx: -------------------------------------------------------------------------------- 1 | "use client" 2 | 3 | import React, { useState } from "react"; 4 | 5 | 6 | import "../../globals.css" 7 | //import {executeQuery} from "./db2" 8 | // import {PATCH} from '../../api/route' 9 | 10 | 11 | function TableCell (props) { 12 | 13 | const [value, setValue] = useState(`${props.data}`); 14 | //const updateQuery = `UPDATE ${props.table_name} SET ${props.colID} = ${value} WHERE ${props.keyName} = ${props.rowID} ` 15 | 16 | async function submitQuery(event, tableName, colID, newVal, keyName, rowID, uri){ 17 | event.preventDefault() 18 | let updateQuery = `UPDATE ${tableName} SET ${colID} = '${newVal}' WHERE ${keyName} = ${rowID} ` 19 | //executeQuery(updateQuery) 20 | await fetch('/api', { 21 | method: "PATCH", 22 | headers: { 23 | 'Content-Type': 'application/json', 24 | }, 25 | body: JSON.stringify({uri: uri, query: updateQuery}) 26 | 27 | }) 28 | //const updateQuery = `UPDATE ${props.table_name} SET ${props.colID} = ${value} WHERE ${props.keyName} = ${props.rowID} ` 29 | return setValue(newVal) 30 | } 31 | 32 | async function deleterQuery(event, value, tableName,rowID, colID, uri, keyName){ 33 | event.preventDefault() 34 | if (value == -1 && colID === keyName){ 35 | let deleteQuery = `DELETE FROM ${tableName} WHERE ${colID} = '${value}'` 36 | await fetch('/api/delete', { 37 | method: 'POST', 38 | headers: { 39 | 'Content-Type': 'application/json', 40 | }, 41 | body: JSON.stringify({ 42 | rowID: rowID, 43 | uri: uri, 44 | query: deleteQuery, 45 | value: value, 46 | }) 47 | }) 48 | } 49 | } 50 | //event.target.value ---> NEWVAL 51 | //console.log("KEYNAME", props.keyName, "ROWID", props.rowID, "COLID", props.colID, "TABLE", props.tableName) 52 | return ( 53 | 54 |
{ 55 | submitQuery(event, props.tableName, props.colID, value, props.keyName, props.rowID, props.URI) 56 | deleterQuery(event, value, props.tableName, props.rowID, props.colID, props.URI, props.keyName) 57 | }} 58 | > setValue(event.target.value)} >
59 | ) 60 | } 61 | 62 | export default TableCell; -------------------------------------------------------------------------------- /src/app/components/home/wrapper.tsx: -------------------------------------------------------------------------------- 1 | // import TableCell from "./display/tableCell"; 2 | 3 | // import {executeQuery} from './db' 4 | 5 | // function Wrapper(props){ 6 | // function submitQuery(tableName, colID, newVal, keyName, rowID){ 7 | 8 | // const updateQuery = `UPDATE ${tableName} SET ${colID} = ${newVal} WHERE ${keyName} = ${rowID} ` 9 | // return executeQuery(updateQuery) 10 | // //const updateQuery = `UPDATE ${props.table_name} SET ${props.colID} = ${value} WHERE ${props.keyName} = ${props.rowID} ` 11 | 12 | // } 13 | // return( 14 | // 15 | // ) 16 | // } 17 | // export default Wrapper; 18 | 19 | //onChange={(event) => submitQuery(props.table_name,props.colID,event.target.value, props.keyName, props.rowID)} -------------------------------------------------------------------------------- /src/app/components/login/page.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import { NextPage } from 'next'; 4 | 5 | import {signIn} from 'next-auth/react'; 6 | 7 | 8 | 9 | const Login: NextPage = (): JSX.Element => { 10 | return ( 11 |
12 | {/*
*/} 13 | {/*

LOGIN

*/} 14 |
15 | 18 |
19 |
20 | {/* */} 23 |
24 | {/*
*/} 25 |
26 | ) 27 | } 28 | 29 | export default Login -------------------------------------------------------------------------------- /src/app/components/signOut/page.tsx: -------------------------------------------------------------------------------- 1 | //when there is layout.tsx, next.js goes to layout to render rather than just the page 2 | 3 | 'use client' 4 | import Link from 'next/link'; 5 | import {signOut} from 'next-auth/react'; 6 | 7 | export default function Something(){ 8 | return ( 9 |
10 | 11 | 12 | 13 |
14 | 15 | ) 16 | }; 17 | 18 | -------------------------------------------------------------------------------- /src/app/components/signUp/page.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | import { NextPage } from 'next'; 3 | 4 | 5 | 6 | import {signIn} from 'next-auth/react'; 7 | 8 | 9 | const Signup: NextPage = (): JSX.Element => { 10 | return ( 11 |
12 |
13 |

SIGNUP

14 | 15 | 16 | 17 |
18 | 21 |
22 |
23 | 26 |
27 |
28 |
29 | ) 30 | } 31 | 32 | export default Signup -------------------------------------------------------------------------------- /src/app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | /* :root { 6 | --foreground-rgb: 0, 0, 0; 7 | --background-start-rgb: 214, 219, 220; 8 | --background-end-rgb: 255, 255, 255; 9 | } 10 | 11 | @media (prefers-color-scheme: dark) { 12 | :root { 13 | --foreground-rgb: 255, 255, 255; 14 | --background-start-rgb: 0, 0, 0; 15 | --background-end-rgb: 0, 0, 0; 16 | } 17 | } */ 18 | 19 | /* html { 20 | height: 100%; 21 | 22 | } */ 23 | body { 24 | color: rgb(var(--foreground-rgb)); 25 | background: linear-gradient( 26 | to bottom, 27 | transparent, 28 | rgb(var(--background-end-rgb)) 29 | ) 30 | rgb(var(--background-start-rgb)); 31 | background-color: rgb(225, 229, 230); 32 | height:100%; 33 | color: black; 34 | } 35 | 36 | .test { 37 | height: 500px; 38 | padding-top:200px; 39 | } 40 | #extension { 41 | height: 100vh; 42 | } 43 | #extension2 { 44 | height: 100%; 45 | } 46 | .sign-in-form{ 47 | width: 100%; 48 | height: 100vh; 49 | display: flex; 50 | justify-content: center; 51 | align-items: center; 52 | } 53 | .sign-in-form input{ 54 | display: block; 55 | padding: 5px; 56 | border: 1px gray solid; 57 | border-radius: 3px; 58 | margin-top: 15px; 59 | } 60 | .sign-in-form h1{ 61 | font-size: 18px; 62 | text-align: center; 63 | } 64 | .sign-in-form form{ 65 | padding: 50px 15px; 66 | border: 2px gray solid; 67 | border-radius: 3px; 68 | } 69 | .extension { 70 | height: 100%; 71 | } 72 | .extension2 { 73 | height: 70%; 74 | } 75 | @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;600&display=swap'); 76 | @import url('https://fonts.googleapis.com/css2?family=Geologica:wght@600&display=swap'); 77 | @import url('https://fonts.googleapis.com/css2?family=Rajdhani&display=swap'); 78 | 79 | body { 80 | box-sizing: border-box; 81 | color: #1f2937; 82 | font-family: 'Poppins', sans-serif; 83 | } 84 | 85 | .container { 86 | width: 100%; 87 | max-width: 800px; 88 | padding: 0 10px; 89 | margin: 0 auto; 90 | margin-top: 70px; 91 | } 92 | 93 | .title { 94 | text-align: center; 95 | font-size: 26px; 96 | margin-bottom: 30px; 97 | } 98 | 99 | .row4 { 100 | display: table; 101 | width: 100%; 102 | } 103 | 104 | .column4 { 105 | float: left; 106 | width: 25%; 107 | align-items: center; 108 | } 109 | 110 | .row2 { 111 | display: table; 112 | width: 100%; 113 | background-color: white; 114 | } 115 | 116 | .column25 { 117 | float: left; 118 | width: 75%; 119 | padding-left:25px; 120 | align-items: center; 121 | padding-bottom:100px; 122 | } 123 | 124 | .column75 { 125 | float: right; 126 | width: 75%; 127 | padding-bottom:100px; 128 | 129 | align-items: center; 130 | } 131 | .test4{ 132 | background-color:white; 133 | } 134 | .test3{ 135 | padding-bottom:75px; 136 | } 137 | 138 | .our-gif { 139 | /* margin-left: 20%; */ 140 | } 141 | .carosel { 142 | height: 200px; 143 | 144 | } 145 | 146 | #carosel-heading { 147 | font-family: 'Geologica', sans-serif; 148 | } 149 | 150 | .carousel-layout { 151 | padding: 10px; 152 | } 153 | 154 | h1 { 155 | font-family: 'Poppins', sans-serif; 156 | font-size: 40px; 157 | 158 | } 159 | h2 { 160 | font-family: 'Poppins', sans-serif; 161 | font-size: 30px; 162 | } 163 | table { 164 | border-collapse: collapse; 165 | width: 70%; 166 | } 167 | 168 | tr th { 169 | font-size: 18px; 170 | padding: 12px; 171 | border: 1px solid #eeeeee; 172 | text-align: left; 173 | background-color: rgba(14, 14, 9, 0.2); 174 | } 175 | 176 | th { 177 | background-color: lightcyan; 178 | font-size: 22px; 179 | } 180 | 181 | tr td { 182 | border: 1px solid #eeeeee; 183 | text-align: left; 184 | } 185 | 186 | input { 187 | font-size: 16px; 188 | background-color: transparent; 189 | border: none; 190 | width: 91%; 191 | padding: 12px 12px; 192 | font-family: 'Poppins', sans-serif; 193 | } 194 | 195 | input:hover { 196 | background-color: #fff4e4; 197 | } 198 | 199 | input:focus { 200 | outline: 1px solid #ccc; 201 | border: 1px solid #ccc; 202 | } 203 | 204 | #btnDiv { 205 | display: grid; 206 | justify-content: flex-end; 207 | } 208 | 209 | #img3 { 210 | height: 9.5rem; 211 | margin-top: 3%; 212 | margin-left: 15% 213 | } 214 | 215 | #img4 { 216 | height: 9.5rem; 217 | margin-left: 25%; 218 | margin-top: 3% 219 | } 220 | 221 | #divimg2 { 222 | width: 25% 223 | } 224 | 225 | #aboutDiv { 226 | padding: 10px; 227 | } 228 | 229 | #about { 230 | font-family: 'Rajdhani', sans-serif; 231 | } 232 | 233 | .returnURI{ 234 | margin-left: 93%; 235 | } 236 | #return-home{ 237 | background-color: #2949d7; 238 | border-radius: 8px; 239 | margin-right: 10%; 240 | width: 100%; 241 | 242 | } 243 | #return-home:hover{ 244 | background-color: #0d32d6; 245 | } 246 | 247 | #creatorDiv{ 248 | padding-top: 50px; 249 | display: inline-block; 250 | 251 | } 252 | 253 | .test5{ 254 | padding-bottom: 50px; 255 | } 256 | 257 | .githubDiv { 258 | text-align: center; 259 | } 260 | .imageDiv { 261 | margin-top: 50%; 262 | margin-left: 50%; 263 | } 264 | .checkoutH1{ 265 | margin-left:80%; 266 | } 267 | 268 | #container-team{ 269 | display: flex; 270 | padding-left: 26%;; 271 | padding-right: 20%;; 272 | } 273 | /* .image-grid { 274 | display: flex; 275 | justify-content: space-between; 276 | } 277 | 278 | .image-item { 279 | flex-basis: 25%; 280 | padding: 10px; 281 | box-sizing: border-box; 282 | } */ -------------------------------------------------------------------------------- /src/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import './globals.css' 2 | import React from 'react'; 3 | import Nav from './components/Nav' 4 | // import { Inter } from 'next/font/google' 5 | import Provider from './Providers'; 6 | 7 | //const inter = Inter({ subsets: ['latin'] }) 8 | 9 | export const metadata = { 10 | title: 'PGQL', 11 | description: 'SQL Visual Excel Database', 12 | } 13 | 14 | 15 | const Rootlayout = ({ 16 | children, 17 | }: { 18 | children: React.ReactNode 19 | }) => { 20 | 21 | return ( 22 | 23 | 28 | 29 | 30 |