From 643de27282b17aab31b7a85c4af1e6778dfa2303 Mon Sep 17 00:00:00 2001 From: Kanghyun Lee Date: Sun, 5 Feb 2023 05:31:13 +0900 Subject: [PATCH] feat: add settings for db (#16) * feat: add prisma & basic settings * chore: add .env to gitignore * fix: add shadow database url in schema for solving migration issue * feat: add @prisma/client and db schema file path * chore: add migration files to gitignore * chore: add scripts for prisma * feat: add test api * feat: add docker compose & actions * fix: add checkout option & prod action * fix: add migration files * fix: remove edge option * feat: add edge test api * build(package): update nextjs * fix: add runtime option * fix: remove runtime option * docs(github): add pr template --------- Co-authored-by: Go Gwangseo --- .github/pull_request_template.md | 15 ++ .github/workflows/chromatic.yml | 16 +- .github/workflows/db-migration-prod.yml | 28 ++ .github/workflows/db-migration.yml | 27 ++ .gitignore | 1 + .storybook/main.js | 1 + .vscode/settings.json | 3 +- docker-compose.yml | 12 + lib/prisma.ts | 12 + next.config.js | 3 - package.json | 20 +- .../migrations/20230130114123_/migration.sql | 8 + src/database/migrations/migration_lock.toml | 3 + src/database/schema.prisma | 14 + src/pages/api/edge-test.ts | 19 ++ src/pages/api/hello.ts | 29 +- tsconfig.json | 3 +- yarn.lock | 249 ++++++++++-------- 18 files changed, 329 insertions(+), 134 deletions(-) create mode 100644 .github/pull_request_template.md create mode 100644 .github/workflows/db-migration-prod.yml create mode 100644 .github/workflows/db-migration.yml create mode 100644 docker-compose.yml create mode 100644 lib/prisma.ts create mode 100644 src/database/migrations/20230130114123_/migration.sql create mode 100644 src/database/migrations/migration_lock.toml create mode 100644 src/database/schema.prisma create mode 100644 src/pages/api/edge-test.ts diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..dfe204d --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,15 @@ +## Issue + +Resolves #(이슈 번호) + +## Description + +## Check List + +- [ ] PR 제목을 커밋 규칙에 맞게 작성 +- [ ] 적절한 라벨 설정 +- [ ] GitHub Projects에 연결 +- [ ] 작업한 사람 모두를 Assign +- [ ] Code Review 요청 +- [ ] DB Schema를 바꾼 경우, DB Schema를 바꾸는 다른 PR이 없는지 확인 +- [ ] `main` 브랜치의 최신 상태를 반영하고 있는지 확인 diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index 42b0e96..c1ee800 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -4,10 +4,22 @@ on: push jobs: chromatic-deployment: runs-on: ubuntu-latest + environment: Preview steps: - - uses: actions/checkout@v1 + - name: Checkout repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 16 + cache: yarn + - name: Install dependencies - run: yarn + run: yarn install --frozen-lockfile + - name: Publish to Chromatic uses: chromaui/action@v1 with: diff --git a/.github/workflows/db-migration-prod.yml b/.github/workflows/db-migration-prod.yml new file mode 100644 index 0000000..dec33e1 --- /dev/null +++ b/.github/workflows/db-migration-prod.yml @@ -0,0 +1,28 @@ +name: 'DB Migration (Production)' +on: + push: + branches: + - main + paths: + - 'src/database/schema.prisma' + +jobs: + migrate: + runs-on: ubuntu-latest + environment: Production + steps: + - uses: actions/checkout@v3 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 16 + cache: yarn + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Migrate + run: yarn db:prod + env: + DATABASE_URL: ${{ secrets.DATABASE_URL }} diff --git a/.github/workflows/db-migration.yml b/.github/workflows/db-migration.yml new file mode 100644 index 0000000..93f1597 --- /dev/null +++ b/.github/workflows/db-migration.yml @@ -0,0 +1,27 @@ +name: 'DB Migration' +on: + pull_request: + types: [opened, synchronize] + paths: + - 'src/database/schema.prisma' + +jobs: + migrate: + runs-on: ubuntu-latest + environment: Preview + steps: + - uses: actions/checkout@v3 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 16 + cache: yarn + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Migrate + run: yarn db:prod + env: + DATABASE_URL: ${{ secrets.DATABASE_URL }} diff --git a/.gitignore b/.gitignore index 25cc73b..93ccede 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,7 @@ yarn-error.log* # local env files .env*.local +.env # vercel .vercel diff --git a/.storybook/main.js b/.storybook/main.js index efbd18e..9bfb486 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -73,6 +73,7 @@ module.exports = { '@/logics': path.resolve(__dirname, '../src/logics'), '@/constants': path.resolve(__dirname, '../src/constants'), '@/assets': path.resolve(__dirname, '../src/assets'), + '@/lib': path.resolve(__dirname, '../lib'), }; return config; diff --git a/.vscode/settings.json b/.vscode/settings.json index 949c487..0138427 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,5 +5,6 @@ "source.fixAll.eslint": true }, "editor.tabSize": 2, - "typescript.tsdk": "node_modules/typescript/lib" + "typescript.tsdk": "node_modules/typescript/lib", + "git.pruneOnFetch": true, } diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..d8eefd2 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +services: + postgres: + image: postgres:15.1 + ports: + - '5466:5432' + volumes: + - db_data:/var/lib/postgresql/data + environment: + POSTGRES_PASSWORD: '' + POSTGRES_HOST_AUTH_METHOD: trust +volumes: + db_data: diff --git a/lib/prisma.ts b/lib/prisma.ts new file mode 100644 index 0000000..3b56215 --- /dev/null +++ b/lib/prisma.ts @@ -0,0 +1,12 @@ +import { PrismaClient } from '@prisma/client'; + +/** + * @see https://www.prisma.io/docs/guides/database/troubleshooting-orm/help-articles/nextjs-prisma-client-dev-practices + */ +const globalForPrisma = global as unknown as { prisma: PrismaClient }; + +export const prisma = globalForPrisma.prisma || new PrismaClient(); + +if (process.env.NODE_ENV !== 'production') { + globalForPrisma.prisma = prisma; +} diff --git a/next.config.js b/next.config.js index 4288d20..6506fd0 100644 --- a/next.config.js +++ b/next.config.js @@ -5,9 +5,6 @@ const withVanillaExtract = createVanillaExtractPlugin(); const nextConfig = { reactStrictMode: true, swcMinify: true, - experimental: { - runtime: 'experimental-edge', - }, }; module.exports = withVanillaExtract(nextConfig); diff --git a/package.json b/package.json index cb5edb0..2de9161 100644 --- a/package.json +++ b/package.json @@ -9,19 +9,26 @@ "lint": "next lint", "storybook": "start-storybook -p 6006", "build-storybook": "build-storybook", - "chromatic": "npx chromatic --exit-zero-on-changes" + "chromatic": "npx chromatic --exit-zero-on-changes", + "db:dev": "npx prisma migrate dev", + "db:push": "npx prisma db push", + "db:up": "docker compose up -d", + "db:nuke": "docker compose down --volumes --remove-orphans", + "db:prod": "npx prisma migrate deploy", + "postinstall": "npx prisma generate" }, "dependencies": { + "@prisma/client": "4.9.0", "@tanstack/react-query": "4.16.1", "@types/node": "18.11.9", "@types/react": "18.0.25", "@types/react-dom": "18.0.9", "@vanilla-extract/css": "1.9.2", "eslint": "8.28.0", - "eslint-config-next": "13.0.4", + "eslint-config-next": "13.1.6", "framer-motion": "7.6.7", "jotai": "1.10.0", - "next": "13.0.4", + "next": "13.1.6", "react": "18.2.0", "react-dom": "18.2.0", "typescript": "4.9.3" @@ -43,7 +50,12 @@ "chromatic": "6.11.4", "eslint-config-prettier": "8.5.0", "eslint-plugin-storybook": "0.6.7", - "prettier": "2.7.1" + "prettier": "2.7.1", + "prettier-plugin-prisma": "4.8.0", + "prisma": "4.9.0" + }, + "prisma": { + "schema": "./src/database/schema.prisma" }, "readme": "ERROR: No README data found!", "_id": "gdsc-ssu-web@0.1.0" diff --git a/src/database/migrations/20230130114123_/migration.sql b/src/database/migrations/20230130114123_/migration.sql new file mode 100644 index 0000000..83952b4 --- /dev/null +++ b/src/database/migrations/20230130114123_/migration.sql @@ -0,0 +1,8 @@ +-- CreateTable +CREATE TABLE "test" ( + "id" SERIAL NOT NULL, + "test" TEXT NOT NULL, + "test2" TEXT NOT NULL, + + CONSTRAINT "test_pkey" PRIMARY KEY ("id") +); diff --git a/src/database/migrations/migration_lock.toml b/src/database/migrations/migration_lock.toml new file mode 100644 index 0000000..fbffa92 --- /dev/null +++ b/src/database/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (i.e. Git) +provider = "postgresql" \ No newline at end of file diff --git a/src/database/schema.prisma b/src/database/schema.prisma new file mode 100644 index 0000000..ab7a59e --- /dev/null +++ b/src/database/schema.prisma @@ -0,0 +1,14 @@ +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} + +generator client { + provider = "prisma-client-js" +} + +model test { + id Int @id @default(autoincrement()) + test String + test2 String +} diff --git a/src/pages/api/edge-test.ts b/src/pages/api/edge-test.ts new file mode 100644 index 0000000..a6d2546 --- /dev/null +++ b/src/pages/api/edge-test.ts @@ -0,0 +1,19 @@ +import type { NextRequest } from 'next/server'; + +export const config = { + runtime: 'edge', +}; + +export default async function handler(req: NextRequest) { + return new Response( + JSON.stringify({ + name: 'Jim Halpert', + }), + { + status: 200, + headers: { + 'content-type': 'application/json', + }, + }, + ); +} diff --git a/src/pages/api/hello.ts b/src/pages/api/hello.ts index b8799cd..9b08650 100644 --- a/src/pages/api/hello.ts +++ b/src/pages/api/hello.ts @@ -1,19 +1,16 @@ -import type { NextRequest } from 'next/server'; +import { prisma } from '@/lib/prisma'; +import type { NextApiRequest, NextApiResponse } from 'next'; -export const config = { - runtime: 'experimental-edge', -}; - -export default function handler(req: NextRequest) { - return new Response( - JSON.stringify({ - name: 'Jim Halpert', - }), - { - status: 200, - headers: { - 'content-type': 'application/json', - }, +export default async function handler( + req: NextApiRequest, + res: NextApiResponse, +) { + const newTest = await prisma.test.create({ + data: { + test: '1234', + test2: '5678', }, - ); + }); + + res.status(200).json(newTest); } diff --git a/tsconfig.json b/tsconfig.json index a69f044..b14e1e7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -20,7 +20,8 @@ "@/pages/*": ["src/pages/*"], "@/logics/*": ["src/logics/*"], "@/constants/*": ["src/constants/*"], - "@/assets/*": ["src/assets/*"] + "@/assets/*": ["src/assets/*"], + "@/lib/*": ["lib/*"] } }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], diff --git a/yarn.lock b/yarn.lock index ec2b63b..4ff601e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1464,82 +1464,82 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@next/env@13.0.4": - version "13.0.4" - resolved "https://registry.yarnpkg.com/@next/env/-/env-13.0.4.tgz#249a21be88fa61e1a712939db00b9d02764831f4" - integrity sha512-N5Z3bdxBzoxrC5bwykDFITzdWuwDteOdZ+7nxixY+I1XpRX8/iQYbw2wuXMdqdfBGm2NNUpAqg8YF2e4oAC2UQ== +"@next/env@13.1.6": + version "13.1.6" + resolved "https://registry.yarnpkg.com/@next/env/-/env-13.1.6.tgz#c4925609f16142ded1a5cb833359ab17359b7a93" + integrity sha512-s+W9Fdqh5MFk6ECrbnVmmAOwxKQuhGMT7xXHrkYIBMBcTiOqNWhv5KbJIboKR5STXxNXl32hllnvKaffzFaWQg== -"@next/eslint-plugin-next@13.0.4": - version "13.0.4" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-13.0.4.tgz#46800f48d9f81e8bb460319a15a00bf2f4016e91" - integrity sha512-jZ4urKT+aO9QHm3ttihrIQscQISDSKK8isAom750+EySn9o3LCSkTdPGBtvBqY7Yku+NqhfQempR5J58DqTaVg== +"@next/eslint-plugin-next@13.1.6": + version "13.1.6" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-13.1.6.tgz#ad8be22dd3d8aee9a9bd9a2507e2c55a2f7ebdd9" + integrity sha512-o7cauUYsXjzSJkay8wKjpKJf2uLzlggCsGUkPu3lP09Pv97jYlekTC20KJrjQKmSv5DXV0R/uks2ZXhqjNkqAw== dependencies: glob "7.1.7" -"@next/swc-android-arm-eabi@13.0.4": - version "13.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.0.4.tgz#684fe26ff2a05b9dd8c4fb84bc87ba807e3bddc0" - integrity sha512-SD9H+/zuV3L0oHIhsDdFkDqFtg6pIHtqRUPlsrNdOsmWXgMlSzxBmwt2ta4kyrazS62BQu7XRUG++ZyODS7AWg== - -"@next/swc-android-arm64@13.0.4": - version "13.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-13.0.4.tgz#6bc985b78978fc42eaf723bbd21d3b27f673a1fe" - integrity sha512-F8W5WcBbdn/zBoy32/mQiefs9DNsT12CTSSVCsO8GvQR7GjJU+uduQ4drKcSDoDLuAFULc2jDN06Circq4vuQg== - -"@next/swc-darwin-arm64@13.0.4": - version "13.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.0.4.tgz#2a471486bd0d5737104f62807b23cb9743e3cb08" - integrity sha512-/lajev+9GSie+rRTl5z8skW9RJwZ+TwMKLzzM24TbDk8lUjqPTyJZ/cU0NDj8J7VQAZ6EehACSh9rcJeBRtLuA== - -"@next/swc-darwin-x64@13.0.4": - version "13.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.0.4.tgz#f921ea5d09df6bb4fcace3639b9a2e4587212c0e" - integrity sha512-HK4b2rFiju8d40GTL/jH9U6OQ7BYA2MeEHs7Dm7Rp7kwQtLzP3z6osdQS8er20tIFHDE4b+oVBy03ZUQkHf0Pg== - -"@next/swc-freebsd-x64@13.0.4": - version "13.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.0.4.tgz#04f04f83aaa287fc8c429f688b431c39ce05ede3" - integrity sha512-xBvIGLaGzZtgJfRRJ2DBN82DQCJ/O7jkXyBp8X/vHefPWyVXVqF6C68Rv8ADp11thPpf8WpjkvDDLb9AuWHQUA== - -"@next/swc-linux-arm-gnueabihf@13.0.4": - version "13.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.0.4.tgz#45b9f02bf722d212611819fe847fb58355c1dd4b" - integrity sha512-s13pxNp9deKmmxEGTp1MoL1e4nf4wbEymEaHgFxUlhoR1OD9tK8oTNrQphQePJgVjzcWmRGH/dX7O9mVkHbU/g== - -"@next/swc-linux-arm64-gnu@13.0.4": - version "13.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.0.4.tgz#940c756543264a098ecfae1aa92129a5ff5540dd" - integrity sha512-Lklo65usNzoYwjX51CpDKOepWVZBdwO49/Jz3djxiYUr2lRtpDVnlfwCvzN+47j3BMVMWtC2ndIi8Q4s3J0v4g== - -"@next/swc-linux-arm64-musl@13.0.4": - version "13.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.0.4.tgz#1a0c16a648973475214786472cafe4e03f2a07a7" - integrity sha512-+3BXtXBwjVhd5lahDe5nKZ7EwD6hE/oLFQkITCvgxymU5qYHGlLFyF52/lyw8qhyxoCr7mMVsUFhlCzVwCfNjg== - -"@next/swc-linux-x64-gnu@13.0.4": - version "13.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.0.4.tgz#5d6a92ebfb2226bd4c34be8edfc132283fd4b055" - integrity sha512-QB8qoZrvHhZsz62nUrTKlp5IiZ8I7KZsaa6437H/W/NOZHLGJjCxROnhUjLvKVe/T5P86pjya2SUOUqWAjz4Pg== - -"@next/swc-linux-x64-musl@13.0.4": - version "13.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.0.4.tgz#060797dc921c4af73521fde2a4198855f9e3bb34" - integrity sha512-WaahF6DYUQRg1QqIMcuOu2ZsFhS3aC5iWeQyeptMHklP9wb4FfTNmBArKHknX/GXD8P9gI38WTAHJ25cc0zVwg== - -"@next/swc-win32-arm64-msvc@13.0.4": - version "13.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.0.4.tgz#27629e72200cd479ad5231ae79e95291c476771d" - integrity sha512-FD+k1j2jeY0aKcqcpzFKfTsv55PPmIZ5GKDyPjjV5AO6XvQ4nALwWl4JwizjH2426TfLXObb+C3MH0bl9Ok1Kw== - -"@next/swc-win32-ia32-msvc@13.0.4": - version "13.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.0.4.tgz#d7c89406b2a484f448c7b5af667b5eb537483695" - integrity sha512-+Q/Q8Ydvz3X3U84CyZdNv1HC7fE43k+xB8C6b3IFmWGa5Tu2tfskQ2FsUNBrYreZjhFC/894J3rVQ6Vj6Auugg== - -"@next/swc-win32-x64-msvc@13.0.4": - version "13.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.0.4.tgz#2c3ede793e90d632e1dbdb0e4851f6f32132fba8" - integrity sha512-vXtbo9N1FdtZZRcv4BliU28tTYrkb1EnVpUiiFFe88I6kS9aZVTMY9Z/OtDR52rl1JF1hgs9sL/59D/TQqSATQ== +"@next/swc-android-arm-eabi@13.1.6": + version "13.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.1.6.tgz#d766dfc10e27814d947b20f052067c239913dbcc" + integrity sha512-F3/6Z8LH/pGlPzR1AcjPFxx35mPqjE5xZcf+IL+KgbW9tMkp7CYi1y7qKrEWU7W4AumxX/8OINnDQWLiwLasLQ== + +"@next/swc-android-arm64@13.1.6": + version "13.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-13.1.6.tgz#f37a98d5f18927d8c9970d750d516ac779465176" + integrity sha512-cMwQjnB8vrYkWyK/H0Rf2c2pKIH4RGjpKUDvbjVAit6SbwPDpmaijLio0LWFV3/tOnY6kvzbL62lndVA0mkYpw== + +"@next/swc-darwin-arm64@13.1.6": + version "13.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.1.6.tgz#ec1b90fd9bf809d8b81004c5182e254dced4ad96" + integrity sha512-KKRQH4DDE4kONXCvFMNBZGDb499Hs+xcFAwvj+rfSUssIDrZOlyfJNy55rH5t2Qxed1e4K80KEJgsxKQN1/fyw== + +"@next/swc-darwin-x64@13.1.6": + version "13.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.1.6.tgz#e869ac75d16995eee733a7d1550322d9051c1eb4" + integrity sha512-/uOky5PaZDoaU99ohjtNcDTJ6ks/gZ5ykTQDvNZDjIoCxFe3+t06bxsTPY6tAO6uEAw5f6vVFX5H5KLwhrkZCA== + +"@next/swc-freebsd-x64@13.1.6": + version "13.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.1.6.tgz#84a7b2e423a2904afc2edca21c2f1ba6b53fa4c1" + integrity sha512-qaEALZeV7to6weSXk3Br80wtFQ7cFTpos/q+m9XVRFggu+8Ib895XhMWdJBzew6aaOcMvYR6KQ6JmHA2/eMzWw== + +"@next/swc-linux-arm-gnueabihf@13.1.6": + version "13.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.1.6.tgz#980eed1f655ff8a72187d8a6ef9e73ac39d20d23" + integrity sha512-OybkbC58A1wJ+JrJSOjGDvZzrVEQA4sprJejGqMwiZyLqhr9Eo8FXF0y6HL+m1CPCpPhXEHz/2xKoYsl16kNqw== + +"@next/swc-linux-arm64-gnu@13.1.6": + version "13.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.1.6.tgz#87a71db21cded3f7c63d1d19079845c59813c53d" + integrity sha512-yCH+yDr7/4FDuWv6+GiYrPI9kcTAO3y48UmaIbrKy8ZJpi7RehJe3vIBRUmLrLaNDH3rY1rwoHi471NvR5J5NQ== + +"@next/swc-linux-arm64-musl@13.1.6": + version "13.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.1.6.tgz#c5aac8619331b9fd030603bbe2b36052011e11de" + integrity sha512-ECagB8LGX25P9Mrmlc7Q/TQBb9rGScxHbv/kLqqIWs2fIXy6Y/EiBBiM72NTwuXUFCNrWR4sjUPSooVBJJ3ESQ== + +"@next/swc-linux-x64-gnu@13.1.6": + version "13.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.1.6.tgz#9513d36d540bbfea575576746736054c31aacdea" + integrity sha512-GT5w2mruk90V/I5g6ScuueE7fqj/d8Bui2qxdw6lFxmuTgMeol5rnzAv4uAoVQgClOUO/MULilzlODg9Ib3Y4Q== + +"@next/swc-linux-x64-musl@13.1.6": + version "13.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.1.6.tgz#d61fc6884899f5957251f4ce3f522e34a2c479b7" + integrity sha512-keFD6KvwOPzmat4TCnlnuxJCQepPN+8j3Nw876FtULxo8005Y9Ghcl7ACcR8GoiKoddAq8gxNBrpjoxjQRHeAQ== + +"@next/swc-win32-arm64-msvc@13.1.6": + version "13.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.1.6.tgz#fac2077a8ae9768e31444c9ae90807e64117cda7" + integrity sha512-OwertslIiGQluFvHyRDzBCIB07qJjqabAmINlXUYt7/sY7Q7QPE8xVi5beBxX/rxTGPIbtyIe3faBE6Z2KywhQ== + +"@next/swc-win32-ia32-msvc@13.1.6": + version "13.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.1.6.tgz#498bc11c91b4c482a625bf4b978f98ae91111e46" + integrity sha512-g8zowiuP8FxUR9zslPmlju7qYbs2XBtTLVSxVikPtUDQedhcls39uKYLvOOd1JZg0ehyhopobRoH1q+MHlIN/w== + +"@next/swc-win32-x64-msvc@13.1.6": + version "13.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.1.6.tgz#17ed919c723426b7d0ce1cd73d40ce3dcd342089" + integrity sha512-Ls2OL9hi3YlJKGNdKv8k3X/lLgc3VmLG3a/DeTkAd+lAituJp8ZHmRmm9f9SL84fT3CotlzcgbdaCDfFwFA6bA== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -1610,6 +1610,28 @@ schema-utils "^3.0.0" source-map "^0.7.3" +"@prisma/client@4.9.0": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@prisma/client/-/client-4.9.0.tgz#4a4068f3540732ea5723c008d49ed684d20f9340" + integrity sha512-bz6QARw54sWcbyR1lLnF2QHvRW5R/Jxnbbmwh3u+969vUKXtBkXgSgjDA85nji31ZBlf7+FrHDy5x+5ydGyQDg== + dependencies: + "@prisma/engines-version" "4.9.0-42.ceb5c99003b99c9ee2c1d2e618e359c14aef2ea5" + +"@prisma/engines-version@4.9.0-42.ceb5c99003b99c9ee2c1d2e618e359c14aef2ea5": + version "4.9.0-42.ceb5c99003b99c9ee2c1d2e618e359c14aef2ea5" + resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-4.9.0-42.ceb5c99003b99c9ee2c1d2e618e359c14aef2ea5.tgz#9d817a5779fc05b107eb02f63d197ad296d60b3c" + integrity sha512-M16aibbxi/FhW7z1sJCX8u+0DriyQYY5AyeTH7plQm9MLnURoiyn3CZBqAyIoQ+Z1pS77usCIibYJWSgleBMBA== + +"@prisma/engines@4.9.0": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-4.9.0.tgz#05a1411964e047c1bc43f777c7a1c69f86a2a26c" + integrity sha512-t1pt0Gsp+HcgPJrHFc+d/ZSAaKKWar2G/iakrE07yeKPNavDP3iVKPpfXP22OTCHZUWf7OelwKJxQgKAm5hkgw== + +"@prisma/prisma-fmt-wasm@4.8.0-62.351fb726ff78e50c7d6db6331d66d4db0e378c53": + version "4.8.0-62.351fb726ff78e50c7d6db6331d66d4db0e378c53" + resolved "https://registry.yarnpkg.com/@prisma/prisma-fmt-wasm/-/prisma-fmt-wasm-4.8.0-62.351fb726ff78e50c7d6db6331d66d4db0e378c53.tgz#5d583c72506c9bcf3b01c905461b85ed2f59d33a" + integrity sha512-OISxCNdlZ02u2NwQt99pQqpW+8elKaV0HNszJ6QVEZJZJNjnTmYIjSWycVWt+Ul3m1V0DWY4OEKCxwjpqwnjcQ== + "@rushstack/eslint-patch@^1.1.3": version "1.2.0" resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" @@ -2666,10 +2688,10 @@ "@svgr/plugin-jsx" "^6.5.1" "@svgr/plugin-svgo" "^6.5.1" -"@swc/helpers@0.4.11": - version "0.4.11" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.11.tgz#db23a376761b3d31c26502122f349a21b592c8de" - integrity sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw== +"@swc/helpers@0.4.14": + version "0.4.14" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.14.tgz#1352ac6d95e3617ccb7c1498ff019654f1e12a74" + integrity sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw== dependencies: tslib "^2.4.0" @@ -5438,12 +5460,12 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-config-next@13.0.4: - version "13.0.4" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-13.0.4.tgz#78954caf26b3aa718bed077bce90c1f505db0005" - integrity sha512-moEC7BW2TK7JKq3QfnaauqRjWzVcEf71gp5DbClpFPHM6QXE0u0uVvSTiHlmOgtCe1vyWAO+AhF87ZITd8mIDw== +eslint-config-next@13.1.6: + version "13.1.6" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-13.1.6.tgz#ab6894fe5b80080f1e9b9306d1c4b0003230620e" + integrity sha512-0cg7h5wztg/SoLAlxljZ0ZPUQ7i6QKqRiP4M2+MgTZtxWwNKb2JSwNc18nJ6/kXBI6xYvPraTbQSIhAuVw6czw== dependencies: - "@next/eslint-plugin-next" "13.0.4" + "@next/eslint-plugin-next" "13.1.6" "@rushstack/eslint-patch" "^1.1.3" "@typescript-eslint/parser" "^5.42.0" eslint-import-resolver-node "^0.3.6" @@ -8187,31 +8209,30 @@ nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz#26c8a3cee6cc05fbcf1e333cd2fc3e003326c0b5" integrity sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw== -next@13.0.4: - version "13.0.4" - resolved "https://registry.yarnpkg.com/next/-/next-13.0.4.tgz#52fc9d72df4642ed28e66f42f85137a624a98062" - integrity sha512-4P0MvbjPCI1E/UPL1GrTXtYlgFnbBbY3JQ+AMY8jYE2SwyvCWctEJySoRjveznAHjrl6TIjuAJeB8u1c2StYUQ== +next@13.1.6: + version "13.1.6" + resolved "https://registry.yarnpkg.com/next/-/next-13.1.6.tgz#054babe20b601f21f682f197063c9b0b32f1a27c" + integrity sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw== dependencies: - "@next/env" "13.0.4" - "@swc/helpers" "0.4.11" + "@next/env" "13.1.6" + "@swc/helpers" "0.4.14" caniuse-lite "^1.0.30001406" postcss "8.4.14" - styled-jsx "5.1.0" - use-sync-external-store "1.2.0" + styled-jsx "5.1.1" optionalDependencies: - "@next/swc-android-arm-eabi" "13.0.4" - "@next/swc-android-arm64" "13.0.4" - "@next/swc-darwin-arm64" "13.0.4" - "@next/swc-darwin-x64" "13.0.4" - "@next/swc-freebsd-x64" "13.0.4" - "@next/swc-linux-arm-gnueabihf" "13.0.4" - "@next/swc-linux-arm64-gnu" "13.0.4" - "@next/swc-linux-arm64-musl" "13.0.4" - "@next/swc-linux-x64-gnu" "13.0.4" - "@next/swc-linux-x64-musl" "13.0.4" - "@next/swc-win32-arm64-msvc" "13.0.4" - "@next/swc-win32-ia32-msvc" "13.0.4" - "@next/swc-win32-x64-msvc" "13.0.4" + "@next/swc-android-arm-eabi" "13.1.6" + "@next/swc-android-arm64" "13.1.6" + "@next/swc-darwin-arm64" "13.1.6" + "@next/swc-darwin-x64" "13.1.6" + "@next/swc-freebsd-x64" "13.1.6" + "@next/swc-linux-arm-gnueabihf" "13.1.6" + "@next/swc-linux-arm64-gnu" "13.1.6" + "@next/swc-linux-arm64-musl" "13.1.6" + "@next/swc-linux-x64-gnu" "13.1.6" + "@next/swc-linux-x64-musl" "13.1.6" + "@next/swc-win32-arm64-msvc" "13.1.6" + "@next/swc-win32-ia32-msvc" "13.1.6" + "@next/swc-win32-x64-msvc" "13.1.6" nice-try@^1.0.4: version "1.0.5" @@ -9033,6 +9054,13 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== +prettier-plugin-prisma@4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/prettier-plugin-prisma/-/prettier-plugin-prisma-4.8.0.tgz#ec9073f10c6b4e0acb695534aa1af775ae916f2e" + integrity sha512-rCQsn+NktVbl1Sqq1oTgsB5w71vP7I5tjWJhypw6qzwnagqXsiFOLm4s3Z742EbJBS51c99CYds5s+GxGFlqNQ== + dependencies: + "@prisma/prisma-fmt-wasm" "4.8.0-62.351fb726ff78e50c7d6db6331d66d4db0e378c53" + prettier@2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" @@ -9073,6 +9101,13 @@ pretty-hrtime@^1.0.3: resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== +prisma@4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/prisma/-/prisma-4.9.0.tgz#295954b2a89cd35a0e6bcf66b2b036dbf80c75ee" + integrity sha512-bS96oZ5oDFXYgoF2l7PJ3Mp1wWWfLOo8B/jAfbA2Pn0Wm5Z/owBHzaMQKS3i1CzVBDWWPVnOohmbJmjvkcHS5w== + dependencies: + "@prisma/engines" "4.9.0" + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -10335,10 +10370,10 @@ style-value-types@5.1.2: hey-listen "^1.0.8" tslib "2.4.0" -styled-jsx@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.0.tgz#4a5622ab9714bd3fcfaeec292aa555871f057563" - integrity sha512-/iHaRJt9U7T+5tp6TRelLnqBqiaIT0HsO0+vgyj8hK2KUk7aejFqRrumqPUlAqDwAj8IbS/1hk3IhBAAK/FCUQ== +styled-jsx@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" + integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== dependencies: client-only "0.0.1" @@ -10932,7 +10967,7 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" -use-sync-external-store@1.2.0, use-sync-external-store@^1.2.0: +use-sync-external-store@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==