-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
184dcdd
commit 08db3c7
Showing
4 changed files
with
50 additions
and
117 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" }) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" }) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters