From 49eaf3db847f2eaaa8f5b48ff6a99f0af72d03f5 Mon Sep 17 00:00:00 2001 From: Anngr950 <anngr950@student.liu.se> Date: Thu, 4 Apr 2024 15:39:55 +0200 Subject: [PATCH] =?UTF-8?q?Nu=20s=C3=A5,=20f=C3=A5r=20iallafall=20upp=20da?= =?UTF-8?q?tabasen=20utan=20problem?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- my-app/app/api/checkdb/route.js | 11 + my-app/app/api/checkdb/route.ts | 21 -- my-app/app/myndighet/listaMyndighet/page.tsx | 2 - my-app/lib/db.js | 26 -- my-app/lib/dbConnect.ts | 48 +--- my-app/lib/myndigheter.ts | 27 +- my-app/package-lock.json | 247 ++++++++++++++++++- my-app/package.json | 8 +- 8 files changed, 279 insertions(+), 111 deletions(-) create mode 100644 my-app/app/api/checkdb/route.js delete mode 100644 my-app/app/api/checkdb/route.ts delete mode 100644 my-app/lib/db.js diff --git a/my-app/app/api/checkdb/route.js b/my-app/app/api/checkdb/route.js new file mode 100644 index 0000000..d5ec49b --- /dev/null +++ b/my-app/app/api/checkdb/route.js @@ -0,0 +1,11 @@ +import { NextResponse } from 'next/server'; +import Movie from '../../../lib/myndigheter' + +export async function GET() { + try { + const movie = await Movie.find(); + return NextResponse.json({movie},{status:200, message: 'Movies found'}); + } catch (error) { + return NextResponse.json({status:500, message: 'Error finding movies'}); + } +} \ No newline at end of file diff --git a/my-app/app/api/checkdb/route.ts b/my-app/app/api/checkdb/route.ts deleted file mode 100644 index 6d92caf..0000000 --- a/my-app/app/api/checkdb/route.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { NextRequest } from "next/server"; -import { NextApiRequest, NextApiResponse } from "next"; -import dbConnect from "../../../lib/dbConnect"; -import Movie from "../../../lib/myndigheter"; - -export default async function handler( - req: NextApiRequest, - res: NextApiResponse, - ) { - const { method } = req; - await dbConnect(); - - if (method === "GET"){ - try { - const movies = await Movie.find({}); - res.status(200).json({ success: true, data: movies }); - } catch (error) { - res.status(400).json({ success: false }); - } - } - } \ No newline at end of file diff --git a/my-app/app/myndighet/listaMyndighet/page.tsx b/my-app/app/myndighet/listaMyndighet/page.tsx index d692b6f..0b05505 100644 --- a/my-app/app/myndighet/listaMyndighet/page.tsx +++ b/my-app/app/myndighet/listaMyndighet/page.tsx @@ -2,8 +2,6 @@ import React from 'react' import CompleteMenu from '../../../components/completeMenu'; import Logo from '../../../components/logo'; - - export default function Page() { return ( <div> diff --git a/my-app/lib/db.js b/my-app/lib/db.js deleted file mode 100644 index 91b3f3c..0000000 --- a/my-app/lib/db.js +++ /dev/null @@ -1,26 +0,0 @@ -import mongoose from 'mongoose' - -global.mongoose = { - conn: null, - promise: null, -} - -export async function dbConnect() { - if (global.mongoose && global.mongoose.conn) { - return global.mongoose.conn; - } else { - const conString = process.env.MONGO_URL; - - const promise = mongoose.connect(conString, { - autoIndex: true, - }); - - global.mongoose = { - conn: await promise, - promise, - }; - console.log("Newly connected"); - - return await promise; - } -} \ No newline at end of file diff --git a/my-app/lib/dbConnect.ts b/my-app/lib/dbConnect.ts index 11163bd..b8ab141 100644 --- a/my-app/lib/dbConnect.ts +++ b/my-app/lib/dbConnect.ts @@ -1,44 +1,22 @@ //CONNECTING TO OUR DATABASE - import mongoose from "mongoose"; -declare global { - var mongoose: any; -} - -const MONGODB_URI = process.env.MONGODB_URI!; - -if (!MONGODB_URI) { - throw new Error( - "Please define the MONGODB_URI environment variable inside .env.local", - ); -} -let cached = global.mongoose; +let isConnected = false; -if (!cached) { - cached = global.mongoose = { conn: null, promise: null }; -} +export const dbConnect = async () =>{ + mongoose.set('strictQuery', true); -async function dbConnect() { - if (cached.conn) { - return cached.conn; + if(!process.env.MONGODB_URI) { + return (console.log("MONGODB_URI is not defined")); } - if (!cached.promise) { - const opts = { - bufferCommands: false, - }; - cached.promise = mongoose.connect(MONGODB_URI, opts).then((mongoose) => { - return mongoose; - }); + if(isConnected) { + return console.log("Already connected to database"); } + try { - cached.conn = await cached.promise; - } catch (e) { - cached.promise = null; - throw e; + await mongoose.connect(process.env.MONGODB_URI); + isConnected = true; + } catch (error) { + console.log("Error connecting to database: ", error); } - - return cached.conn; -} - -export default dbConnect; \ No newline at end of file +} \ No newline at end of file diff --git a/my-app/lib/myndigheter.ts b/my-app/lib/myndigheter.ts index 2154c67..b173cad 100644 --- a/my-app/lib/myndigheter.ts +++ b/my-app/lib/myndigheter.ts @@ -1,23 +1,16 @@ -import mongoose from "mongoose"; +import mongoose, { Document, Model } from "mongoose"; -export interface Movie extends mongoose.Document { - _id: string; +export interface MovieDocument extends Document { + id: number; title: string; + // Define other properties here if needed } -/* correspond to a collection in your MongoDB database. */ -const MovieSchema = new mongoose.Schema<Movie>({ - title: { - type: String, - required: [true, "Please provide a name for this pet."], - maxlength: [60, "Name cannot be more than 60 characters"], - }, +const movieSchema = new mongoose.Schema({ + id: { type: Number, required: true }, + title: { type: String, required: true }, + // Define other schema properties here if needed }); -const MovieModel = mongoose.models.Movie || mongoose.model<Movie>("Movie", MovieSchema); - -export default MovieModel - - - - +const Movie = mongoose.models.Movie || mongoose.model<MovieDocument>("Movie", movieSchema); +export default Movie; diff --git a/my-app/package-lock.json b/my-app/package-lock.json index b4799f5..1bd3567 100644 --- a/my-app/package-lock.json +++ b/my-app/package-lock.json @@ -13,8 +13,10 @@ "@radix-ui/react-slot": "^1.0.2", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", + "cmdk": "^1.0.0", "date-fns": "^3.6.0", "lucide-react": "^0.364.0", + "mongoose": "^8.3.0", "next": "14.1.4", "react": "^18", "react-day-picker": "^8.10.0", @@ -23,15 +25,15 @@ "tailwindcss-animate": "^1.0.7" }, "devDependencies": { - "@types/node": "^20", - "@types/react": "^18", + "@types/node": "20.12.2", + "@types/react": "18.2.73", "@types/react-dom": "^18", "autoprefixer": "^10.0.1", "eslint": "^8", "eslint-config-next": "14.1.4", "postcss": "^8", "tailwindcss": "^3.3.0", - "typescript": "^5" + "typescript": "5.4.3" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -272,6 +274,14 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.5.tgz", + "integrity": "sha512-XLNOMH66KhJzUJNwT/qlMnS4WsNDWD5ASdyaSH3EtK+F4r/CFGa3jT4GNi4mfOitGvWXtdLgQJkQjxSVrio+jA==", + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, "node_modules/@next/env": { "version": "14.1.4", "resolved": "https://registry.npmjs.org/@next/env/-/env-14.1.4.tgz", @@ -561,6 +571,42 @@ } } }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz", + "integrity": "sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-direction": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz", @@ -1139,6 +1185,19 @@ "@types/react": "*" } }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" + }, + "node_modules/@types/whatwg-url": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.4.tgz", + "integrity": "sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==", + "dependencies": { + "@types/webidl-conversions": "*" + } + }, "node_modules/@typescript-eslint/parser": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", @@ -1692,6 +1751,14 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/bson": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.6.0.tgz", + "integrity": "sha512-BVINv2SgcMjL4oYbBuCQTpE3/VKOSxrOA8Cj/wQP7izSzlBGVomdm+TcUd0Pzy0ytLSSDweCKQ6X3f5veM5LQA==", + "engines": { + "node": ">=16.20.1" + } + }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -1840,6 +1907,19 @@ "node": ">=6" } }, + "node_modules/cmdk": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.0.0.tgz", + "integrity": "sha512-gDzVf0a09TvoJ5jnuPvygTB77+XdOSwEmJ88L6XPFPlv7T3RxbP9jgenfylrAMD0+Le1aO0nVjQUzl2g+vjz5Q==", + "dependencies": { + "@radix-ui/react-dialog": "1.0.5", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1970,7 +2050,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -3700,6 +3779,14 @@ "node": ">=4.0" } }, + "node_modules/kareem": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.0.tgz", + "integrity": "sha512-B9wwgyKKKZkxYZXQzefvb/Ykh9eHixxR+ttTP2c/Pq8NvHi1iYIAImf3nj/DXkPcnenjGEffhPWXnCFRIbNAhw==", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -3801,6 +3888,11 @@ "react": "^16.5.1 || ^17.0.0 || ^18.0.0" } }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==" + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -3850,11 +3942,109 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/mongodb": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.5.0.tgz", + "integrity": "sha512-Fozq68InT+JKABGLqctgtb8P56pRrJFkbhW0ux+x1mdHeyinor8oNzJqwLjV/t5X5nJGfTlluxfyMnOXNggIUA==", + "dependencies": { + "@mongodb-js/saslprep": "^1.1.5", + "bson": "^6.4.0", + "mongodb-connection-string-url": "^3.0.0" + }, + "engines": { + "node": ">=16.20.1" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.1.0", + "gcp-metadata": "^5.2.0", + "kerberos": "^2.0.1", + "mongodb-client-encryption": ">=6.0.0 <7", + "snappy": "^7.2.2", + "socks": "^2.7.1" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "@mongodb-js/zstd": { + "optional": true + }, + "gcp-metadata": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + }, + "socks": { + "optional": true + } + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.0.tgz", + "integrity": "sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==", + "dependencies": { + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^13.0.0" + } + }, + "node_modules/mongoose": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.3.0.tgz", + "integrity": "sha512-Y5QNnuA38CEin8hnA+q//nUVztIi4Xklu9xlmbkd1KdWHnIlemSwf5IL/evcI+e2zplL4g5Y6PMkO+nPSAnIdA==", + "dependencies": { + "bson": "^6.5.0", + "kareem": "2.6.0", + "mongodb": "6.5.0", + "mpath": "0.9.0", + "mquery": "5.0.0", + "ms": "2.1.3", + "sift": "16.0.1" + }, + "engines": { + "node": ">=16.20.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/mz": { "version": "2.7.0", @@ -4445,7 +4635,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, "engines": { "node": ">=6" } @@ -4880,6 +5069,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/sift": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", + "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" + }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -4908,6 +5102,14 @@ "node": ">=0.10.0" } }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "dependencies": { + "memory-pager": "^1.0.2" + } + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -5262,6 +5464,17 @@ "node": ">=8.0" } }, + "node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/ts-api-utils": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", @@ -5512,6 +5725,26 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/my-app/package.json b/my-app/package.json index b25ecf3..b6d1947 100644 --- a/my-app/package.json +++ b/my-app/package.json @@ -14,8 +14,10 @@ "@radix-ui/react-slot": "^1.0.2", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", + "cmdk": "^1.0.0", "date-fns": "^3.6.0", "lucide-react": "^0.364.0", + "mongoose": "^8.3.0", "next": "14.1.4", "react": "^18", "react-day-picker": "^8.10.0", @@ -24,14 +26,14 @@ "tailwindcss-animate": "^1.0.7" }, "devDependencies": { - "@types/node": "^20", - "@types/react": "^18", + "@types/node": "20.12.2", + "@types/react": "18.2.73", "@types/react-dom": "^18", "autoprefixer": "^10.0.1", "eslint": "^8", "eslint-config-next": "14.1.4", "postcss": "^8", "tailwindcss": "^3.3.0", - "typescript": "^5" + "typescript": "5.4.3" } } -- GitLab