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:
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