mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-04-22 06:59:05 -05:00
User db queries to sql files
This commit is contained in:
parent
294807ce2a
commit
b7b8e382de
|
|
@ -1,4 +1,4 @@
|
|||
import * as users from "./models/users/users.server";
|
||||
import * as users from "./models/users/queries.server";
|
||||
import * as plusSuggestions from "./models/plusSuggestions/queries.server";
|
||||
import * as plusVotes from "./models/plusVotes/queries.server";
|
||||
import * as badges from "./models/badges/queries.server";
|
||||
|
|
|
|||
7
app/db/models/users/addPatronData.sql
Normal file
7
app/db/models/users/addPatronData.sql
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
update
|
||||
"User"
|
||||
set
|
||||
"patronTier" = @patronTier,
|
||||
"patronSince" = @patronSince
|
||||
where
|
||||
"discordId" = @discordId
|
||||
5
app/db/models/users/deleteAllPatronData.sql
Normal file
5
app/db/models/users/deleteAllPatronData.sql
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
update
|
||||
"User"
|
||||
set
|
||||
"patronTier" = null,
|
||||
"patronSince" = null
|
||||
4
app/db/models/users/deleteById.sql
Normal file
4
app/db/models/users/deleteById.sql
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
delete from
|
||||
"User"
|
||||
where
|
||||
id = @id returning *
|
||||
9
app/db/models/users/findAll.sql
Normal file
9
app/db/models/users/findAll.sql
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
select
|
||||
"User"."id",
|
||||
"User"."discordId",
|
||||
"User"."discordName",
|
||||
"User"."discordDiscriminator",
|
||||
"PlusTier"."tier" as "plusTier"
|
||||
from
|
||||
"User"
|
||||
left join "PlusTier" on "PlusTier"."userId" = "User"."id"
|
||||
13
app/db/models/users/findAllPatrons.sql
Normal file
13
app/db/models/users/findAllPatrons.sql
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
select
|
||||
"id",
|
||||
"discordId",
|
||||
"discordName",
|
||||
"discordDiscriminator",
|
||||
"patronTier"
|
||||
from
|
||||
"User"
|
||||
where
|
||||
"patronTier" is not null
|
||||
order by
|
||||
"patronTier" desc,
|
||||
"patronSince" asc
|
||||
8
app/db/models/users/findAllPlusMembers.sql
Normal file
8
app/db/models/users/findAllPlusMembers.sql
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
select
|
||||
"User"."discordId",
|
||||
"PlusTier"."tier" as "plusTier"
|
||||
from
|
||||
"User"
|
||||
left join "PlusTier" on "PlusTier"."userId" = "User"."id"
|
||||
where
|
||||
"PlusTier"."tier" is not null
|
||||
9
app/db/models/users/findByIdentifier.sql
Normal file
9
app/db/models/users/findByIdentifier.sql
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
select
|
||||
"User".*,
|
||||
"PlusTier"."tier" as "plusTier"
|
||||
from
|
||||
"User"
|
||||
left join "PlusTier" on "PlusTier"."userId" = "User"."id"
|
||||
where
|
||||
"discordId" = @identifier
|
||||
or "id" = @identifier
|
||||
114
app/db/models/users/queries.server.ts
Normal file
114
app/db/models/users/queries.server.ts
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
import { sql } from "../../sql";
|
||||
import type { User, UserWithPlusTier } from "../../types";
|
||||
|
||||
import upsertSql from "./upsert.sql";
|
||||
import updateProfileSql from "./updateProfile.sql";
|
||||
import updateByDiscordIdSql from "./updateByDiscordId.sql";
|
||||
import deleteAllPatronDataSql from "./deleteAllPatronData.sql";
|
||||
import addPatronDataSql from "./addPatronData.sql";
|
||||
import findAllSql from "./findAll.sql";
|
||||
import deleteByIdSql from "./deleteById.sql";
|
||||
import updateDiscordIdSql from "./updateDiscordId.sql";
|
||||
import findByIdentifierSql from "./findByIdentifier.sql";
|
||||
import findAllPlusMembersSql from "./findAllPlusMembers.sql";
|
||||
import findAllPatronsSql from "./findAllPatrons.sql";
|
||||
|
||||
const upsertStm = sql.prepare(upsertSql);
|
||||
export function upsert(
|
||||
input: Pick<
|
||||
User,
|
||||
| "discordId"
|
||||
| "discordName"
|
||||
| "discordDiscriminator"
|
||||
| "discordAvatar"
|
||||
| "twitch"
|
||||
| "twitter"
|
||||
| "youtubeId"
|
||||
>
|
||||
) {
|
||||
return upsertStm.get(input) as User;
|
||||
}
|
||||
|
||||
const updateProfileStm = sql.prepare(updateProfileSql);
|
||||
export function updateProfile(args: Pick<User, "country" | "id" | "bio">) {
|
||||
updateProfileStm.run(args);
|
||||
}
|
||||
|
||||
const updateByDiscordIdStm = sql.prepare(updateByDiscordIdSql);
|
||||
export const updateMany = sql.transaction(
|
||||
(
|
||||
argsArr: Array<
|
||||
Pick<
|
||||
User,
|
||||
"discordAvatar" | "discordName" | "discordDiscriminator" | "discordId"
|
||||
>
|
||||
>
|
||||
) => {
|
||||
for (const updateArgs of argsArr) {
|
||||
updateByDiscordIdStm.run(updateArgs);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
const deleteAllPatronDataStm = sql.prepare(deleteAllPatronDataSql);
|
||||
const addPatronDataStm = sql.prepare(addPatronDataSql);
|
||||
export type UpdatePatronDataArgs = Array<
|
||||
Pick<User, "discordId" | "patronTier" | "patronSince">
|
||||
>;
|
||||
export const updatePatronData = sql.transaction(
|
||||
(argsArr: UpdatePatronDataArgs) => {
|
||||
deleteAllPatronDataStm.run();
|
||||
|
||||
for (const args of argsArr) {
|
||||
addPatronDataStm.run(args);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
const deleteByIdStm = sql.prepare(deleteByIdSql);
|
||||
const updateDiscordIdStm = sql.prepare(updateDiscordIdSql);
|
||||
export const migrate = sql.transaction(
|
||||
(args: { newUserId: User["id"]; oldUserId: User["id"] }) => {
|
||||
const deletedUser = deleteByIdStm.get({ id: args.newUserId }) as User;
|
||||
|
||||
updateDiscordIdStm.run({
|
||||
id: args.oldUserId,
|
||||
discordId: deletedUser.discordId,
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
const findByIdentifierStm = sql.prepare(findByIdentifierSql);
|
||||
export function findByIdentifier(identifier: string | number) {
|
||||
return findByIdentifierStm.get({ identifier }) as
|
||||
| UserWithPlusTier
|
||||
| undefined;
|
||||
}
|
||||
|
||||
const findAllStm = sql.prepare(findAllSql);
|
||||
|
||||
export function findAll() {
|
||||
return findAllStm.all() as Pick<
|
||||
UserWithPlusTier,
|
||||
"id" | "discordId" | "discordName" | "discordDiscriminator" | "plusTier"
|
||||
>[];
|
||||
}
|
||||
|
||||
const findAllPlusMembersStm = sql.prepare(findAllPlusMembersSql);
|
||||
export function findAllPlusMembers() {
|
||||
return findAllPlusMembersStm.all() as Array<{
|
||||
discordId: User["discordId"];
|
||||
plusTier: NonNullable<UserWithPlusTier["plusTier"]>;
|
||||
}>;
|
||||
}
|
||||
|
||||
const findAllPatronsStm = sql.prepare(findAllPatronsSql);
|
||||
export type FindAllPatrons = Array<
|
||||
Pick<
|
||||
User,
|
||||
"id" | "discordId" | "discordName" | "discordDiscriminator" | "patronTier"
|
||||
>
|
||||
>;
|
||||
export function findAllPatrons() {
|
||||
return findAllPatronsStm.all() as FindAllPatrons;
|
||||
}
|
||||
8
app/db/models/users/updateByDiscordId.sql
Normal file
8
app/db/models/users/updateByDiscordId.sql
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
update
|
||||
"User"
|
||||
set
|
||||
"discordAvatar" = @discordAvatar,
|
||||
"discordName" = @discordName,
|
||||
"discordDiscriminator" = @discordDiscriminator
|
||||
where
|
||||
"discordId" = @discordId
|
||||
6
app/db/models/users/updateDiscordId.sql
Normal file
6
app/db/models/users/updateDiscordId.sql
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
update
|
||||
"User"
|
||||
set
|
||||
"discordId" = @discordId
|
||||
where
|
||||
"id" = @id
|
||||
7
app/db/models/users/updateProfile.sql
Normal file
7
app/db/models/users/updateProfile.sql
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
update
|
||||
"User"
|
||||
set
|
||||
"country" = @country,
|
||||
"bio" = @bio
|
||||
where
|
||||
"id" = @id
|
||||
28
app/db/models/users/upsert.sql
Normal file
28
app/db/models/users/upsert.sql
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
insert into
|
||||
"User" (
|
||||
"discordId",
|
||||
"discordName",
|
||||
"discordDiscriminator",
|
||||
"discordAvatar",
|
||||
"twitch",
|
||||
"twitter",
|
||||
"youtubeId"
|
||||
)
|
||||
values
|
||||
(
|
||||
@discordId,
|
||||
@discordName,
|
||||
@discordDiscriminator,
|
||||
@discordAvatar,
|
||||
@twitch,
|
||||
@twitter,
|
||||
@youtubeId
|
||||
) on conflict("discordId") do
|
||||
update
|
||||
set
|
||||
"discordName" = excluded."discordName",
|
||||
"discordDiscriminator" = excluded."discordDiscriminator",
|
||||
"discordAvatar" = excluded."discordAvatar",
|
||||
"twitch" = excluded."twitch",
|
||||
"twitch" = excluded."twitch",
|
||||
"youtubeId" = excluded."youtubeId" returning *
|
||||
|
|
@ -1,192 +0,0 @@
|
|||
import { sql } from "../../sql";
|
||||
import type { User, UserWithPlusTier } from "../../types";
|
||||
|
||||
const upsertStm = sql.prepare(`
|
||||
INSERT INTO
|
||||
"User" (
|
||||
"discordId",
|
||||
"discordName",
|
||||
"discordDiscriminator",
|
||||
"discordAvatar",
|
||||
"twitch",
|
||||
"twitter",
|
||||
"youtubeId"
|
||||
)
|
||||
VALUES (
|
||||
$discordId,
|
||||
$discordName,
|
||||
$discordDiscriminator,
|
||||
$discordAvatar,
|
||||
$twitch,
|
||||
$twitter,
|
||||
$youtubeId
|
||||
)
|
||||
ON CONFLICT("discordId") DO UPDATE SET
|
||||
"discordName" = excluded."discordName",
|
||||
"discordDiscriminator" = excluded."discordDiscriminator",
|
||||
"discordAvatar" = excluded."discordAvatar",
|
||||
"twitch" = excluded."twitch",
|
||||
"twitch" = excluded."twitch",
|
||||
"youtubeId" = excluded."youtubeId"
|
||||
RETURNING *
|
||||
`);
|
||||
|
||||
export function upsert(
|
||||
input: Pick<
|
||||
User,
|
||||
| "discordId"
|
||||
| "discordName"
|
||||
| "discordDiscriminator"
|
||||
| "discordAvatar"
|
||||
| "twitch"
|
||||
| "twitter"
|
||||
| "youtubeId"
|
||||
>
|
||||
) {
|
||||
return upsertStm.get(input) as User;
|
||||
}
|
||||
|
||||
const updateProfileStm = sql.prepare(`
|
||||
UPDATE "User"
|
||||
SET "country" = $country,
|
||||
"bio" = $bio
|
||||
WHERE "id" = $id
|
||||
`);
|
||||
|
||||
export function updateProfile(args: Pick<User, "country" | "id" | "bio">) {
|
||||
updateProfileStm.run(args);
|
||||
}
|
||||
|
||||
const updateByDiscordIdStm = sql.prepare(`
|
||||
update "User"
|
||||
set "discordAvatar" = $discordAvatar,
|
||||
"discordName" = $discordName,
|
||||
"discordDiscriminator" = $discordDiscriminator
|
||||
where "discordId" = $discordId
|
||||
`);
|
||||
|
||||
export const updateMany = sql.transaction(
|
||||
(
|
||||
argsArr: Array<
|
||||
Pick<
|
||||
User,
|
||||
"discordAvatar" | "discordName" | "discordDiscriminator" | "discordId"
|
||||
>
|
||||
>
|
||||
) => {
|
||||
for (const updateArgs of argsArr) {
|
||||
updateByDiscordIdStm.run(updateArgs);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
const deleteAllPatronDataStm = sql.prepare(`
|
||||
update "User"
|
||||
set "patronTier" = null,
|
||||
"patronSince" = null
|
||||
`);
|
||||
|
||||
const addPatronDataStm = sql.prepare(`
|
||||
update "User"
|
||||
set "patronTier" = $patronTier,
|
||||
"patronSince" = $patronSince
|
||||
where "discordId" = $discordId
|
||||
`);
|
||||
|
||||
export type UpdatePatronDataArgs = Array<
|
||||
Pick<User, "discordId" | "patronTier" | "patronSince">
|
||||
>;
|
||||
export const updatePatronData = sql.transaction(
|
||||
(argsArr: UpdatePatronDataArgs) => {
|
||||
deleteAllPatronDataStm.run();
|
||||
|
||||
for (const args of argsArr) {
|
||||
addPatronDataStm.run(args);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
const deleteStm = sql.prepare(`
|
||||
delete from "User" where id = $id
|
||||
returning *
|
||||
`);
|
||||
|
||||
const updateDiscordId = sql.prepare(`
|
||||
update "User"
|
||||
set "discordId" = $discordId
|
||||
where "id" = $id
|
||||
`);
|
||||
|
||||
export const migrate = sql.transaction(
|
||||
(args: { newUserId: User["id"]; oldUserId: User["id"] }) => {
|
||||
const deletedUser = deleteStm.get({ id: args.newUserId }) as User;
|
||||
|
||||
updateDiscordId.run({
|
||||
id: args.oldUserId,
|
||||
discordId: deletedUser.discordId,
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
const findByIdentifierStm = sql.prepare(`
|
||||
SELECT "User".*, "PlusTier".tier as "plusTier"
|
||||
FROM "User"
|
||||
LEFT JOIN "PlusTier" ON "PlusTier"."userId" = "User"."id"
|
||||
WHERE "discordId" = $identifier
|
||||
OR "id" = $identifier
|
||||
`);
|
||||
|
||||
export function findByIdentifier(identifier: string | number) {
|
||||
return findByIdentifierStm.get({ identifier }) as
|
||||
| UserWithPlusTier
|
||||
| undefined;
|
||||
}
|
||||
|
||||
const findAllStm = sql.prepare(`
|
||||
SELECT "User"."id", "User"."discordId", "User"."discordName", "User"."discordDiscriminator", "PlusTier".tier as "plusTier"
|
||||
FROM "User"
|
||||
LEFT JOIN "PlusTier" ON "PlusTier"."userId" = "User".id
|
||||
`);
|
||||
|
||||
export function findAll() {
|
||||
return findAllStm.all() as Pick<
|
||||
UserWithPlusTier,
|
||||
"id" | "discordId" | "discordName" | "discordDiscriminator" | "plusTier"
|
||||
>[];
|
||||
}
|
||||
|
||||
const findAllPlusMembersStm = sql.prepare(`
|
||||
SELECT "User"."discordId", "PlusTier"."tier" as "plusTier"
|
||||
FROM "User"
|
||||
LEFT JOIN "PlusTier" ON "PlusTier"."userId" = "User".id
|
||||
WHERE "PlusTier"."tier" IS NOT NULL
|
||||
`);
|
||||
|
||||
export function findAllPlusMembers() {
|
||||
return findAllPlusMembersStm.all() as Array<{
|
||||
discordId: User["discordId"];
|
||||
plusTier: NonNullable<UserWithPlusTier["plusTier"]>;
|
||||
}>;
|
||||
}
|
||||
|
||||
const findAllPatronsStm = sql.prepare(`
|
||||
select
|
||||
"id",
|
||||
"discordId",
|
||||
"discordName",
|
||||
"discordDiscriminator",
|
||||
"patronTier"
|
||||
from "User"
|
||||
where "patronTier" is not null
|
||||
order by "patronTier" desc, "patronSince" asc
|
||||
`);
|
||||
|
||||
export type FindAllPatrons = Array<
|
||||
Pick<
|
||||
User,
|
||||
"id" | "discordId" | "discordName" | "discordDiscriminator" | "patronTier"
|
||||
>
|
||||
>;
|
||||
export function findAllPatrons() {
|
||||
return findAllPatronsStm.all() as FindAllPatrons;
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
import type { z } from "zod";
|
||||
import { db } from "~/db";
|
||||
import type { UpdatePatronDataArgs } from "~/db/models/users/users.server";
|
||||
import type { UpdatePatronDataArgs } from "~/db/models/users/queries.server";
|
||||
import { dateToDatabaseTimestamp } from "~/utils/dates";
|
||||
import { fetchWithTimeout } from "~/utils/fetch";
|
||||
import type { Unpacked } from "~/utils/types";
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ import resetStyles from "~/styles/reset.css";
|
|||
import { Catcher } from "./components/Catcher";
|
||||
import { Layout } from "./components/layout";
|
||||
import { db } from "./db";
|
||||
import type { FindAllPatrons } from "./db/models/users/users.server";
|
||||
import type { FindAllPatrons } from "./db/models/users/queries.server";
|
||||
import type { UserWithPlusTier } from "./db/types";
|
||||
import { getUser } from "./modules/auth";
|
||||
import { DEFAULT_LANGUAGE, i18next } from "./modules/i18n";
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user