add project deletion in storage & connect to ip port 3000

This commit is contained in:
Ishaan Dey 2024-05-23 23:05:01 -07:00
parent 218afd4fe0
commit 1528ea5257
5 changed files with 32 additions and 39 deletions

View File

@ -52,6 +52,14 @@ export default {
const id = params.get("id") as string; const id = params.get("id") as string;
await db.delete(usersToSandboxes).where(eq(usersToSandboxes.sandboxId, id)); await db.delete(usersToSandboxes).where(eq(usersToSandboxes.sandboxId, id));
await db.delete(sandbox).where(eq(sandbox.id, id)); await db.delete(sandbox).where(eq(sandbox.id, id));
const deleteStorageRequest = new Request("https://storage.ishaan1013.workers.dev/api/project", {
method: "DELETE",
body: JSON.stringify({ sandboxId: id }),
headers: { "Content-Type": "application/json" },
});
const deleteStorageRes = await env.STORAGE.fetch(deleteStorageRequest);
return success; return success;
} else { } else {
return invalidRequest; return invalidRequest;
@ -93,7 +101,7 @@ export default {
}); });
const initStorageRes = await env.STORAGE.fetch(initStorageRequest); const initStorageRes = await env.STORAGE.fetch(initStorageRequest);
const initStorage = await initStorageRes.text(); // const initStorage = await initStorageRes.text();
return new Response(sb.id, { status: 200 }); return new Response(sb.id, { status: 200 });
} else { } else {

View File

@ -16,7 +16,24 @@ export default {
const path = url.pathname; const path = url.pathname;
const method = request.method; const method = request.method;
if (path === '/api/size' && method === 'GET') { if (path === '/api/project' && method === 'DELETE') {
const deleteSchema = z.object({
sandboxId: z.string(),
});
const body = await request.json();
const { sandboxId } = deleteSchema.parse(body);
const res = await env.R2.list({ prefix: 'projects/' + sandboxId });
// delete all files
await Promise.all(
res.objects.map(async (file) => {
await env.R2.delete(file.key);
})
);
return success;
} else if (path === '/api/size' && method === 'GET') {
const params = url.searchParams; const params = url.searchParams;
const sandboxId = params.get('sandboxId'); const sandboxId = params.get('sandboxId');

View File

@ -732,7 +732,7 @@ export default function CodeEditor({
previewPanelRef.current?.expand(); previewPanelRef.current?.expand();
setIsPreviewCollapsed(false); setIsPreviewCollapsed(false);
}} }}
sandboxId={sandboxData.id} ip={ip}
/> />
</ResizablePanel> </ResizablePanel>
<ResizableHandle /> <ResizableHandle />

View File

@ -15,11 +15,11 @@ import { toast } from "sonner";
export default function PreviewWindow({ export default function PreviewWindow({
collapsed, collapsed,
open, open,
sandboxId, ip,
}: { }: {
collapsed: boolean; collapsed: boolean;
open: () => void; open: () => void;
sandboxId: string; ip: string;
}) { }) {
const ref = useRef<HTMLIFrameElement>(null); const ref = useRef<HTMLIFrameElement>(null);
@ -51,9 +51,7 @@ export default function PreviewWindow({
<PreviewButton <PreviewButton
onClick={() => { onClick={() => {
navigator.clipboard.writeText( navigator.clipboard.writeText(`http://${ip}:3000`);
`http://${sandboxId}.sandbox.ishaand.com`
);
toast.info("Copied preview link to clipboard"); toast.info("Copied preview link to clipboard");
}} }}
> >
@ -79,7 +77,7 @@ export default function PreviewWindow({
ref={ref} ref={ref}
width={"100%"} width={"100%"}
height={"100%"} height={"100%"}
src={`http://${sandboxId}.sandbox.ishaand.com`} src={`http://${ip}:3000`}
/> />
</div> </div>
)} )}

View File

@ -64,36 +64,6 @@ export function addNew(
} }
} }
// export async function startServer(
// sandboxId: string,
// userId: string,
// callback: (success: boolean) => void
// ) {
// try {
// const res = await fetch("http://localhost:4001/start", {
// method: "POST",
// headers: {
// "Content-Type": "application/json",
// },
// body: JSON.stringify({
// sandboxId,
// userId,
// }),
// });
// if (res.status !== 200) {
// console.error("Failed to start server", res);
// callback(false);
// }
// callback(true);
// } catch (error) {
// console.error("Failed to start server", error);
// callback(false);
// }
// }
export function checkServiceStatus(serviceName: string): Promise<Service> { export function checkServiceStatus(serviceName: string): Promise<Service> {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let tries = 0; let tries = 0;