Skip to content

Commit

Permalink
1. fix chapter jump 2. change to use my self db
Browse files Browse the repository at this point in the history
  • Loading branch information
SuCicada committed May 28, 2024
1 parent 6ef3cf8 commit a672b29
Show file tree
Hide file tree
Showing 6 changed files with 111 additions and 36 deletions.
8 changes: 4 additions & 4 deletions scripts/import_db.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// import { sql } from '@vercel/postgres';
import {sql} from "@vercel/postgres";
import {sql} from "@/app/utils/db";

import path from "path";

Expand Down Expand Up @@ -41,6 +41,7 @@ async function import_furigana() {
console.log(res);
await sql`UPDATE bible
SET furigana = ${res}
,reading = ${row.text}
WHERE id = ${row.id}`;
}
// console.log(rows);
Expand Down Expand Up @@ -97,10 +98,9 @@ async function split_multi(book: string, chapter: number, multi_words: string) {
}

(async () => {
let book = "ローマの信徒への手紙 5";
let book = "コリントの信徒への手紙二 12";
let multi_words = `
1このように、わたしたちは信仰によって義とされたのだから、わたしたちの主イエス・キリストによって神との間に平和を得ており、 2このキリストのお陰で、今の恵みに信仰によって導き入れられ、神の栄光にあずかる希望を誇りにしています。 3そればかりでなく、苦難をも誇りとします。わたしたちは知っているのです、苦難は忍耐を、 4忍耐は練達を、練達は希望を生むということを。 5希望はわたしたちを欺くことがありません。わたしたちに与えられた聖霊によって、神の愛がわたしたちの心に注がれているからです。 6実にキリストは、わたしたちがまだ弱かったころ、定められた時に、不信心な者のために死んでくださった。 7正しい人のために死ぬ者はほとんどいません。善い人のために命を惜しまない者ならいるかもしれません。 8しかし、わたしたちがまだ罪人であったとき、キリストがわたしたちのために死んでくださったことにより、神はわたしたちに対する愛を示されました。 9それで今や、わたしたちはキリストの血によって義とされたのですから、キリストによって神の怒りから救われるのは、なおさらのことです。 10敵であったときでさえ、御子の死によって神と和解させていただいたのであれば、和解させていただいた今は、御子の命によって救われるのはなおさらです。 11それだけでなく、わたしたちの主イエス・キリストによって、わたしたちは神を誇りとしています。今やこのキリストを通して和解させていただいたからです。
`
7また、あの啓示された事があまりにもすばらしいからです。それで、そのために思い上がることのないようにと、わたしの身に一つのとげが与えられました。それは、思い上がらないように、わたしを痛めつけるために、サタンから送られた使いです。 8この使いについて、離れ去らせてくださるように、わたしは三度主に願いました。 9すると主は、「わたしの恵みはあなたに十分である。力は弱さの中でこそ十分に発揮されるのだ」と言われました。だから、キリストの力がわたしの内に宿るように、むしろ大いに喜んで自分の弱さを誇りましょう。 10それゆえ、わたしは弱さ、侮辱、窮乏、迫害、そして行き詰まりの状態にあっても、キリストのために満足しています。なぜなら、わたしは弱いときにこそ強いからです。 `
let chapter = parseInt(book.split(' ')[1])
book = book.split(' ')[0]
await split_multi(book, chapter, multi_words);
Expand Down
3 changes: 1 addition & 2 deletions src/app/api/chapter/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import { NextResponse } from "next/server";

import { PrismaClient } from "@prisma/client";
import * as Prisma from "@prisma/client";
import { sql } from "@vercel/postgres";

import { sql } from "@/app/utils/db";
export const dynamic = 'force-dynamic'
const prisma = new PrismaClient();

Expand Down
2 changes: 1 addition & 1 deletion src/app/bible/bible.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export default function BibleTable({book, chapter, playAudio}: {
const [words, setWords] = useState<Bible[]>([])
useEffect(() => {
(async function () {
console.log("BibleTable useEffect", book, chapter,playAudio)
console.log("BibleTable useEffect", book, chapter)

/** @type {import("@/app/api/bible/[book]/[chapter]/route.ts")} */
const response = await fetch(`/api/bible/${book}/${chapter}`,
Expand Down
82 changes: 55 additions & 27 deletions src/app/bible/book.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {sql} from "@vercel/postgres";
import {sql} from "@/app/utils/db";
import * as Prisma from "@prisma/client";
import {prisma} from "@/app/utils/db";
import {ChangeEventHandler, useEffect, useState} from "react";
Expand Down Expand Up @@ -59,12 +59,51 @@ export default function BookSelect(
}
}, [books, index]);

useEffect(() => {
if (!selectedBook) return
// useEffect(() => {
// if (!selectedBook) return
//
// (async function () {
// const queryString = Object.entries({
// book: selectedBook,
// })
// .map(([key, value]) => `${key}=${value}`)
// .join('&');
//
// /** @type {import("@/app/api/chapter/route.ts")} */
// const response: Response = await fetch('/api/chapter?' + queryString,
// {cache: "force-cache",});
// const _characters = await response.json() as number[];
// console.log(_characters)
// console.log(characters)
// setCharacters(_characters)
// if (characters.length > 0) { // 说明不是第一次进入初始化的时候
// // setSelectedChapter(_characters[0])
// // setHandleSelect(selectedBook, characters[0])
// changeBible(_characters[0])
// }
// // setBibleIndex(`${selectedBook} ${selectedChapter}`)
// })();
// }, [selectedBook])

function changeBible(book:string ,chapter: number) {
setSelectedChapter(chapter)
setHandleSelect(book, chapter)
}

function setHandleSelect(book: string, chapter: number) {
if (book && chapter) {
handleSelectChange({
book: book,
chapter: chapter
})
}
}

(async function () {
async function selectBook(newSelectBok: string) {
console.log("selectBook", newSelectBok)
if (newSelectBok && newSelectBok !== selectedBook) {
const queryString = Object.entries({
book: selectedBook,
book: newSelectBok,
})
.map(([key, value]) => `${key}=${value}`)
.join('&');
Expand All @@ -74,38 +113,26 @@ export default function BookSelect(
{cache: "force-cache",});
const _characters = await response.json() as number[];
console.log(_characters)
console.log(characters)
setCharacters(_characters)
if (characters.length > 0) { // 说明不是第一次进入初始化的时候
// setSelectedChapter(_characters[0])
// setHandleSelect(selectedBook, characters[0])
changeBible(_characters[0])
}
// if (characters.length > 0) { // 说明不是第一次进入初始化的时候
// setSelectedChapter(_characters[0])
// setHandleSelect(selectedBook, characters[0])
changeBible(newSelectBok,_characters[0])
// }
// setBibleIndex(`${selectedBook} ${selectedChapter}`)
})();
}, [selectedBook])
function changeBible(chapter: number) {
setSelectedChapter(chapter)
setHandleSelect(selectedBook, chapter)
}

function setHandleSelect(book: string, chapter: number) {
if (book && chapter) {
handleSelectChange({
book: book,
chapter: chapter
})
// })();
}
}


function BookOption({type}: { type: "old" | "new" }) {
let isOld = type === "old"
let name = isOld ? "旧" : "新"
let value = isOld ? oldOption : newOption
let optionBooks = isOld ? books?.oldBooks : books?.newBooks
return <>
{name}
<select value={value} onChange={(e) => {
<select value={value} onChange={async (e) => {
if (isOld) {
setOldOption(e.target.value)
setNewOption("")
Expand All @@ -114,7 +141,8 @@ export default function BookSelect(
setOldOption("")
}
console.log("BookOption", e.target.value)
setSelectedBook(e.target.value)
// setSelectedBook(e.target.value)
await selectBook(e.target.value)
// handleSelectChangeEvent(e)
}}>
<option value="">---</option>
Expand All @@ -141,7 +169,7 @@ export default function BookSelect(
let chapter = parseInt(e.target.value)
// setSelectedChapter(chapter)
// setHandleSelect(selectedBook, chapter)
changeBible(chapter)
changeBible(selectedBook,chapter)
}}>
{characters?.map((character) => (
<option key={character} value={character}>
Expand Down
2 changes: 1 addition & 1 deletion src/app/book/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { sql } from "@vercel/postgres";
import { sql } from "@/app/utils/db";
import * as Prisma from "@prisma/client";
import { prisma } from "@/app/utils/db";

Expand Down
50 changes: 49 additions & 1 deletion src/app/utils/db.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,50 @@
import {PrismaClient} from "@prisma/client";
import {Prisma, PrismaClient} from "@prisma/client";
import {QueryResult, QueryResultRow} from "pg";
import {Pool} from 'pg';
// import {Prisma} from "prisma-client-09a8d34f990ac5ec4d39c8b148141ddf39f6b0329786103087f17284234040ed/index";
export const prisma = new PrismaClient();


const pool = new Pool({
connectionString: process.env.POSTGRES_URL,
})

export async function sql<O extends QueryResultRow>(
strings: TemplateStringsArray,
...values: Primitive[]
): Promise<QueryResult<O>> {
const [query, params] = sqlTemplate(strings, ...values);

// @ts-ignore
const res = await pool.query(query, params);

// @ts-ignore
return res as unknown as Promise<QueryResult<O>>;
}

export type Primitive = string | number | boolean | undefined | null;

export function sqlTemplate(
strings: TemplateStringsArray,
...values: Primitive[]
): [string, Primitive[]] {
if (!isTemplateStringsArray(strings) || !Array.isArray(values)) {
throw new Error("It looks like you tried to call `sql` as a function. Make sure to use it as a tagged template.\n\tExample: sql`SELECT * FROM users`, not sql('SELECT * FROM users')");
}

let result = strings[0] ?? '';

for (let i = 1; i < strings.length; i++) {
result += `$${i}${strings[i] ?? ''}`;
}

return [result, values];
}

function isTemplateStringsArray(
strings: unknown,
): strings is TemplateStringsArray {
return (
Array.isArray(strings) && 'raw' in strings && Array.isArray(strings.raw)
);
}

0 comments on commit a672b29

Please sign in to comment.