This commit is contained in:
+9
-1
@@ -1,6 +1,12 @@
|
||||
import { json, error } from '@sveltejs/kit';
|
||||
import type { RequestHandler } from './$types';
|
||||
import { lookupReference } from '$lib/server/bible';
|
||||
import { resolve } from 'path';
|
||||
|
||||
const tsvFiles: Record<string, string> = {
|
||||
glaube: 'static/allioli.tsv',
|
||||
faith: 'static/drb.tsv'
|
||||
};
|
||||
|
||||
export const GET: RequestHandler = async ({ params }) => {
|
||||
const reference = params.reference;
|
||||
@@ -9,8 +15,10 @@ export const GET: RequestHandler = async ({ params }) => {
|
||||
return error(400, 'Missing reference parameter');
|
||||
}
|
||||
|
||||
const tsvPath = resolve(tsvFiles[params.faithLang]);
|
||||
|
||||
try {
|
||||
const result = lookupReference(reference);
|
||||
const result = lookupReference(reference, tsvPath);
|
||||
|
||||
if (!result) {
|
||||
return error(404, 'No verses found for the given reference');
|
||||
+19
-11
@@ -1,5 +1,6 @@
|
||||
import { json, error } from '@sveltejs/kit';
|
||||
import type { RequestHandler } from './$types';
|
||||
import { resolve } from 'path';
|
||||
|
||||
interface BibleVerse {
|
||||
bookName: string;
|
||||
@@ -10,23 +11,27 @@ interface BibleVerse {
|
||||
text: string;
|
||||
}
|
||||
|
||||
// Cache for parsed verses to avoid reading file repeatedly
|
||||
let cachedVerses: BibleVerse[] | null = null;
|
||||
const tsvFiles: Record<string, string> = {
|
||||
glaube: '/allioli.tsv',
|
||||
faith: '/drb.tsv'
|
||||
};
|
||||
|
||||
async function loadVerses(fetch: typeof globalThis.fetch): Promise<BibleVerse[]> {
|
||||
if (cachedVerses) {
|
||||
return cachedVerses;
|
||||
}
|
||||
// Cache for parsed verses per language
|
||||
const versesCache = new Map<string, BibleVerse[]>();
|
||||
|
||||
async function loadVerses(fetch: typeof globalThis.fetch, tsvFile: string): Promise<BibleVerse[]> {
|
||||
const cached = versesCache.get(tsvFile);
|
||||
if (cached) return cached;
|
||||
|
||||
try {
|
||||
const response = await fetch('/allioli.tsv');
|
||||
const response = await fetch(tsvFile);
|
||||
if (!response.ok) {
|
||||
throw new Error(`HTTP error! status: ${response.status}`);
|
||||
}
|
||||
const content = await response.text();
|
||||
const lines = content.trim().split('\n');
|
||||
|
||||
cachedVerses = lines.map(line => {
|
||||
const verses = lines.map(line => {
|
||||
const [bookName, abbreviation, bookNumber, chapter, verseNumber, text] = line.split('\t');
|
||||
return {
|
||||
bookName,
|
||||
@@ -38,7 +43,8 @@ async function loadVerses(fetch: typeof globalThis.fetch): Promise<BibleVerse[]>
|
||||
};
|
||||
});
|
||||
|
||||
return cachedVerses;
|
||||
versesCache.set(tsvFile, verses);
|
||||
return verses;
|
||||
} catch (err) {
|
||||
console.error('Error loading Bible verses:', err);
|
||||
throw new Error('Failed to load Bible verses');
|
||||
@@ -54,9 +60,11 @@ function formatVerse(verse: BibleVerse): string {
|
||||
return `${verse.bookName} ${verse.chapter}:${verse.verseNumber}`;
|
||||
}
|
||||
|
||||
export const GET: RequestHandler = async ({ fetch }) => {
|
||||
export const GET: RequestHandler = async ({ fetch, params }) => {
|
||||
const tsvFile = tsvFiles[params.faithLang];
|
||||
|
||||
try {
|
||||
const verses = await loadVerses(fetch);
|
||||
const verses = await loadVerses(fetch, tsvFile);
|
||||
const randomVerse = getRandomVerse(verses);
|
||||
|
||||
return json({
|
||||
Reference in New Issue
Block a user