import { error, redirect } from '@sveltejs/kit'; import type { PageServerLoad, Actions } from './$types'; import { userForm, SimulationCommunaute, Faisan } from '../../../helpers' import { base } from '$app/paths' import { base64encode } from '../../../base64'; export const load: PageServerLoad = async ({ params, platform }) => { console.log("load", params['id']) if (params['id'] == "nouveau") { let sim = Faisan.newSimulationCommunaute() console.log(JSON.stringify(sim)) return <Faisan.GetProjetResp & { guest?: boolean }> { name: "", id: "", porteur: "", tel: "", adresse: "", simulation: { ... sim }, guest: false } } let id_ = platform!.env.USER.jurisdiction('eu').idFromName("faisan") let [projet, img] = await Promise.all([ userForm(platform!.env, id_, { GetProjet: params['id'] }), platform!.env.projets.getWithMetadata(`photo.${params['id']}`, { type: 'arrayBuffer' }) ]) console.log("projet", JSON.stringify(projet)) if(projet) { if(img?.value) { projet.img = base64encode(new Uint8Array(img.value)) } return <Faisan.GetProjetResp> projet } throw error(404, 'Not found'); }; export const actions = { save: async ({ params, request, platform }) => { let id_ = platform!.env.USER.jurisdiction('eu').idFromName("faisan") let f = await request.formData() let data_ = f.get('data') let data if(data_) { console.log("data", data_) data = JSON.parse(data_ as string) if (!SimulationCommunaute(data)) { throw error(400, "Bad request") } } else { throw error(400, "Bad request") } let name = <string> f.get('name') || '' let porteur = <string> f.get('porteur') || '' let adresse = <string> f.get('adresse') || '' let tel = <string> f.get('tel') || '' let photo = <string | null> f.get('photo') console.log("params!", params) let pid if (params['id'] == "nouveau") { pid = await userForm(platform!.env, id_, { CreateProjet: { name, porteur, tel, adresse, simulation: data } }) } else { pid = params['id'] await userForm(platform!.env, id_, { SaveProjet: { id: params['id'], name, porteur, tel, adresse, simulation: data } }) } console.log(pid, !!photo) if(photo) { console.log("photo") try { console.log("f") console.log(photo) await platform!.env.projets.put(`photo.${id_.toString()}.${pid}`, photo) console.log("put") } catch(e) { console.log("Error", JSON.stringify(e)) } } console.log("redirect", `${base}/projet/${pid}`) throw redirect(302, `${base}/projet/${pid}`) }, del: async ({ cookies, params, platform }) => { let token = cookies.get('token') if (!token) { throw error(403, 'Forbidden'); } let id_ = platform!.env.USER.jurisdiction('eu').idFromName("faisan") await userForm(platform!.env, id_, { DelProjet: { id: params['id'], } }) throw redirect(302, `${base}`) }, } satisfies Actions