Skip to content

Commit 0f6e278

Browse files
committed
postgresからd1に変更
1 parent 4e1c055 commit 0f6e278

File tree

12 files changed

+138
-237
lines changed

12 files changed

+138
-237
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
/.open-next
44
/cloudflare-env.d.ts
5+
/.wrangler
56

67
# dependencies
78
/node_modules

README.md

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ https://my-code.utcode.net
55
## インストール
66
```bash
77
npm ci
8+
npx wrangler d1 migrations apply wrapdb --local
89
```
910

1011
ルートディレクトリに .env.local という名前のファイルを作成し、以下の内容を記述
@@ -13,21 +14,10 @@ API_KEY=GeminiAPIキー
1314
BETTER_AUTH_URL=http://localhost:3000
1415
```
1516

16-
prismaの開発環境を起動
17-
(.env にDATABASE_URLが自動的に追加される)
18-
```bash
19-
npx prisma dev
20-
```
21-
別ターミナルで
22-
```bash
23-
npx prisma db push
24-
```
25-
2617
### 本番環境の場合
2718

2819
上記の環境変数以外に、
2920
* BETTER_AUTH_SECRET に任意の文字列
30-
* DATABASE_URL に本番用のPostgreSQLデータベースURL
3121
* GOOGLE_CLIENT_IDとGOOGLE_CLIENT_SECRETにGoogle OAuthのクライアントIDとシークレット https://www.better-auth.com/docs/authentication/google
3222
* GITHUB_CLIENT_IDとGITHUB_CLIENT_SECRETにGitHub OAuthのクライアントIDとシークレット https://www.better-auth.com/docs/authentication/github
3323

@@ -49,6 +39,21 @@ npm run lint
4939
```
5040
でコードをチェックします。出てくるwarningやerrorはできるだけ直しましょう。
5141

42+
### prismaのスキーマを変更した場合
43+
44+
データベースにD1を使っており、 ut.code(); Learn でやっていた `npx prisma db push` とは手順が異なるので注意!
45+
46+
```bash
47+
npx wrangler d1 migrations create my-code-db [migrationの名前]
48+
npx prisma migrate diff --from-local-d1 --to-scheme-datamodel ./prisma/schema.prisma --script --output ./migrations/000x_[migrationの名前].sql
49+
npx wrangler d1 migrations apply my-code-db --local
50+
```
51+
52+
変更をmainにマージした場合は、本番環境も更新する:
53+
```bash
54+
npx wrangler d1 migrations apply my-code-db --remote
55+
```
56+
5257
## markdown仕様
5358

5459
````

app/[docs_id]/chatHistory.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use client";
22

