Badge db queries to sql files

This commit is contained in:
Kalle
2022-08-14 12:22:04 +03:00
parent 9f8efb67b9
commit 9f13586e30
11 changed files with 97 additions and 100 deletions

View File

@@ -0,0 +1,14 @@
select
"Badge"."code",
"Badge"."displayName",
"Badge"."id",
"Badge"."hue",
count("BadgeOwner"."badgeId") as count
from
"BadgeOwner"
join "Badge" on "Badge"."id" = "BadgeOwner"."badgeId"
where
"BadgeOwner"."userId" = @userId
group by
"BadgeOwner"."badgeId",
"BadgeOwner"."userId"

View File

@@ -0,0 +1,4 @@
insert into
"BadgeManager" ("badgeId", "userId")
values
(@badgeId, @userId)

View File

@@ -0,0 +1,4 @@
insert into
"TournamentBadgeOwner" ("badgeId", "userId")
values
(@badgeId, @userId)

View File

@@ -0,0 +1,4 @@
delete from
"BadgeManager"
where
"badgeId" = @badgeId

View File

@@ -0,0 +1,4 @@
delete from
"TournamentBadgeOwner"
where
"badgeId" = @badgeId

View File

@@ -0,0 +1,7 @@
select
"Badge"."id",
"Badge"."code",
"Badge"."displayName",
"Badge"."hue"
from
"Badge"

View File

@@ -0,0 +1,10 @@
select
"User"."id",
"User"."discordId",
"User"."discordName",
"User"."discordDiscriminator"
from
"BadgeManager"
join "User" on "User"."id" = "BadgeManager"."userId"
where
"BadgeManager"."badgeId" = @id

View File

@@ -0,0 +1,10 @@
select
"Badge"."id",
"Badge"."code",
"Badge"."displayName",
"Badge"."hue"
from
"BadgeManager"
join "Badge" on "Badge"."id" = "BadgeManager"."badgeId"
where
"userId" = @userId

View File

@@ -0,0 +1,16 @@
select
count("BadgeOwner"."badgeId") as count,
"User"."id",
"User"."discordId",
"User"."discordName",
"User"."discordDiscriminator"
from
"BadgeOwner"
join "User" on "User"."id" = "BadgeOwner"."userId"
where
"BadgeOwner"."badgeId" = @id
group by
"User"."id"
order by
count desc,
"User"."discordName" collate nocase asc

View File

