diff --git a/backend/storage/src/index.ts b/backend/storage/src/index.ts index a375f30..c57e7e7 100644 --- a/backend/storage/src/index.ts +++ b/backend/storage/src/index.ts @@ -1,5 +1,4 @@ import { z } from "zod" -import startercode from "./startercode" export interface Env { R2: R2Bucket @@ -143,13 +142,19 @@ export default { const body = await request.json() const { sandboxId, type } = initSchema.parse(body) - console.log(startercode[type]) + console.log(`Copying template: ${type}`); - await Promise.all( - startercode[type].map(async (file) => { - await env.R2.put(`projects/${sandboxId}/${file.name}`, file.body) - }) - ) + const templateDirectory = `templates/${type}`; + + // List all objects under the directory + const { objects } = await env.R2.list({ prefix: templateDirectory }); + + // Copy each object to the new directory + for (const { key } of objects) { + const destinationKey = key.replace(templateDirectory, `projects/${sandboxId}`); + const fileBody = await env.R2.get(key).then(res => res?.body ?? ""); + await env.R2.put(destinationKey, fileBody); + } return success } else { diff --git a/backend/storage/src/startercode.ts b/backend/storage/src/startercode.ts deleted file mode 100644 index ae768e1..0000000 --- a/backend/storage/src/startercode.ts +++ /dev/null @@ -1,151 +0,0 @@ -const startercode = { - node: [ - { name: "index.js", body: `console.log("Hello World!")` }, - { - name: "package.json", - body: `{ - "name": "nodejs", - "version": "1.0.0", - "description": "", - "main": "index.js", - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "@types/node": "^18.0.6" - } -}`, - }, - ], - react: [ - { - name: "package.json", - body: `{ - "name": "react-app", - "version": "0.1.0", - "private": true, - "dependencies": { - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-scripts": "5.0.1" - }, - "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject" - }, - "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "devDependencies": { - "@types/react": "^18.2.66", - "@types/react-dom": "^18.2.22", - "eslint": "^8.57.0", - "eslint-plugin-react": "^7.34.1", - "eslint-plugin-react-hooks": "^4.6.0" - } -}`, - }, - { - name: "public/index.html", - body: ` - -
- - - -- Edit App.jsx to get started. -
- -