3-
import { ChatWithMessages } from "@/lib/chatHistory";
3+
import { type ChatWithMessages } from "@/lib/chatHistory";
44
import {
55
createContext,
66
ReactNode,

app/lib/auth.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ try {
1515
}
1616
export const auth = betterAuth({
1717
database: prismaAdapter(prisma, {
18-
provider: "postgresql",
18+
provider: "sqlite",
1919
}),
2020
plugins: [
2121
anonymous({

app/lib/chatHistory.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
"use server";
2+
13
import { headers } from "next/headers";
24
import { auth } from "./auth";
35
import prisma from "./prisma";

app/lib/prisma.ts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1+
import { PrismaD1 } from "@prisma/adapter-d1";
12
import { PrismaClient } from "../generated/prisma/client";
2-
import { PrismaPg } from "@prisma/adapter-pg";
3-
import { PrismaNeon } from "@prisma/adapter-neon";
43
import { getCloudflareContext } from "@opennextjs/cloudflare";
54

65
// eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -11,14 +10,6 @@ try {
1110
// @better-auth/cli generate を実行する際には initOpenNextCloudflareForDev がセットアップされていない環境になっている
1211
cloudflareEnv = {};
1312
}
14-
const DATABASE_URL =
15-
process.env.DATABASE_URL ?? cloudflareEnv.DATABASE_URL ?? "";
1613

17-
let adapter;
18-
if (DATABASE_URL.includes("neon")) {
19-
adapter = new PrismaNeon({ connectionString: DATABASE_URL });
20-
} else {
21-
adapter = new PrismaPg({ connectionString: DATABASE_URL });
22-
}
23-
const prisma = new PrismaClient({ adapter });
14+
const prisma = new PrismaClient({ adapter: new PrismaD1(cloudflareEnv.my_code_db) });
2415
export default prisma;

migrations/0001_init_table.sql

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
-- CreateTable
2+
CREATE TABLE "user" (
3+
"id" TEXT NOT NULL PRIMARY KEY,
4+
"name" TEXT NOT NULL,
5+
"email" TEXT NOT NULL,
6+
"emailVerified" BOOLEAN NOT NULL DEFAULT false,
7+
"image" TEXT,
8+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
9+
"updatedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
10+
"isAnonymous" BOOLEAN
11+
);
12+
13+
-- CreateTable
14+
CREATE TABLE "session" (
15+
"id" TEXT NOT NULL PRIMARY KEY,
16+
"expiresAt" DATETIME NOT NULL,
17+
"token" TEXT NOT NULL,
18+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
19+
"updatedAt" DATETIME NOT NULL,
20+
"ipAddress" TEXT,
21+
"userAgent" TEXT,
22+
"userId" TEXT NOT NULL,
23+
CONSTRAINT "session_userId_fkey" FOREIGN KEY ("userId") REFERENCES "user" ("id") ON DELETE CASCADE ON UPDATE CASCADE
24+
);
25+
26+
-- CreateTable
27+
CREATE TABLE "account" (
28+
"id" TEXT NOT NULL PRIMARY KEY,
29+
"accountId" TEXT NOT NULL,
30+
"providerId" TEXT NOT NULL,
31+
"userId" TEXT NOT NULL,
32+
"accessToken" TEXT,
33+
"refreshToken" TEXT,
34+
"idToken" TEXT,
35+
"accessTokenExpiresAt" DATETIME,
36+
"refreshTokenExpiresAt" DATETIME,
37+
"scope" TEXT,
38+
"password" TEXT,
39+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
40+
"updatedAt" DATETIME NOT NULL,
41+
CONSTRAINT "account_userId_fkey" FOREIGN KEY ("userId") REFERENCES "user" ("id") ON DELETE CASCADE ON UPDATE CASCADE
42+
);
43+
44+
-- CreateTable
45+
CREATE TABLE "verification" (
46+
"id" TEXT NOT NULL PRIMARY KEY,
47+
"identifier" TEXT NOT NULL,
48+
"value" TEXT NOT NULL,
49+
"expiresAt" DATETIME NOT NULL,
50+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
51+
"updatedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
52+
);
53+
54+
-- CreateTable
55+
CREATE TABLE "Chat" (
56+
"chatId" TEXT NOT NULL PRIMARY KEY,
57+
"userId" TEXT NOT NULL,
58+
"docsId" TEXT NOT NULL,
59+
"sectionId" TEXT NOT NULL,
60+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
61+
CONSTRAINT "Chat_userId_fkey" FOREIGN KEY ("userId") REFERENCES "user" ("id") ON DELETE CASCADE ON UPDATE CASCADE
62+
);
63+
64+
-- CreateTable
65+
CREATE TABLE "Message" (
66+
"id" TEXT NOT NULL PRIMARY KEY,
67+
"chatId" TEXT NOT NULL,
68+
"role" TEXT NOT NULL,
69+
"content" TEXT NOT NULL,
70+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
71+
CONSTRAINT "Message_chatId_fkey" FOREIGN KEY ("chatId") REFERENCES "Chat" ("chatId") ON DELETE CASCADE ON UPDATE CASCADE
72+
);
73+
74+
-- CreateIndex
75+
CREATE UNIQUE INDEX "user_email_key" ON "user"("email");
76+
77+
-- CreateIndex
78+
CREATE UNIQUE INDEX "session_token_key" ON "session"("token");

0 commit comments

Comments
 (0)