import { error, redirect } from '@sveltejs/kit' import { base } from '$app/paths' interface EnvUser { USER: DurableObjectNamespace } import type { Grain } from './grain-types' export { Grain } from './grain-types' import { SimulationCommunaute } from './simulation_communaute.js' export { SimulationCommunaute } from './simulation_communaute.js' export * from './common' export async function userForm( env: EnvUser, id: DurableObjectId, body: Grain.CreateProjet ): Promise<Grain.CreateProjetResp> export async function userForm( env: EnvUser, id: DurableObjectId, body: Grain.SaveProjet ): Promise<null> export async function userForm( env: EnvUser, id: DurableObjectId, body: Grain.ListProjets ): Promise<Grain.ListProjetsResp> export async function userForm( env: EnvUser, id: DurableObjectId, body: Grain.DelProjet ): Promise<null> export async function userForm( env: EnvUser, id: DurableObjectId, body: Grain.GetProjet ): Promise<Grain.GetProjetResp> export async function userForm( env: EnvUser, id: DurableObjectId, body: Grain.Cmd ): Promise<any> { let headers = new Headers() headers.set('Content-Type', 'application/json') let stub = env.USER.get(id) let x = await ( await stub.fetch('https://y.coturnix.fr', { method: 'POST', body: JSON.stringify(body), headers, }) ).text() console.log('userForm json', x) return JSON.parse(x) } export async function save( id_: DurableObjectId, params: { id?: string }, request: Request, platform: Readonly<App.Platform> ) { const f = await request.formData() const 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') } const prms = JSON.parse(<string>f.get('prms') || '[]') const centrales = JSON.parse(<string>f.get('centrales') || '[]') const nom = <string>f.get('nom') || '' const porteur = <string>f.get('porteur') || '' const adresse = <string>f.get('adresse') || '' const tel = <string>f.get('tel') || '' const photo = <string | null>f.get('photo') console.log('params!', params) let pid if (params['id'] == 'nouveau') { pid = await userForm(platform.env, id_, { CreateProjet: { nom, porteur, tel, adresse, simulation: data, prms, centrales, }, }) } else if (params['id']) { pid = params['id'] await userForm(platform.env, id_, { SaveProjet: { id: pid, nom, porteur, tel, adresse, simulation: data, prms, centrales, }, }) } 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}`) } export async function del( id_: DurableObjectId, params: { id?: string }, platform: Readonly<App.Platform> ) { if (params.id) { await userForm(platform.env, id_, { DelProjet: { id: params['id'], }, }) throw redirect(302, `${base}`) } }