@@ -1,26 +1,18 @@
import { sql } from "../../sql";
import type { Badge, User } from "../../types";
const deleteManyManagersStm = sql.prepare(`
DELETE FROM
"BadgeManager"
WHERE
"badgeId" = $badgeId
`);
const createManagerStm = sql.prepare(`
INSERT INTO
"BadgeManager" (
"badgeId",
"userId"
)
VALUES
(
$badgeId,
$userId
)
`);
import deleteManyManagersSql from "./deleteManyManagers.sql";
import createManagerSql from "./createManager.sql";
import deleteManyOwnersSql from "./deleteManyOwners.sql";
import createOwnerSql from "./createOwner.sql";
import countsByUserIdSql from "./countsByUserId.sql";
import findAllSql from "./findAll.sql";
import ownersByBadgeIdSql from "./ownersByBadgeId.sql";
import managersByBadgeIdSql from "./managersByBadgeId.sql";
import managersByUserIdSql from "./managersByUserId.sql";
const deleteManyManagersStm = sql.prepare(deleteManyManagersSql);
const createManagerStm = sql.prepare(createManagerSql);
export const upsertManyManagers = sql.transaction(
({
badgeId,
@@ -42,26 +34,8 @@ export const upsertManyManagers = sql.transaction(
}
);
const deleteManyOwnersStm = sql.prepare(`
DELETE FROM
"TournamentBadgeOwner"
WHERE
"badgeId" = $badgeId
`);
const createOwnerStm = sql.prepare(`
INSERT INTO
"TournamentBadgeOwner" (
"badgeId",
"userId"
)
VALUES
(
$badgeId,
$userId
)
`);
const deleteManyOwnersStm = sql.prepare(deleteManyOwnersSql);
const createOwnerStm = sql.prepare(createOwnerSql);
export const upsertManyOwners = sql.transaction(
({
badgeId,
@@ -83,18 +57,7 @@ export const upsertManyOwners = sql.transaction(
}
);
const countsByUserIdStm = sql.prepare(`
select
"Badge"."code",
"Badge"."displayName",
"Badge"."id",
"Badge"."hue",
count("BadgeOwner"."badgeId") as count
from "BadgeOwner"
join "Badge" on "Badge"."id" = "BadgeOwner"."badgeId"
where "BadgeOwner"."userId" = $userId
group by "BadgeOwner"."badgeId", "BadgeOwner"."userId"
`);
const countsByUserIdStm = sql.prepare(countsByUserIdSql);
export type CountsByUserId = Array<
Pick<Badge, "code" | "displayName" | "id" | "hue"> & {
@@ -106,19 +69,12 @@ export function countsByUserId(userId: User["id"]) {
return countsByUserIdStm.all({ userId }) as CountsByUserId;
}
const allStm = sql.prepare(`
select
"Badge"."id",
"Badge"."code",
"Badge"."displayName",
"Badge"."hue"
from "Badge"
`);
const findAllStm = sql.prepare(findAllSql);
export type All = Array<Pick<Badge, "id" | "displayName" | "code" | "hue">>;
export type FindAll = Array<Pick<Badge, "id" | "displayName" | "code" | "hue">>;
export function all() {
return allStm.all() as All;
return findAllStm.all() as FindAll;
}
export type OwnersByBadgeId = Array<
@@ -127,20 +83,7 @@ export type OwnersByBadgeId = Array<
}
>;
const ownersByBadgeIdStm = sql.prepare(`
select
count("BadgeOwner"."badgeId") as count,
"User"."id",
"User"."discordId",
"User"."discordName",
"User"."discordDiscriminator"
from "BadgeOwner"
join "User" on "User"."id" = "BadgeOwner"."userId"
where "BadgeOwner"."badgeId" = $id
group by "User"."id"
order by count desc, "User"."discordName" collate nocase asc
`);
const ownersByBadgeIdStm = sql.prepare(ownersByBadgeIdSql);
export function ownersByBadgeId(id: Badge["id"]) {
return ownersByBadgeIdStm.all({ id }) as OwnersByBadgeId;
}
@@ -149,34 +92,15 @@ export type ManagersByBadgeId = Array<
Pick<User, "id" | "discordId" | "discordName" | "discordDiscriminator">
>;
const managersByBadgeIdStm = sql.prepare(`
select
"User"."id",
"User"."discordId",
"User"."discordName",
"User"."discordDiscriminator"
from "BadgeManager"
join "User" on "User"."id" = "BadgeManager"."userId"
where "BadgeManager"."badgeId" = $id
`);
const managersByBadgeIdStm = sql.prepare(managersByBadgeIdSql);
export function managersByBadgeId(id: Badge["id"]) {
return managersByBadgeIdStm.all({ id }) as ManagersByBadgeId;
}
const managedByUserIdStm = sql.prepare(`
select
"Badge"."id",
"Badge"."code",
"Badge"."displayName",
"Badge"."hue"
from "BadgeManager"
join "Badge" on "Badge"."id" = "BadgeManager"."badgeId"
where "userId" = $userId
`);
const managersByUserIdStm = sql.prepare(managersByUserIdSql);
export function managedByUserId(userId: User["id"]) {
return managedByUserIdStm.all({ userId }) as Array<
export function managersByUserId(userId: User["id"]) {
return managersByUserIdStm.all({ userId }) as Array<
Pick<Badge, "id" | "code" | "displayName" | "hue">
>;
}

View File

@@ -4,7 +4,7 @@ import { Link, NavLink, Outlet, useLoaderData } from "@remix-run/react";
import { Badge } from "~/components/Badge";
import { Main } from "~/components/Main";
import { db } from "~/db";
import type { All } from "~/db/models/badges/queries.server";
import type { FindAll } from "~/db/models/badges/queries.server";
import styles from "~/styles/badges.css";
import { BORZOIC_TWITTER, FAQ_PAGE } from "~/utils/urls";
import { Trans, useTranslation } from "react-i18next";
@@ -15,7 +15,7 @@ export const links: LinksFunction = () => {
};
export interface BadgesLoaderData {
badges: All;
badges: FindAll;
}
export const handle = {