sendou.ink/app/features/img-upload/queries/addNewImage.ts
2023-01-10 00:06:24 +02:00

54 lines
1.2 KiB
TypeScript

import { sql } from "~/db/sql";
import type { UserSubmittedImage } from "~/db/types";
import type { ImageUploadType } from "../upload-types";
const addImgStm = sql.prepare(/* sql */ `
insert into "UnvalidatedUserSubmittedImage"
("submitterUserId", "url", "validatedAt")
values
(@submitterUserId, @url, @validatedAt)
returning *
`);
const updateTeamAvatarStm = sql.prepare(/* sql */ `
update "AllTeam"
set "avatarImgId" = @avatarImgId
where "id" = @teamId
`);
const updateTeamBannerStm = sql.prepare(/* sql */ `
update "AllTeam"
set "bannerImgId" = @bannerImgId
where "id" = @teamId
`);
export const addNewImage = sql.transaction(
({
submitterUserId,
url,
validatedAt,
teamId,
type,
}: {
submitterUserId: number;
url: string;
validatedAt: number | null;
teamId: number;
type: ImageUploadType;
}) => {
const img = addImgStm.get({
submitterUserId,
url,
validatedAt,
}) as UserSubmittedImage;
if (type === "team-pfp") {
updateTeamAvatarStm.run({ avatarImgId: img.id, teamId });
} else if (type === "team-banner") {
updateTeamBannerStm.run({ bannerImgId: img.id, teamId });
}
return img;
}
);