diff --git a/apps/backend/package.json b/apps/backend/package.json index 9aa10d37..60421939 100644 --- a/apps/backend/package.json +++ b/apps/backend/package.json @@ -22,6 +22,7 @@ "devDependencies": { "@types/express": "^4.17.18", "@types/morgan": "^1.9.6", + "@types/uuid": "^9.0.5", "bun-types": "latest", "typescript": "^5.0.0" } diff --git a/apps/backend/src/app.ts b/apps/backend/src/app.ts index 10ab602c..9026fcd4 100644 --- a/apps/backend/src/app.ts +++ b/apps/backend/src/app.ts @@ -1,18 +1,22 @@ -import express from "express"; +import express from 'express' import events from './routes/events' import profiles from './routes/profiles' -import { authMiddleware } from "./middlewares/auth"; +import { authMiddleware } from './middlewares/auth' import morgan from 'morgan' +import { setup } from './routes/setup' -const app = express(); -const port = process.env.PORT || 8080; +const app = express() +const port = process.env.PORT || 8080 -app.use(express.json()); +app.use(express.json()) app.use(morgan(':method :url :status :response-time ms')) -app.get("/", (req, res) => res.json("Welcome to Mixan")); +app.get('/', (req, res) => res.json('Welcome to Mixan')) app.use(authMiddleware) -app.use('/api/sdk',events) -app.use('/api/sdk',profiles) +app.use('/api/sdk', events) +app.use('/api/sdk', profiles) +if (process.env.SETUP) { + app.use('/setup', setup) +} app.listen(port, () => { - console.log(`Listening on port ${port}...`); -}); \ No newline at end of file + console.log(`Listening on port ${port}...`) +}) diff --git a/apps/backend/src/routes/setup.ts b/apps/backend/src/routes/setup.ts new file mode 100644 index 00000000..c65c5d71 --- /dev/null +++ b/apps/backend/src/routes/setup.ts @@ -0,0 +1,37 @@ +import { Request, Response } from 'express' +import { db } from '../db' +import { makeError } from '../responses/errors' +import { v4 as uuid } from 'uuid' + +export async function setup(req: Request, res: Response) { + try { + const organization = await db.organization.create({ + data: { + name: 'Acme Inc.', + }, + }) + + const project = await db.project.create({ + data: { + name: 'Acme Website', + organization_id: organization.id, + }, + }) + + const client = await db.client.create({ + data: { + name: 'Acme Website Client', + project_id: project.id, + secret: uuid(), + }, + }) + + res.json({ + organization, + project, + client, + }) + } catch (error) { + res.json(makeError(error)) + } +} diff --git a/bun.lockb b/bun.lockb index be6cce49..898ec7ef 100755 Binary files a/bun.lockb and b/bun.lockb differ