diff --git a/package.json b/package.json index 247332c..2de44f3 100644 --- a/package.json +++ b/package.json @@ -20,9 +20,6 @@ "seed": "tsx ./src/seed.ts", "push": "drizzle-kit push:pg" }, - "prisma": { - "seed": "node --loader ts-node/esm prisma/seed.ts" - }, "devDependencies": { "@melt-ui/pp": "^0.3.0", "@melt-ui/svelte": "^0.75.3", @@ -30,7 +27,7 @@ "@resvg/resvg-js": "^2.6.0", "@sveltejs/adapter-auto": "^3.1.1", "@sveltejs/enhanced-img": "^0.1.8", - "@sveltejs/kit": "^2.5.2", + "@sveltejs/kit": "^2.5.3", "@sveltejs/vite-plugin-svelte": "^3.0.2", "@types/cookie": "^0.6.0", "@types/node": "^20.11.25", @@ -59,9 +56,9 @@ "svelte-meta-tags": "^3.1.1", "svelte-preprocess": "^5.1.3", "svelte-sequential-preprocessor": "^2.0.1", - "sveltekit-flash-message": "^2.4.2", + "sveltekit-flash-message": "^2.4.4", "sveltekit-rate-limiter": "^0.4.3", - "sveltekit-superforms": "^2.8.0", + "sveltekit-superforms": "^2.8.1", "tailwindcss": "^3.4.1", "ts-node": "^10.9.2", "tslib": "^2.6.1", @@ -80,8 +77,7 @@ "@fontsource/fira-mono": "^5.0.12", "@iconify-icons/line-md": "^1.2.26", "@iconify-icons/mdi": "^1.2.47", - "@lucia-auth/adapter-drizzle": "^1.0.2", - "@lucia-auth/adapter-prisma": "4.0.0", + "@lucia-auth/adapter-drizzle": "^1.0.3", "@lukeed/uuid": "^2.0.1", "@neondatabase/serverless": "^0.9.0", "@paralleldrive/cuid2": "^2.2.2", @@ -95,15 +91,15 @@ "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "cookie": "^0.6.0", - "drizzle-orm": "^0.29.5", + "drizzle-orm": "^0.30.1", "feather-icons": "^4.29.1", "formsnap": "^0.5.1", "html-entities": "^2.5.2", "iconify-icon": "^2.0.0", "just-kebab-case": "^4.2.0", "loader": "^2.1.1", - "lucia": "3.0.1", - "lucide-svelte": "^0.344.0", + "lucia": "3.1.1", + "lucide-svelte": "^0.354.0", "mysql2": "^3.9.2", "nanoid": "^5.0.6", "open-props": "^1.6.21", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4a92dfc..2592c49 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,11 +15,8 @@ dependencies: specifier: ^1.2.47 version: 1.2.48 '@lucia-auth/adapter-drizzle': - specifier: ^1.0.2 - version: 1.0.2(lucia@3.0.1) - '@lucia-auth/adapter-prisma': - specifier: 4.0.0 - version: 4.0.0(@prisma/client@5.10.2)(lucia@3.0.1) + specifier: ^1.0.3 + version: 1.0.3(lucia@3.1.1) '@lukeed/uuid': specifier: ^2.0.1 version: 2.0.1 @@ -34,10 +31,10 @@ dependencies: version: 1.16.0 '@sentry/sveltekit': specifier: ^7.100.1 - version: 7.100.1(@sveltejs/kit@2.5.2)(svelte@4.2.12) + version: 7.100.1(@sveltejs/kit@2.5.3)(svelte@4.2.12) '@sveltejs/adapter-vercel': specifier: ^5.1.0 - version: 5.1.0(@sveltejs/kit@2.5.2) + version: 5.1.0(@sveltejs/kit@2.5.3) '@types/feather-icons': specifier: ^4.29.4 version: 4.29.4 @@ -60,14 +57,14 @@ dependencies: specifier: ^0.6.0 version: 0.6.0 drizzle-orm: - specifier: ^0.29.5 - version: 0.29.5(@neondatabase/serverless@0.9.0)(@planetscale/database@1.16.0)(@types/pg@8.11.2)(mysql2@3.9.2)(pg@8.11.3)(postgres@3.4.3) + specifier: ^0.30.1 + version: 0.30.1(@neondatabase/serverless@0.9.0)(@planetscale/database@1.16.0)(@types/pg@8.11.2)(mysql2@3.9.2)(pg@8.11.3)(postgres@3.4.3) feather-icons: specifier: ^4.29.1 version: 4.29.1 formsnap: specifier: ^0.5.1 - version: 0.5.1(svelte@4.2.12)(sveltekit-superforms@2.8.0) + version: 0.5.1(svelte@4.2.12)(sveltekit-superforms@2.8.1) html-entities: specifier: ^2.5.2 version: 2.5.2 @@ -81,11 +78,11 @@ dependencies: specifier: ^2.1.1 version: 2.1.1 lucia: - specifier: 3.0.1 - version: 3.0.1 + specifier: 3.1.1 + version: 3.1.1 lucide-svelte: - specifier: ^0.344.0 - version: 0.344.0(svelte@4.2.12) + specifier: ^0.354.0 + version: 0.354.0(svelte@4.2.12) mysql2: specifier: ^3.9.2 version: 3.9.2 @@ -141,13 +138,13 @@ devDependencies: version: 2.6.0 '@sveltejs/adapter-auto': specifier: ^3.1.1 - version: 3.1.1(@sveltejs/kit@2.5.2) + version: 3.1.1(@sveltejs/kit@2.5.3) '@sveltejs/enhanced-img': specifier: ^0.1.8 version: 0.1.8(svelte@4.2.12) '@sveltejs/kit': - specifier: ^2.5.2 - version: 2.5.2(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.5) + specifier: ^2.5.3 + version: 2.5.3(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.5) '@sveltejs/vite-plugin-svelte': specifier: ^3.0.2 version: 3.0.2(svelte@4.2.12)(vite@5.1.5) @@ -233,14 +230,14 @@ devDependencies: specifier: ^2.0.1 version: 2.0.1 sveltekit-flash-message: - specifier: ^2.4.2 - version: 2.4.2(@sveltejs/kit@2.5.2)(svelte@4.2.12) + specifier: ^2.4.4 + version: 2.4.4(@sveltejs/kit@2.5.3)(svelte@4.2.12) sveltekit-rate-limiter: specifier: ^0.4.3 - version: 0.4.3(@sveltejs/kit@2.5.2) + version: 0.4.3(@sveltejs/kit@2.5.3) sveltekit-superforms: - specifier: ^2.8.0 - version: 2.8.0(@sveltejs/kit@2.5.2)(@types/json-schema@7.0.15)(esbuild-runner@2.2.2)(esbuild@0.20.1)(svelte@4.2.12) + specifier: ^2.8.1 + version: 2.8.1(@sveltejs/kit@2.5.3)(@types/json-schema@7.0.15)(esbuild-runner@2.2.2)(esbuild@0.20.1)(svelte@4.2.12) tailwindcss: specifier: ^3.4.1 version: 3.4.1(ts-node@10.9.2) @@ -1930,22 +1927,12 @@ packages: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - /@lucia-auth/adapter-drizzle@1.0.2(lucia@3.0.1): - resolution: {integrity: sha512-GT2Mp0NaUZ5O4OAvzoNcX9bGotoxBfADo6mTzIEKKJ+uar3HgtQVn/m5Ogj3I2iMv0YBHWgMmlnkUHXN5xFNow==} + /@lucia-auth/adapter-drizzle@1.0.3(lucia@3.1.1): + resolution: {integrity: sha512-5C3O5PGV9IpGTM8cr5trE9+Pr3FM8LXOUPusQWD3svGW/S7vNebQit7uEfDUxFAuUhutoLoXTr7SQ1jZWjaBoA==} peerDependencies: lucia: 3.x dependencies: - lucia: 3.0.1 - dev: false - - /@lucia-auth/adapter-prisma@4.0.0(@prisma/client@5.10.2)(lucia@3.0.1): - resolution: {integrity: sha512-TJg4/U1K1slS4A/OzDYCgmHTrIArntIynue14zGIEaMDu+OD+tGyq9WwQWqOabpx2Gm9xtDsoK+tTokAY3Up7A==} - peerDependencies: - '@prisma/client': ^4.2.0 || ^5.0.0 - lucia: 3.x - dependencies: - '@prisma/client': 5.10.2 - lucia: 3.0.1 + lucia: 3.1.1 dev: false /@lukeed/csprng@1.1.0: @@ -2656,8 +2643,8 @@ packages: playwright: 1.42.0 dev: true - /@polka/url@1.0.0-next.24: - resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + /@polka/url@1.0.0-next.25: + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} /@poppinss/macroable@1.0.1: resolution: {integrity: sha512-bO3+rnqGhE+gdx4DOyYjY9jCm2+c5Ncyl2Gmst0w271rIFnsB00btonpdmAqvFNzS8rcas+APGm+47fYMmkpQA==} @@ -2665,17 +2652,6 @@ packages: requiresBuild: true optional: true - /@prisma/client@5.10.2: - resolution: {integrity: sha512-ef49hzB2yJZCvM5gFHMxSFL9KYrIP9udpT5rYo0CsHD4P9IKj473MbhU1gjKKftiwWBTIyrt9jukprzZXazyag==} - engines: {node: '>=16.13'} - requiresBuild: true - peerDependencies: - prisma: '*' - peerDependenciesMeta: - prisma: - optional: true - dev: false - /@resvg/resvg-js-android-arm-eabi@2.6.0: resolution: {integrity: sha512-lJnZ/2P5aMocrFMW7HWhVne5gH82I8xH6zsfH75MYr4+/JOaVcGCTEQ06XFohGMdYRP3v05SSPLPvTM/RHjxfA==} engines: {node: '>= 10'} @@ -3063,7 +3039,7 @@ packages: svelte: 4.2.12 dev: false - /@sentry/sveltekit@7.100.1(@sveltejs/kit@2.5.2)(svelte@4.2.12): + /@sentry/sveltekit@7.100.1(@sveltejs/kit@2.5.3)(svelte@4.2.12): resolution: {integrity: sha512-t6JaivTmw5oIqOpKQ8PNbGjNP99AQY6vMPkhxzVuwPa3A3o2WtmzQoIXNxdrkux5XkoBI9CsT6TsM5TbaMDwjQ==} engines: {node: '>=16'} peerDependencies: @@ -3077,7 +3053,7 @@ packages: '@sentry/types': 7.100.1 '@sentry/utils': 7.100.1 '@sentry/vite-plugin': 0.6.1 - '@sveltejs/kit': 2.5.2(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.5) + '@sveltejs/kit': 2.5.3(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.5) magicast: 0.2.8 sorcery: 0.11.0 transitivePeerDependencies: @@ -3166,21 +3142,21 @@ packages: requiresBuild: true optional: true - /@sveltejs/adapter-auto@3.1.1(@sveltejs/kit@2.5.2): + /@sveltejs/adapter-auto@3.1.1(@sveltejs/kit@2.5.3): resolution: {integrity: sha512-6LeZft2Fo/4HfmLBi5CucMYmgRxgcETweQl/yQoZo/895K3S9YWYN4Sfm/IhwlIpbJp3QNvhKmwCHbsqQNYQpw==} peerDependencies: '@sveltejs/kit': ^2.0.0 dependencies: - '@sveltejs/kit': 2.5.2(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.5) + '@sveltejs/kit': 2.5.3(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.5) import-meta-resolve: 4.0.0 dev: true - /@sveltejs/adapter-vercel@5.1.0(@sveltejs/kit@2.5.2): + /@sveltejs/adapter-vercel@5.1.0(@sveltejs/kit@2.5.3): resolution: {integrity: sha512-Z9yRJ4H2/7LcBlvN2/TKu1H0hWoRGonr8kPhP1GJ23LRW76IbiiX5gs/MLc6+ZGogCZYVJ4USmx6m+RFtvQTRw==} peerDependencies: '@sveltejs/kit': ^2.4.0 dependencies: - '@sveltejs/kit': 2.5.2(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.5) + '@sveltejs/kit': 2.5.3(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.5) '@vercel/nft': 0.26.2 esbuild: 0.19.11 transitivePeerDependencies: @@ -3199,8 +3175,8 @@ packages: - svelte dev: true - /@sveltejs/kit@2.5.2(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.5): - resolution: {integrity: sha512-1Pm2lsBYURQsjnLyZa+jw75eVD4gYHxGRwPyFe4DAmB3FjTVR8vRNWGeuDLGFcKMh/B1ij6FTUrc9GrerogCng==} + /@sveltejs/kit@2.5.3(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.5): + resolution: {integrity: sha512-s6x7HBn/Fp+UNvyhJohjIA0FcJ+BWHGUDQ4PCg1D0EboUlvbimJQYchINu8G6sspLXYmlcsuNsp8bbcrRk85iw==} engines: {node: '>=18.13'} hasBin: true requiresBuild: true @@ -3216,7 +3192,7 @@ packages: esm-env: 1.0.0 import-meta-resolve: 4.0.0 kleur: 4.1.5 - magic-string: 0.30.7 + magic-string: 0.30.8 mrmime: 2.0.0 sade: 1.8.1 set-cookie-parser: 2.6.0 @@ -4243,13 +4219,14 @@ packages: - supports-color dev: true - /drizzle-orm@0.29.5(@neondatabase/serverless@0.9.0)(@planetscale/database@1.16.0)(@types/pg@8.11.2)(mysql2@3.9.2)(pg@8.11.3)(postgres@3.4.3): - resolution: {integrity: sha512-jS3+uyzTz4P0Y2CICx8FmRQ1eplURPaIMWDn/yq6k4ShRFj9V7vlJk67lSf2kyYPzQ60GkkNGXcJcwrxZ6QCRw==} + /drizzle-orm@0.30.1(@neondatabase/serverless@0.9.0)(@planetscale/database@1.16.0)(@types/pg@8.11.2)(mysql2@3.9.2)(pg@8.11.3)(postgres@3.4.3): + resolution: {integrity: sha512-5P6CXl4XyWtDDiYOX/jYOJp1HTUmBlXRAwaq+muUOgaSykMEy5sJesCxceMT0oCGvxeWkKfSXo5owLnfKwCIdw==} peerDependencies: '@aws-sdk/client-rds-data': '>=3' '@cloudflare/workers-types': '>=3' '@libsql/client': '*' '@neondatabase/serverless': '>=0.1' + '@op-engineering/op-sqlite': '>=2' '@opentelemetry/api': ^1.4.1 '@planetscale/database': '>=1' '@types/better-sqlite3': '*' @@ -4277,6 +4254,8 @@ packages: optional: true '@neondatabase/serverless': optional: true + '@op-engineering/op-sqlite': + optional: true '@opentelemetry/api': optional: true '@planetscale/database': @@ -4808,7 +4787,7 @@ packages: is-callable: 1.2.7 dev: false - /formsnap@0.5.1(svelte@4.2.12)(sveltekit-superforms@2.8.0): + /formsnap@0.5.1(svelte@4.2.12)(sveltekit-superforms@2.8.1): resolution: {integrity: sha512-8ppOlOu7llBEJbV0PzUz/KWh1J8KfiGqwjiyb8emQ2m+/nYXohLBtMcLVpW3XwlMkUbYaIXM+5lhfGjw8xbGJw==} peerDependencies: svelte: ^4.0.0 @@ -4816,7 +4795,7 @@ packages: dependencies: nanoid: 5.0.6 svelte: 4.2.12 - sveltekit-superforms: 2.8.0(@sveltejs/kit@2.5.2)(@types/json-schema@7.0.15)(esbuild-runner@2.2.2)(esbuild@0.20.1)(svelte@4.2.12) + sveltekit-superforms: 2.8.1(@sveltejs/kit@2.5.3)(@types/json-schema@7.0.15)(esbuild-runner@2.2.2)(esbuild@0.20.1)(svelte@4.2.12) dev: false /fraction.js@4.3.7: @@ -5432,14 +5411,14 @@ packages: es5-ext: 0.10.62 dev: true - /lucia@3.0.1: - resolution: {integrity: sha512-srwUkTCGgr6N4mFpaKZVZy5kwiRZdsrbIDv9Wrjar+xyw1MjojYQQ7oRbegjRWOZ3yI8xOOclK3sz/rga2J7/w==} + /lucia@3.1.1: + resolution: {integrity: sha512-Ygvgnqq7Ha7lYVaZATPwkPD2s2Qlsm71Z2o0byx/abNBfFldCRow5sNii6RqMsuMpK957RAI3Gw4/aWoagkc7A==} dependencies: oslo: 1.0.1 dev: false - /lucide-svelte@0.344.0(svelte@4.2.12): - resolution: {integrity: sha512-OB/iazftjl2w+vpH7WJqbhHONoMqUT6aaeYvu1BQSgvc7+CKXByu4xvbI7RMOJykaiF/u3LAhyd2ucYBj+rEZQ==} + /lucide-svelte@0.354.0(svelte@4.2.12): + resolution: {integrity: sha512-70SspM/VC9E9OLJj1Jg6IhF40vf22aanW9vhUvtBwORogK4TP2oTd27YkY/3zOgi/Y5OAEOU4ZYtLxsAiOHPjQ==} peerDependencies: svelte: ^3 || ^4 || ^5.0.0-next.42 dependencies: @@ -5465,6 +5444,12 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + /magic-string@0.30.8: + resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + /magicast@0.2.8: resolution: {integrity: sha512-zEnqeb3E6TfMKYXGyHv3utbuHNixr04o3/gVGviSzVQkbFiU46VZUd+Ea/1npKfvEsEWxBYuIksKzoztTDPg0A==} dependencies: @@ -6901,7 +6886,7 @@ packages: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} dependencies: - '@polka/url': 1.0.0-next.24 + '@polka/url': 1.0.0-next.25 mrmime: 2.0.0 totalist: 3.0.1 @@ -7212,32 +7197,32 @@ packages: magic-string: 0.30.7 periscopic: 3.1.0 - /sveltekit-flash-message@2.4.2(@sveltejs/kit@2.5.2)(svelte@4.2.12): - resolution: {integrity: sha512-iXZSOp8La7kHQuOsXOcjIp7x24J/Ycs2uPoHwtjsbObVCbjgxZrtvjd0XUfA0mYZBp97BtAQ5SW5owRDJCWq6A==} + /sveltekit-flash-message@2.4.4(@sveltejs/kit@2.5.3)(svelte@4.2.12): + resolution: {integrity: sha512-CFN03chH/FMEJcBZ/8zKm7RqGee/pwb57Spbbx8QCQPhe7N9ofZHd9iYV2vVy4E9glBo/oQ1IG7VQje6L092wg==} peerDependencies: '@sveltejs/kit': 1.x || 2.x svelte: 3.x || 4.x || >=5.0.0-next.51 dependencies: - '@sveltejs/kit': 2.5.2(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.5) + '@sveltejs/kit': 2.5.3(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.5) svelte: 4.2.12 dev: true - /sveltekit-rate-limiter@0.4.3(@sveltejs/kit@2.5.2): + /sveltekit-rate-limiter@0.4.3(@sveltejs/kit@2.5.3): resolution: {integrity: sha512-BKkD2tvgyz5j4Fn1vt0y7FLF0zZ01f9thjWPGDb6fyX3tBXyMrtZ8ISK8M7zjz9Cik/2KrkvFtmldhXF6/hjqw==} peerDependencies: '@sveltejs/kit': 1.x || 2.x dependencies: '@isaacs/ttlcache': 1.4.1 - '@sveltejs/kit': 2.5.2(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.5) + '@sveltejs/kit': 2.5.3(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.5) dev: true - /sveltekit-superforms@2.8.0(@sveltejs/kit@2.5.2)(@types/json-schema@7.0.15)(esbuild-runner@2.2.2)(esbuild@0.20.1)(svelte@4.2.12): - resolution: {integrity: sha512-Ac3GlnVOjZ6q4m6+1xcPEznJsoet4tNn3FqbgZ83UJP5O/io4fWXioGFDztuZXmIDPeaBoAx22A0TMmS61pCxA==} + /sveltekit-superforms@2.8.1(@sveltejs/kit@2.5.3)(@types/json-schema@7.0.15)(esbuild-runner@2.2.2)(esbuild@0.20.1)(svelte@4.2.12): + resolution: {integrity: sha512-jlQUnAdlhQEBMpA1k9qNUQzelPSNWsjonKeQVHi+Hj+bgWjPn29QOJbyFKzvKqeFEgzcuUnNEaJI4g5K3QFIKQ==} peerDependencies: '@sveltejs/kit': 1.x || 2.x svelte: 3.x || 4.x || >=5.0.0-next.51 dependencies: - '@sveltejs/kit': 2.5.2(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.5) + '@sveltejs/kit': 2.5.3(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.1.5) devalue: 4.3.2 just-clone: 6.2.0 memoize-weak: 1.0.2 diff --git a/src/routes/(app)/(protected)/list/[id]/+page.server.ts b/src/routes/(app)/(protected)/list/[id]/+page.server.ts index 75e84ee..5a9a88f 100644 --- a/src/routes/(app)/(protected)/list/[id]/+page.server.ts +++ b/src/routes/(app)/(protected)/list/[id]/+page.server.ts @@ -51,15 +51,20 @@ export async function load({ params, locals }) { export const actions: Actions = { // Add game to a wishlist add: async (event) => { - const { params, locals, request } = event; + const { params, locals } = event; const form = await superValidate(event, zod(modifyListGameSchema)); if (!locals.user) { throw fail(401); } + if (!params?.id) { + throw fail(400, { + message: 'Invalid Request' + }); + } - let game = await db.query.games.findFirst({ + const game = await db.query.games.findFirst({ where: eq(games.id, form.id) }); @@ -88,11 +93,9 @@ export const actions: Actions = { redirect(302, '/404'); } - const wishlistItem = await prisma.wishlistItem.create({ - data: { - game_id: game.id, - wishlist_id: wishlist.id - } + const wishlistItem = await db.insert(wishlist_items).values({ + game_id: game.id, + wishlist_id: wishlist.id }); if (!wishlistItem) { @@ -106,19 +109,19 @@ export const actions: Actions = { }; }, // Create new wishlist - create: async ({ params, locals, request }) => { + create: async ({ locals }) => { if (!locals.user) { throw fail(401); } }, // Delete a wishlist - delete: async ({ params, locals, request }) => { + delete: async ({ locals}) => { if (!locals.user) { throw fail(401); } }, // Remove game from a wishlist - remove: async ({ params, locals, request }) => { + remove: async ({ locals }) => { if (!locals.user) { throw fail(401); } diff --git a/src/routes/api/wishlist/[id]/search/+server.ts b/src/routes/api/wishlist/[id]/search/+server.ts index ab6576f..1b219be 100644 --- a/src/routes/api/wishlist/[id]/search/+server.ts +++ b/src/routes/api/wishlist/[id]/search/+server.ts @@ -1,5 +1,8 @@ import { error, json } from '@sveltejs/kit'; import prisma from '$lib/prisma'; +import { and, eq } from 'drizzle-orm'; +import { collection_items } from '../../../../../schema.js'; +import db from '$lib/drizzle.js'; // Search a user's collection export async function GET({ url, locals, params }) { @@ -10,17 +13,18 @@ export async function GET({ url, locals, params }) { const order = searchParams?.order || 'asc'; const sort = searchParams?.sort || 'name'; const collection_id = params.id; - const session = await locals.auth.validate(); console.log('url', url); console.log('username', locals?.user?.id); - if (!session) { - error(401, { message: 'Unauthorized' }); + if (!locals.user) { + return new Response(null, { + status: 401 + }); } - let collection = await prisma.collection.findUnique({ + const collection = await db.collection.findUnique({ where: { - user_id: locals.user.userId + user_id: locals.user.id } }); console.log('collection', collection); @@ -31,40 +35,39 @@ export async function GET({ url, locals, params }) { } try { - const orderBy = { [sort]: order }; - let collection_items = await prisma.collectionItem.findMany({ - where: { - collection_id, - AND: [ - { - game: { - name: { - contains: q - } - } - } - ] - }, - orderBy: [ - { - game: { - ...orderBy - } - } - ], - include: { + const itemsInCollection = await db.query.collection_items.findMany({ + where: eq(collection_items.collection_id, collection_id), + with: { game: { - select: { + columns: { id: true, name: true, - thumb_url: true - } + thumb_url: true, + }, } }, - skip, - take: limit + orderBy: (collection_items, { asc, desc }) => { + const dbSort = sort === 'dateAdded' ? collection_items.created_at : collection_items.times_played; + if (order === 'asc') { + return asc(dbSort); + } else { + return desc(dbSort); + } + }, + offset: skip, + limit }); + // include: { + // game: { + // select: { + // id: true, + // name: true, + // thumb_url: true + // } + // } + // }, + return json(collection_items); } catch (e) { console.error(e);