Add migrations and code for sharedAdventures table

This commit is contained in:
Sean Morley
2024-04-02 18:54:09 +00:00
parent 9baab4c675
commit 56a8a45efb
11 changed files with 301 additions and 2 deletions

View File

@@ -1,4 +1,4 @@
import { pgTable,serial,text } from "drizzle-orm/pg-core";
import { pgTable,json,text,serial } from "drizzle-orm/pg-core";
export const featuredAdventures = pgTable("featuredAdventures",{
id:serial("id").primaryKey(),
@@ -6,4 +6,7 @@ export const featuredAdventures = pgTable("featuredAdventures",{
location:text("location"),
})
export const sharedAdventures = pgTable("sharedAdventures",{
id:text("id").primaryKey(),
data:json("data").notNull(),
})

View File

@@ -1 +1,11 @@
// place files you want to import through the `$lib` alias in this folder.
export function generateRandomString() {
let randomString = '';
const digits = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
for (let i = 0; i < 10; i++) {
const randomIndex = Math.floor(Math.random() * digits.length);
randomString += digits[randomIndex];
}
return randomString;
}

View File

@@ -0,0 +1,11 @@
import { db } from "$lib/db/db.server";
import { sharedAdventures } from "$lib/db/schema";
import type { Adventure } from "$lib/utils/types";
export async function POST({ request }: { request: Request }) {
const { key , data } = await request.json();
let adventure = data as Adventure;
console.log(adventure);
await db.insert(sharedAdventures).values({ id:key,data:adventure }).execute();
return new Response(JSON.stringify({key:key}));
}

View File

@@ -10,6 +10,7 @@
import SucessToast from "$lib/components/SucessToast.svelte";
import mapDrawing from "$lib/assets/adventure_map.svg"
import EditModal from "$lib/components/EditModal.svelte";
import { generateRandomString } from "$lib";
let newName = '';
let newLocation = '';
@@ -79,6 +80,26 @@
}
}
function shareLink() {
let key = generateRandomString()
let data = JSON.stringify(adventures)
fetch('/api/share', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ key, data }),
})
.then(response => response.json())
.then(data => {
console.log('Success:', data);
})
.catch((error) => {
console.error('Error:', error);
});
}
function handleClose() {
editId = NaN;
editName = '';
@@ -144,5 +165,8 @@
<button class="btn btn-neutral" on:click={deleteData}>
<img src={deleteIcon} class="inline-block -mt-1" alt="Logo" /> Delete Data
</button>
<button class="btn btn-neutral" on:click={shareLink}>
<img src={deleteIcon} class="inline-block -mt-1" alt="Logo" /> Share as Link
</button>
</div>
{/if}