42 lines
1000 B
TypeScript
42 lines
1000 B
TypeScript
import { db } from "$lib/db/db.server";
|
|
import { sharedAdventures } from "$lib/db/schema";
|
|
import { eq } from "drizzle-orm";
|
|
import type { Adventure } from "$lib/utils/types";
|
|
|
|
export async function load({ params }) {
|
|
let key = params.key;
|
|
|
|
// Fetch data from the database
|
|
let result = await db
|
|
.select()
|
|
.from(sharedAdventures)
|
|
.where(eq(sharedAdventures.id, key))
|
|
.execute();
|
|
|
|
// Assuming result is an array with a single object
|
|
let rawData = result[0];
|
|
|
|
// Parse the data field, which contains a JSON string
|
|
let adventures = JSON.parse(rawData.data as string);
|
|
|
|
// Map the parsed adventures to the Adventure interface
|
|
let adventureArray = adventures.map((item: any) => {
|
|
return {
|
|
id: item.id,
|
|
name: item.name,
|
|
location: item.location,
|
|
date: item.date,
|
|
} as Adventure;
|
|
});
|
|
|
|
let name = rawData.name;
|
|
let date = rawData.date;
|
|
|
|
// Return the array of Adventure objects
|
|
return {
|
|
adventureArray,
|
|
name,
|
|
date,
|
|
};
|
|
}
|