mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-07-18 16:43:56 -05:00
PlusSuggestions db queries to sql files
This commit is contained in:
parent
01722dd26d
commit
78578d93bf
|
|
@ -1,5 +1,5 @@
|
|||
import * as users from "./models/users/users.server";
|
||||
import * as plusSuggestions from "./models/plusSuggestions/plusSuggestions.server";
|
||||
import * as plusSuggestions from "./models/plusSuggestions/queries.server";
|
||||
import * as plusVotes from "./models/plusVotes/plusVotes.server";
|
||||
import * as badges from "./models/badges/queries.server";
|
||||
import * as calendarEvents from "./models/calendar/queries.server";
|
||||
|
|
|
|||
18
app/db/models/plusSuggestions/create.sql
Normal file
18
app/db/models/plusSuggestions/create.sql
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
insert into
|
||||
"PlusSuggestion" (
|
||||
"text",
|
||||
"authorId",
|
||||
"suggestedId",
|
||||
"month",
|
||||
"year",
|
||||
"tier"
|
||||
)
|
||||
values
|
||||
(
|
||||
@text,
|
||||
@authorId,
|
||||
@suggestedId,
|
||||
@month,
|
||||
@year,
|
||||
@tier
|
||||
)
|
||||
4
app/db/models/plusSuggestions/delete.sql
Normal file
4
app/db/models/plusSuggestions/delete.sql
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
delete from
|
||||
"PlusSuggestion"
|
||||
where
|
||||
"id" = @id
|
||||
7
app/db/models/plusSuggestions/deleteAll.sql
Normal file
7
app/db/models/plusSuggestions/deleteAll.sql
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
delete from
|
||||
"PlusSuggestion"
|
||||
where
|
||||
"suggestedId" = @suggestedId
|
||||
and "tier" = @tier
|
||||
and "month" = @month
|
||||
and "year" = @year
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
delete from
|
||||
"PlusSuggestion"
|
||||
where
|
||||
"month" = @month
|
||||
and "year" = @year
|
||||
and "suggestedId" = @suggestedId
|
||||
and "tier" = @tier
|
||||
25
app/db/models/plusSuggestions/findVisibleForUser.sql
Normal file
25
app/db/models/plusSuggestions/findVisibleForUser.sql
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
select
|
||||
suggestion."id",
|
||||
suggestion."createdAt",
|
||||
suggestion."text",
|
||||
suggestion."tier",
|
||||
author."id" as "authorId",
|
||||
author."discordId" as "authorDiscordId",
|
||||
author."discordName" as "authorDiscordName",
|
||||
author."discordDiscriminator" as "authorDiscordDiscriminator",
|
||||
suggested."id" as "suggestedId",
|
||||
suggested."discordId" as "suggestedDiscordId",
|
||||
suggested."discordName" as "suggestedDiscordName",
|
||||
suggested."discordDiscriminator" as "suggestedDiscordDiscriminator",
|
||||
suggested."discordAvatar" as "suggestedDiscordAvatar",
|
||||
suggested."bio" as "suggestedBio"
|
||||
from
|
||||
"PlusSuggestion" as suggestion
|
||||
join "User" as author on suggestion."authorId" = author."id"
|
||||
join "User" as suggested on suggestion."suggestedId" = suggested."id"
|
||||
where
|
||||
"month" = @month
|
||||
and "year" = @year
|
||||
and "tier" >= @plusTier
|
||||
order by
|
||||
suggestion."id" asc
|
||||
|
|
@ -6,27 +6,14 @@ import { databaseTimestampToDate } from "~/utils/dates";
|
|||
import { sql } from "../../sql";
|
||||
import type { PlusSuggestion, User, UserWithPlusTier } from "../../types";
|
||||
|
||||
const createStm = sql.prepare(`
|
||||
INSERT INTO
|
||||
"PlusSuggestion" (
|
||||
"text",
|
||||
"authorId",
|
||||
"suggestedId",
|
||||
"month",
|
||||
"year",
|
||||
"tier"
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
$text,
|
||||
$authorId,
|
||||
$suggestedId,
|
||||
$month,
|
||||
$year,
|
||||
$tier
|
||||
)
|
||||
`);
|
||||
import createSql from "./create.sql";
|
||||
import findVisibleForUserSql from "./findVisibleForUser.sql";
|
||||
import tiersSuggestedForSql from "./tiersSuggestedFor.sql";
|
||||
import deleteSql from "./delete.sql";
|
||||
import deleteAllSql from "./deleteAll.sql";
|
||||
import deleteSuggestionWithCommentsSql from "./deleteSuggestionWithComments.sql";
|
||||
|
||||
const createStm = sql.prepare(createSql);
|
||||
export function create(
|
||||
args: Pick<
|
||||
PlusSuggestion,
|
||||
|
|
@ -36,32 +23,7 @@ export function create(
|
|||
createStm.run(args);
|
||||
}
|
||||
|
||||
const findVisibleForUserStm = sql.prepare(`
|
||||
SELECT
|
||||
suggestion."id",
|
||||
suggestion."createdAt",
|
||||
suggestion."text",
|
||||
suggestion."tier",
|
||||
author."id" as "authorId",
|
||||
author."discordId" as "authorDiscordId",
|
||||
author."discordName" as "authorDiscordName",
|
||||
author."discordDiscriminator" as "authorDiscordDiscriminator",
|
||||
suggested."id" as "suggestedId",
|
||||
suggested."discordId" as "suggestedDiscordId",
|
||||
suggested."discordName" as "suggestedDiscordName",
|
||||
suggested."discordDiscriminator" as "suggestedDiscordDiscriminator",
|
||||
suggested."discordAvatar" as "suggestedDiscordAvatar",
|
||||
suggested."bio" as "suggestedBio"
|
||||
FROM "PlusSuggestion" as suggestion
|
||||
JOIN "User" AS author ON suggestion."authorId" = author."id"
|
||||
JOIN "User" AS suggested ON suggestion."suggestedId" = suggested."id"
|
||||
WHERE
|
||||
"month" = $month
|
||||
AND "year" = $year
|
||||
AND "tier" >= $plusTier
|
||||
ORDER BY
|
||||
suggestion."id" ASC
|
||||
`);
|
||||
const findVisibleForUserStm = sql.prepare(findVisibleForUserSql);
|
||||
|
||||
export interface FindVisibleForUserSuggestedUserInfo {
|
||||
suggestedUser: Pick<
|
||||
|
|
@ -162,58 +124,25 @@ function sortNewestPlayersToBeSuggestedFirst(
|
|||
);
|
||||
}
|
||||
|
||||
const tiersSuggestedForStm = sql.prepare(`
|
||||
SELECT
|
||||
json_group_array(tier)
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
DISTINCT tier
|
||||
FROM
|
||||
"PlusSuggestion"
|
||||
WHERE
|
||||
"month" = $month
|
||||
AND "year" = $year
|
||||
AND "suggestedId" = $userId
|
||||
ORDER BY tier ASC
|
||||
)
|
||||
`);
|
||||
|
||||
const tiersSuggestedForStm = sql.prepare(tiersSuggestedForSql);
|
||||
export function tiersSuggestedFor(args: MonthYear & { userId: User["id"] }) {
|
||||
return JSON.parse(tiersSuggestedForStm.pluck().get(args)) as User["id"][];
|
||||
}
|
||||
|
||||
const delStm = sql.prepare(`
|
||||
DELETE FROM "PlusSuggestion"
|
||||
WHERE
|
||||
"id" = $id
|
||||
`);
|
||||
const deleteStm = sql.prepare(deleteSql);
|
||||
|
||||
export function del(id: PlusSuggestion["id"]) {
|
||||
delStm.run({ id });
|
||||
deleteStm.run({ id });
|
||||
}
|
||||
|
||||
const deleteAllStm = sql.prepare(`
|
||||
DELETE FROM "PlusSuggestion"
|
||||
WHERE
|
||||
"suggestedId" = $suggestedId
|
||||
AND tier = $tier
|
||||
AND month = $month
|
||||
AND year = $year
|
||||
`);
|
||||
|
||||
const deleteAllStm = sql.prepare(deleteAllSql);
|
||||
export function deleteAll(args: Pick<PlusSuggestion, "suggestedId" | "tier">) {
|
||||
deleteAllStm.run({ ...args, ...nextNonCompletedVoting(new Date()) });
|
||||
}
|
||||
|
||||
const deleteSuggestionWithCommentsStm = sql.prepare(`
|
||||
delete from "PlusSuggestion"
|
||||
where "month" = $month
|
||||
and "year" = $year
|
||||
and "suggestedId" = $suggestedId
|
||||
and "tier" = $tier
|
||||
`);
|
||||
|
||||
const deleteSuggestionWithCommentsStm = sql.prepare(
|
||||
deleteSuggestionWithCommentsSql
|
||||
);
|
||||
export function deleteSuggestionWithComments(
|
||||
args: Pick<PlusSuggestion, "suggestedId" | "tier" | "month" | "year">
|
||||
) {
|
||||
15
app/db/models/plusSuggestions/tiersSuggestedFor.sql
Normal file
15
app/db/models/plusSuggestions/tiersSuggestedFor.sql
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
select
|
||||
json_group_array("tier")
|
||||
from
|
||||
(
|
||||
select
|
||||
distinct "tier"
|
||||
from
|
||||
"PlusSuggestion"
|
||||
where
|
||||
"month" = @month
|
||||
and "year" = @year
|
||||
and "suggestedId" = @userId
|
||||
order by
|
||||
"tier" asc
|
||||
)
|
||||
|
|
@ -13,7 +13,7 @@ import type {
|
|||
User,
|
||||
UserWithPlusTier,
|
||||
} from "../../types";
|
||||
import type { FindVisibleForUserSuggestedUserInfo } from "../plusSuggestions/plusSuggestions.server";
|
||||
import type { FindVisibleForUserSuggestedUserInfo } from "../plusSuggestions/queries.server";
|
||||
|
||||
const createStm = sql.prepare(`
|
||||
INSERT INTO
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type * as plusSuggestions from "~/db/models/plusSuggestions/plusSuggestions.server";
|
||||
import type * as plusSuggestions from "~/db/models/plusSuggestions/queries.server";
|
||||
import { monthsVotingRange } from "./modules/plus-server";
|
||||
import type {
|
||||
CalendarEvent,
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import { FormWithConfirm } from "~/components/FormWithConfirm";
|
|||
import { TrashIcon } from "~/components/icons/Trash";
|
||||
import { nextNonCompletedVoting } from "~/modules/plus-server";
|
||||
import { db } from "~/db";
|
||||
import type * as plusSuggestions from "~/db/models/plusSuggestions/plusSuggestions.server";
|
||||
import type * as plusSuggestions from "~/db/models/plusSuggestions/queries.server";
|
||||
import type { PlusSuggestion, User } from "~/db/types";
|
||||
import { getUser, requireUser, useUser } from "~/modules/auth";
|
||||
import {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user