import db from ".";
import { hashPassword } from "../lib/crypto";
import { uid } from "../lib/utils";
import { file } from "./schema/file";
import { project } from "./schema/project";
import { user } from "./schema/user";
const main = async () => {
const [adminUser] = await db
.insert(user)
.values({
name: "Admin",
email: "admin@mail.com",
password: await hashPassword("123456"),
})
.returning();
const [vanillaProject] = await db
.insert(project)
.values({
userId: adminUser.id,
slug: uid(),
title: "Vanilla Project",
visibility: "public",
})
.returning();
// vanilla html css js template
await db
.insert(file)
.values([
{
projectId: vanillaProject.id,
path: "index.html",
filename: "index.html",
content: "
Hello world!
",
isPinned: true,
},
{
projectId: vanillaProject.id,
path: "styles.css",
filename: "styles.css",
content: "body { padding: 16px; }",
isPinned: true,
},
{
projectId: vanillaProject.id,
path: "scripts.js",
filename: "scripts.js",
content: "console.log('hello world!');",
isPinned: true,
},
{
projectId: vanillaProject.id,
path: "_layout.html",
filename: "_layout.html",
content: `
Document
{CONTENT}
`,
},
])
.execute();
const [reactProject] = await db
.insert(project)
.values({
userId: adminUser.id,
slug: uid(),
title: "React Project",
visibility: "public",
settings: {
css: {
preprocessor: "postcss",
tailwindcss: true,
},
js: {
transpiler: "swc",
packages: [
{ name: "react", url: "https://esm.sh/react@18.2.0" },
{
name: "react-dom/client",
url: "https://esm.sh/react-dom@18.2.0/client",
},
],
},
},
})
.returning();
// react template
await db
.insert(file)
.values([
{
projectId: reactProject.id,
path: "index.html",
filename: "index.html",
content: `
React + Tailwind Template
`,
},
{
projectId: reactProject.id,
path: "globals.css",
filename: "globals.css",
content: `@tailwind base;
@tailwind components;
@tailwind utilities;
body {
@apply p-4;
}
`,
},
{
projectId: reactProject.id,
path: "index.jsx",
filename: "index.jsx",
content: `import React from "react";
import { createRoot } from "react-dom/client";
import App from "./App.jsx";
const root = createRoot(document.getElementById("app"));
root.render();
`,
},
{
projectId: reactProject.id,
path: "App.jsx",
filename: "App.jsx",
isPinned: true,
content: `import React from "react";
const App = () => {
return (
React + Tailwind Template!
Open App.jsx to edit this text.
);
};
export default App;
`,
},
])
.execute();
process.exit();
};
main();