backend cleanup
This commit is contained in:
@@ -17,6 +17,7 @@ export const task = sqliteTable('task', {
|
||||
title: text().notNull(),
|
||||
description: text().notNull(),
|
||||
done: int().notNull(),
|
||||
scheduled_at: text(),
|
||||
estimated_time: int().notNull(),
|
||||
due_date: text(),
|
||||
created_at: text().notNull().default(new Date().toISOString()),
|
||||
|
||||
@@ -1,144 +1,20 @@
|
||||
import express from 'express'
|
||||
import cors from 'cors'
|
||||
import { drizzle } from 'drizzle-orm/libsql';
|
||||
import { event, task } from './db/schema';
|
||||
import { eq, ne, gt, gte } from 'drizzle-orm';
|
||||
|
||||
const db = drizzle("file:local.db");
|
||||
import taskRouter from './routers/task';
|
||||
import eventRouter from './routers/event'
|
||||
|
||||
const app = express();
|
||||
const userId = "Detlef";
|
||||
|
||||
type Prettify<T> = {
|
||||
[K in keyof T]: T[K];
|
||||
} & {};
|
||||
|
||||
type TaskResponse = Prettify<Omit<typeof task.$inferSelect, 'done'> & { done: boolean }>
|
||||
|
||||
app.use(cors())
|
||||
app.use('/tasks', taskRouter)
|
||||
app.use('/events', eventRouter)
|
||||
app.use(express.json());
|
||||
|
||||
app.get('/', (req, res) => {
|
||||
res.send('Hello World');
|
||||
});
|
||||
|
||||
app.get('/tasks', async (req, res) => {
|
||||
const tasks: typeof task.$inferSelect[] = await db.select().from(task)
|
||||
console.log(tasks)
|
||||
res.status(200).send(tasks.map<TaskResponse>(task => {
|
||||
return { ...task, done: task.done === 1 }
|
||||
}));
|
||||
});
|
||||
|
||||
app.get('/events', async (req, res) => {
|
||||
res.status(200).send(await db.select().from(event))
|
||||
});
|
||||
|
||||
app.get('/user/:id', (req, res) => {
|
||||
const id = req.params['id'];
|
||||
|
||||
if (id == null) {
|
||||
res.status(400).send({ error: 'Needs an user id' });
|
||||
return;
|
||||
}
|
||||
|
||||
const user = { id: id, name: 'Cracker' } //TODO
|
||||
res.json(user);
|
||||
|
||||
});
|
||||
|
||||
app.get('/task/:id', async (req, res) => {
|
||||
|
||||
const id = parseInt(req.params['id']);
|
||||
|
||||
if (id == null) {
|
||||
res.status(400).send({ error: 'Needs an id' });
|
||||
return;
|
||||
}
|
||||
|
||||
const returnedTask = await db.select().from(task).where(eq(task.id, id))
|
||||
//
|
||||
console.log(returnedTask)
|
||||
res.json(returnedTask);
|
||||
});
|
||||
|
||||
app.get('/event/:id', (req, res) => {
|
||||
|
||||
const id = req.params['id'];
|
||||
|
||||
if (id == null) {
|
||||
res.status(400).send({ error: 'Needs an id' });
|
||||
return;
|
||||
}
|
||||
|
||||
const event = { id: id, name: 'Pary' } //TODO
|
||||
res.json(event);
|
||||
});
|
||||
|
||||
app.post('/task', async (req, res) => {
|
||||
|
||||
const newTask = req.body
|
||||
newTask.userid = userId
|
||||
|
||||
console.log(newTask)
|
||||
const returnedTasks = await db.insert(task).values(newTask).returning()
|
||||
console.log(returnedTasks)
|
||||
|
||||
res.status(201).json(returnedTasks[0]);
|
||||
});
|
||||
|
||||
app.post('/event', async (req, res) => {
|
||||
|
||||
const newEvent: typeof event.$inferInsert = req.body
|
||||
newEvent.userid = userId
|
||||
|
||||
const returnedEvent = await db.insert(event).values(newEvent).returning()
|
||||
console.log(returnedEvent)
|
||||
|
||||
res.status(201).json(returnedEvent);
|
||||
});
|
||||
|
||||
app.put('/task', (req, res) => {
|
||||
|
||||
const id = parseInt(req.params['id']);
|
||||
const updatedTask: Partial<typeof task.$inferSelect> = req.body
|
||||
|
||||
if (id == null) {
|
||||
res.status(400).send({ error: 'Needs an id' });
|
||||
return;
|
||||
}
|
||||
db.update(task).set(updatedTask).where(eq(task.id, id))
|
||||
|
||||
res.status(200).json(updatedTask);
|
||||
});
|
||||
|
||||
app.put('/event', (req, res) => {
|
||||
|
||||
const id = parseInt(req.params['id']);
|
||||
const updatedEvent: Partial<typeof event.$inferSelect> = req.body
|
||||
|
||||
if (id == null) {
|
||||
res.status(400).send({ error: 'Needs an id' });
|
||||
return;
|
||||
}
|
||||
db.update(event).set(updatedEvent).where(eq(event.id, id))
|
||||
|
||||
res.status(200).json(updatedEvent);
|
||||
});
|
||||
|
||||
app.delete('/task/:id', async (req, res) => {
|
||||
const id = parseInt(req.params['id']);
|
||||
|
||||
const success = await db.delete(task).where(eq(task.id, id))
|
||||
res.send("Deleted");
|
||||
});
|
||||
|
||||
app.delete('/event/:id', async (req, res) => {
|
||||
const id = parseInt(req.params['id']);
|
||||
|
||||
const success = await db.delete(event).where(eq(event.id, id))
|
||||
res.send("Deleted");
|
||||
});
|
||||
|
||||
app.listen(8080, () => {
|
||||
console.log('Listening on port 8080');
|
||||
});
|
||||
|
||||
65
backend/src/routers/event.ts
Normal file
65
backend/src/routers/event.ts
Normal file
@@ -0,0 +1,65 @@
|
||||
import express from 'express'
|
||||
import cors from 'cors'
|
||||
import { drizzle } from 'drizzle-orm/libsql';
|
||||
import { event } from '../db/schema';
|
||||
import { eq, ne, gt, gte } from 'drizzle-orm';
|
||||
import { Router } from "express";
|
||||
|
||||
const db = drizzle("file:local.db");
|
||||
const userId = "Detlef";
|
||||
|
||||
const router = Router()
|
||||
|
||||
router.use(cors())
|
||||
router.use(express.json());
|
||||
|
||||
router.get('/', async (req, res) => {
|
||||
res.status(200).send(await db.select().from(event))
|
||||
});
|
||||
|
||||
router.get('/:id', (req, res) => {
|
||||
|
||||
const id = req.params['id'];
|
||||
|
||||
if (id == null) {
|
||||
res.status(400).send({ error: 'Needs an id' });
|
||||
return;
|
||||
}
|
||||
|
||||
const event = { id: id, name: 'Pary' } //TODO
|
||||
res.json(event);
|
||||
});
|
||||
|
||||
router.post('/', async (req, res) => {
|
||||
console.log("loll")
|
||||
const newEvent: typeof event.$inferInsert = req.body
|
||||
newEvent.userid = userId
|
||||
|
||||
const returnedEvent = await db.insert(event).values(newEvent).returning()
|
||||
console.log(returnedEvent)
|
||||
|
||||
res.status(201).json(returnedEvent);
|
||||
});
|
||||
|
||||
router.put('/', (req, res) => {
|
||||
|
||||
const id = parseInt(req.params['id']);
|
||||
const updatedEvent: Partial<typeof event.$inferSelect> = req.body
|
||||
|
||||
if (id == null) {
|
||||
res.status(400).send({ error: 'Needs an id' });
|
||||
return;
|
||||
}
|
||||
db.update(event).set(updatedEvent).where(eq(event.id, id))
|
||||
|
||||
res.status(200).json(updatedEvent);
|
||||
});
|
||||
|
||||
router.delete('/:id', async (req, res) => {
|
||||
const id = parseInt(req.params['id']);
|
||||
|
||||
const success = await db.delete(event).where(eq(event.id, id))
|
||||
res.send("Deleted");
|
||||
});
|
||||
|
||||
export default router
|
||||
78
backend/src/routers/task.ts
Normal file
78
backend/src/routers/task.ts
Normal file
@@ -0,0 +1,78 @@
|
||||
import express from 'express'
|
||||
import cors from 'cors'
|
||||
import { drizzle } from 'drizzle-orm/libsql';
|
||||
import { task } from '../db/schema';
|
||||
import { eq, ne, gt, gte } from 'drizzle-orm';
|
||||
import { Router } from "express";
|
||||
|
||||
const db = drizzle("file:local.db");
|
||||
const userId = "Detlef";
|
||||
|
||||
type Prettify<T> = {
|
||||
[K in keyof T]: T[K];
|
||||
} & {};
|
||||
|
||||
type TaskResponse = Prettify<Omit<typeof task.$inferSelect, 'done'> & { done: boolean }>
|
||||
|
||||
const router = Router()
|
||||
|
||||
router.use(cors())
|
||||
router.use(express.json());
|
||||
|
||||
router.get('/', async (req, res) => {
|
||||
const tasks: typeof task.$inferSelect[] = await db.select().from(task)
|
||||
console.log(tasks)
|
||||
res.status(200).send(tasks.map<TaskResponse>(task => {
|
||||
return { ...task, done: task.done === 1 }
|
||||
}));
|
||||
});
|
||||
|
||||
router.get('/:id', async (req, res) => {
|
||||
|
||||
const id = parseInt(req.params['id']);
|
||||
|
||||
if (id == null) {
|
||||
res.status(400).send({ error: 'Needs an id' });
|
||||
return;
|
||||
}
|
||||
|
||||
const returnedTask = await db.select().from(task).where(eq(task.id, id))
|
||||
//
|
||||
console.log(returnedTask)
|
||||
res.json(returnedTask);
|
||||
});
|
||||
|
||||
router.post('/', async (req, res) => {
|
||||
|
||||
const newTask = req.body
|
||||
newTask.userid = userId
|
||||
|
||||
console.log(newTask)
|
||||
const returnedTasks = await db.insert(task).values(newTask).returning()
|
||||
console.log(returnedTasks)
|
||||
|
||||
res.status(201).json(returnedTasks[0]);
|
||||
});
|
||||
|
||||
router.put('/', (req, res) => {
|
||||
|
||||
const id = parseInt(req.params['id']);
|
||||
const updatedTask: Partial<typeof task.$inferSelect> = req.body
|
||||
|
||||
if (id == null) {
|
||||
res.status(400).send({ error: 'Needs an id' });
|
||||
return;
|
||||
}
|
||||
db.update(task).set(updatedTask).where(eq(task.id, id))
|
||||
|
||||
res.status(200).json(updatedTask);
|
||||
});
|
||||
|
||||
router.delete('/:id', async (req, res) => {
|
||||
const id = parseInt(req.params['id']);
|
||||
|
||||
const success = await db.delete(task).where(eq(task.id, id))
|
||||
res.send("Deleted");
|
||||
});
|
||||
|
||||
export default router
|
||||
@@ -27,19 +27,19 @@ onMounted(() => {
|
||||
|
||||
async function postEvent(event: Event) {
|
||||
console.log('posting Event')
|
||||
await axios.post('/event', event.toSerializable())
|
||||
await axios.post('/events', event.toSerializable())
|
||||
}
|
||||
|
||||
async function postTask(task: Task) {
|
||||
console.log('posting Task')
|
||||
const createdTask = await axios.post<SerializableTask>('/task', task)
|
||||
const createdTask = await axios.post<SerializableTask>('/tasks', task)
|
||||
console.log(createdTask)
|
||||
task.id = createdTask.data.id
|
||||
}
|
||||
|
||||
async function deleteTask(id: number) {
|
||||
console.log('deleting Task')
|
||||
await axios.delete(`/task/${id}`)
|
||||
await axios.delete(`/tasks/${id}`)
|
||||
await refresh()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user