import { writable } from 'svelte/store'; import { db } from '../firebase.js'; import { collection, onSnapshot, addDoc, updateDoc, deleteDoc, doc, serverTimestamp } from 'firebase/firestore'; /** * @typedef {{ * id: string, * title: string, * date: string, * location: { country: string, cities: string[] }, * photos: string[], * transport: 'flight' | 'train' | 'bus' | 'car' | 'ship' | 'walk', * tripType: 'solo' | 'friends' | 'family', * days: number, * memo: string * }} JournalEntry */ export const journals = writable(/** @type {JournalEntry[]} */([])); export const journalsLoading = writable(true); const entriesRef = collection(db, 'entries'); onSnapshot(entriesRef, (snap) => { journals.set(snap.docs.map(d => ({ id: d.id, ...d.data() }))); journalsLoading.set(false); }); /** @param {Omit} entry */ export async function addJournal(entry) { await addDoc(entriesRef, { ...entry, createdAt: serverTimestamp() }); } /** @param {string} id */ export async function removeJournal(id) { await deleteDoc(doc(db, 'entries', id)); } /** @param {JournalEntry} updated */ export async function updateJournal(updated) { const { id, ...data } = updated; await updateDoc(doc(db, 'entries', id), data); }