Skip to content

Commit 16a07ce

Browse files
committed
Allow deleting categories
1 parent ced33fd commit 16a07ce

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

src/db/database.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,34 @@ class Database {
6161
return;
6262
}
6363

64+
// note: images in the category won't be deleted, just unlinked from the category
65+
async deleteCategory(id: string) {
66+
try {
67+
await this.sql`
68+
delete from image_tags
69+
where
70+
category_id = ${id}
71+
`;
72+
} catch (error) {
73+
// error
74+
console.error("could not delete category images:", error);
75+
return `Images error: ${error}`;
76+
}
77+
78+
try {
79+
await this.sql`
80+
delete from categories
81+
where
82+
id = ${id}
83+
`;
84+
} catch (error) {
85+
// error
86+
console.error(error);
87+
return `Error: ${error}`;
88+
}
89+
return;
90+
}
91+
6492
async getCategories() {
6593
var categories: Category[] = [];
6694

src/routes/categories.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,25 @@ router.put("/:id", async (req: Request, res: Response) => {
131131
});
132132
});
133133

134+
router.delete("/:id", async (req: Request, res: Response) => {
135+
var id = req.params.id || "";
136+
137+
const db = useDatabase();
138+
const error = await db.deleteCategory(id);
139+
140+
if (error) {
141+
res.status(400);
142+
res.json({
143+
error: "Couldn't delete category.",
144+
});
145+
return;
146+
}
147+
148+
res.json({
149+
ok: true,
150+
});
151+
});
152+
134153
router.get("/", async (req: Request, res: Response) => {
135154
const db = useDatabase();
136155
const categories = await db.getCategories();

0 commit comments

Comments
 (0)