Skip to content

Commit

Permalink
removed excess content
Browse files Browse the repository at this point in the history
  • Loading branch information
eirikhanasand committed Feb 18, 2025
1 parent 184dcdd commit 08db3c7
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 117 deletions.
85 changes: 28 additions & 57 deletions api/src/delete/blacklist.ts
Original file line number Diff line number Diff line change
@@ -1,66 +1,37 @@
import { FastifyReply, FastifyRequest } from "fastify"
import {runInTransaction } from "../db.js"
import run from "../db.js"
import { runInTransaction } from "../db.js"

export default async function blacklistDeleteHandler(req: FastifyRequest, res: FastifyReply) {
const { ecosystem, name, version } = req.params as OSVHandlerParams
if (!name) {
return res.status(400).send({ error: "Missing name parameter." })
}

try {
await runInTransaction(async (client) => {
if (version) {
const versionDeleteResult = await client.query(
"DELETE FROM blacklist_versions WHERE name = $1 AND version = $2 RETURNING *;",
[name, version]
)
const { name } = req.params as { name: string }
if (!name) {
return res.status(400).send({ error: "Missing name parameter." })
}

if (versionDeleteResult.rowCount === 0) {
throw new Error(`No entry found for name='${name}' and version='${version}'`)
}
try {
await runInTransaction(async (client) => {
await client.query("DELETE FROM blacklist_versions WHERE name = $1;", [name])
await client.query("DELETE FROM blacklist_ecosystems WHERE name = $1;", [name])
await client.query("DELETE FROM blacklist_repositories WHERE name = $1;", [name])
await client.query("DELETE FROM blacklist_comments WHERE name = $1;", [name])

const remaining = await Promise.all([
run("SELECT 1 FROM blacklist_versions WHERE name = $1 LIMIT 1;", [name]),
run("SELECT 1 FROM blacklist_ecosystems WHERE name = $1 LIMIT 1;", [name]),
run("SELECT 1 FROM blacklist_repositories WHERE name = $1 LIMIT 1;", [name]),
])

const hasAnyReferences = remaining.some((r) => (r.rowCount ?? 0) > 0)
if (!hasAnyReferences) {
await run("DELETE FROM blacklist WHERE name = $1;", [name])
const mainDeleteResult = await client.query(
"DELETE FROM blacklist WHERE name = $1 RETURNING *;",
[name]
)
if (mainDeleteResult.rowCount === 0) {
throw new Error(`No blacklist entry found for name='${name}'.`)
}
return
})
return res.send({
message: `All blacklist entries for '${name}' deleted successfully.`,
})
} catch (error: any) {
if (error.message.includes("No entry found for name")) {
return res.status(404).send({ error: error.message })
}
return
} else {
await client.query("DELETE FROM blacklist_versions WHERE name = $1;", [name])
await client.query("DELETE FROM blacklist_ecosystems WHERE name = $1;", [name])
await client.query("DELETE FROM blacklist_repositories WHERE name = $1;", [name])

const mainDeleteResult = await client.query(
"DELETE FROM blacklist WHERE name = $1 RETURNING *;",
[name]
)
if (mainDeleteResult.rowCount === 0) {
throw new Error(`No blacklist entry found for name='${name}'.`)
}
return
}
})
if (version) {
return res.send({
message: `Blacklist entry '${name}' with version '${version}' deleted successfully.`,
})
} else {
return res.send({
message: `All blacklist entries for '${name}' deleted successfully.`,
})
}
} catch (error: any) {
if (error.message.includes("No entry found for name")) {
return res.status(404).send({ error: error.message })
console.error("Database error:", error)
return res.status(500).send({ error: "Internal Server Error" })
}

console.error("Database error:", error)
return res.status(500).send({ error: "Internal Server Error" })
}
}
71 changes: 21 additions & 50 deletions api/src/delete/whitelist.ts
Original file line number Diff line number Diff line change
@@ -1,66 +1,37 @@
import { FastifyReply, FastifyRequest } from "fastify"
import {runInTransaction } from "../db.js"
import run from "../db.js"
import { runInTransaction } from "../db.js"

export default async function whitelistDeleteHandler(req: FastifyRequest, res: FastifyReply) {
const { ecosystem, name, version } = req.params as OSVHandlerParams
const { name } = req.params as { name: string }
if (!name) {
return res.status(400).send({ error: "Missing name parameter." })
}

try {
await runInTransaction(async (client) => {
if (version) {
const versionDeleteResult = await client.query(
"DELETE FROM whitelist_versions WHERE name = $1 AND version = $2 RETURNING *;",
[name, version]
)
await runInTransaction(async (client) => {
await client.query("DELETE FROM whitelist_versions WHERE name = $1;", [name])
await client.query("DELETE FROM whitelist_ecosystems WHERE name = $1;", [name])
await client.query("DELETE FROM whitelist_repositories WHERE name = $1;", [name])
await client.query("DELETE FROM whitelist_comments WHERE name = $1;", [name])

if (versionDeleteResult.rowCount === 0) {
throw new Error(`No entry found for name='${name}' and version='${version}'`)
}

const remaining = await Promise.all([
run("SELECT 1 FROM whitelist_versions WHERE name = $1 LIMIT 1;", [name]),
run("SELECT 1 FROM whitelist_ecosystems WHERE name = $1 LIMIT 1;", [name]),
run("SELECT 1 FROM whitelist_repositories WHERE name = $1 LIMIT 1;", [name]),
])

const hasAnyReferences = remaining.some((r) => (r.rowCount ?? 0) > 0)
if (!hasAnyReferences) {
await run("DELETE FROM whitelist WHERE name = $1;", [name])
}
return
} else {
await client.query("DELETE FROM whitelist_versions WHERE name = $1;", [name])
await client.query("DELETE FROM whitelist_ecosystems WHERE name = $1;", [name])
await client.query("DELETE FROM whitelist_repositories WHERE name = $1;", [name])

const mainDeleteResult = await client.query(
"DELETE FROM whitelist WHERE name = $1 RETURNING *;",
[name]
)
if (mainDeleteResult.rowCount === 0) {
throw new Error(`No whitelist entry found for name='${name}'.`)
}
return
}
})
if (version) {
return res.send({
message: `Whitelist entry '${name}' with version '${version}' deleted successfully.`,
const mainDeleteResult = await client.query(
"DELETE FROM whitelist WHERE name = $1 RETURNING *;",
[name]
)
if (mainDeleteResult.rowCount === 0) {
throw new Error(`No whitelist entry found for name='${name}'.`)
}
return
})
} else {
return res.send({
message: `All whitelist entries for '${name}' deleted successfully.`,
message: `All whitelist entries for '${name}' deleted successfully.`,
})
}
} catch (error: any) {
if (error.message.includes("No entry found for name")) {
return res.status(404).send({ error: error.message })
}
if (error.message.includes("No entry found for name")) {
return res.status(404).send({ error: error.message })
}

console.error("Database error:", error)
return res.status(500).send({ error: "Internal Server Error" })
console.error("Database error:", error)
return res.status(500).send({ error: "Internal Server Error" })
}
}
2 changes: 0 additions & 2 deletions api/src/routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,5 @@ export default async function apiRoutes(fastify: FastifyInstance, options: Fasti
// DELETE handlers
fastify.delete("/whitelist/:name", whitelistDeleteHandler)
fastify.delete("/blacklist/:name", blacklistDeleteHandler)
fastify.delete("/whitelist/:name/:version", whitelistDeleteHandler)
fastify.delete("/blacklist/:name/:version", blacklistDeleteHandler)
}

9 changes: 1 addition & 8 deletions ui/src/utils/filtering/deletePackage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,7 @@ type DeleteListProps = {

export default async function deletePackage({list, name}: DeleteListProps) {
try {
const response = await fetch(`${API}/${list}`, {
method: 'DELETE',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({name})
})

const response = await fetch(`${API}/${list}/${name}`, {method: 'DELETE'})
if (!response.ok) {
throw new Error(await response.text())
}
Expand Down

0 comments on commit 08db3c7

Please sign in to comment.