Scoped PATs (#651)

* Scoped PATs

* fix threads issues

* fix migration
This commit is contained in:
Geometrically
2023-07-10 16:44:40 -07:00
committed by GitHub
parent 366ea63209
commit 7fbb8838e7
42 changed files with 2560 additions and 1402 deletions

View File

@@ -11,7 +11,6 @@ pub struct Report {
pub reporter: UserId,
pub created: DateTime<Utc>,
pub closed: bool,
pub thread_id: ThreadId,
}
pub struct QueryReport {
@@ -24,7 +23,7 @@ pub struct QueryReport {
pub reporter: UserId,
pub created: DateTime<Utc>,
pub closed: bool,
pub thread_id: Option<ThreadId>,
pub thread_id: ThreadId,
}
impl Report {
@@ -36,11 +35,11 @@ impl Report {
"
INSERT INTO reports (
id, report_type_id, mod_id, version_id, user_id,
body, reporter, thread_id
body, reporter
)
VALUES (
$1, $2, $3, $4, $5,
$6, $7, $8
$6, $7
)
",
self.id as ReportId,
@@ -49,8 +48,7 @@ impl Report {
self.version_id.map(|x| x.0 as i64),
self.user_id.map(|x| x.0 as i64),
self.body,
self.reporter as UserId,
self.thread_id as ThreadId,
self.reporter as UserId
)
.execute(&mut *transaction)
.await?;
@@ -79,9 +77,10 @@ impl Report {
let report_ids_parsed: Vec<i64> = report_ids.iter().map(|x| x.0).collect();
let reports = sqlx::query!(
"
SELECT r.id, rt.name, r.mod_id, r.version_id, r.user_id, r.body, r.reporter, r.created, r.thread_id, r.closed
SELECT r.id, rt.name, r.mod_id, r.version_id, r.user_id, r.body, r.reporter, r.created, t.id thread_id, r.closed
FROM reports r
INNER JOIN report_types rt ON rt.id = r.report_type_id
INNER JOIN threads t ON t.report_id = r.id
WHERE r.id = ANY($1)
ORDER BY r.created DESC
",
@@ -99,7 +98,7 @@ impl Report {
reporter: UserId(x.reporter),
created: x.created,
closed: x.closed,
thread_id: x.thread_id.map(ThreadId),
thread_id: ThreadId(x.thread_id)
}))
})
.try_collect::<Vec<QueryReport>>()
@@ -127,14 +126,18 @@ impl Report {
let thread_id = sqlx::query!(
"
SELECT thread_id FROM reports
WHERE id = $1
SELECT id FROM threads
WHERE report_id = $1
",
id as ReportId
)
.fetch_optional(&mut *transaction)
.await?;
if let Some(thread_id) = thread_id {
crate::database::models::Thread::remove_full(ThreadId(thread_id.id), transaction).await?;
}
sqlx::query!(
"
DELETE FROM reports WHERE id = $1
@@ -144,12 +147,6 @@ impl Report {
.execute(&mut *transaction)
.await?;
if let Some(thread_id) = thread_id {
if let Some(id) = thread_id.thread_id {
crate::database::models::Thread::remove_full(ThreadId(id), transaction).await?;
}
}
Ok(Some(()))
}
}