blog-minerva-juppiter

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 9a699ad061084bd403af48ea425adf5d36112454
parent 116bfee220be935e10b8a028d7e7e96f78af3c10
Author: minerva-jupiter <ryouturn@gmail.com>
Date:   Wed,  2 Apr 2025 19:58:11 +0900

try to deploy database d1

Diffstat:
M.gitignore | 7+++++--
Mpackage.json | 1+
Msrc/app.d.ts | 3++-
Msrc/routes/article/[ArticleNumber]/+page.server.ts | 41+++++++++++++++++++++++++++++++----------
4 files changed, 39 insertions(+), 13 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -26,4 +26,7 @@ vite.config.ts.timestamp-* # bun output bun.lock -bun.lockb- \ No newline at end of file +bun.lockb + +#wrangler +wrangler.toml+ \ No newline at end of file diff --git a/package.json b/package.json @@ -2,6 +2,7 @@ "name": "blog-minerva-juppiter", "version": "0.0.1", "devDependencies": { + "@cloudflare/workers-types": "^4.20250402.0", "@playwright/test": "1.51.1", "@sveltejs/adapter-cloudflare": "6.0.1", "@sveltejs/kit": "2.20.2", diff --git a/src/app.d.ts b/src/app.d.ts @@ -1,5 +1,6 @@ // See https://svelte.dev/docs/kit/types#app.d.ts // for information about these interfaces +import type { D1Database } from '@cloudflare/workers-types'; declare global { namespace App { // interface Error {} @@ -9,7 +10,7 @@ declare global { // interface Platform {} interface Platform { env: { - COUNTER: DurableObjectNamespace; + DB: D1Database; }; context: { waitUntil(promise: Promise<any>): void; diff --git a/src/routes/article/[ArticleNumber]/+page.server.ts b/src/routes/article/[ArticleNumber]/+page.server.ts @@ -1,18 +1,39 @@ import { error } from '@sveltejs/kit'; import type { PageServerLoad } from './$types'; -export const load: PageServerLoad = async ({ params }) => { - const post = await getPostFromDatabase(params.ArticleNumber); +// Function to get the D1 database instance +const getDatabase = (platform: { env: { DB: any } }) => { + if (!platform?.env?.DB) { + throw new Error('D1 database is not configured.'); + } + return platform.env.DB; +}; + +export const load: PageServerLoad = async ({ params, platform }) => { + if (!platform) { + throw error(500, 'Platform is not defined.'); + } + const post = await getPostFromDatabase(platform, params.ArticleNumber); - if (post) { - return post; - } + if (post) { + return post; + } - error(404, 'Not found'); + throw error(404, 'Not found'); }; -const getPostFromDatabase = (slug: string): { title: string; content: number } => { - // Replace the following with actual database fetching logic - let article_number = Number(slug); - return { title: slug, content: article_number }; +const getPostFromDatabase = async ( + platform: { env: { DB: any } }, + slug: string +): Promise<{ title: string; content: string } | null> => { + const db = getDatabase(platform); + + const query = 'SELECT title, content FROM posts WHERE slug = ?'; + const result = await db.prepare(query).bind(slug).first(); + + if (result) { + return { title: result.title, content: result.content }; + } + + return null; }; \ No newline at end of file