From 3847da731c707ac33555130d8bc07c2293921f36 Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Tue, 4 Feb 2025 01:55:23 +0900 Subject: [PATCH 1/6] =?UTF-8?q?[feat]=20create=5Fprize=5Fwith=5Fimage?= =?UTF-8?q?=E9=96=A2=E6=95=B0=E3=81=AE=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../default/functions/functions.yaml | 1 + .../public_create_prize_with_image.yaml | 3 + .../default/1720521696814_auto/up.sql | 74 +++++++++++++++---- 3 files changed, 64 insertions(+), 14 deletions(-) create mode 100644 api/metadata/databases/default/functions/public_create_prize_with_image.yaml diff --git a/api/metadata/databases/default/functions/functions.yaml b/api/metadata/databases/default/functions/functions.yaml index 83d180e9..eae7b772 100644 --- a/api/metadata/databases/default/functions/functions.yaml +++ b/api/metadata/databases/default/functions/functions.yaml @@ -1,2 +1,3 @@ +- "!include public_create_prize_with_image.yaml" - "!include public_decrement_latest_reach_log.yaml" - "!include public_increment_latest_reach_log.yaml" diff --git a/api/metadata/databases/default/functions/public_create_prize_with_image.yaml b/api/metadata/databases/default/functions/public_create_prize_with_image.yaml new file mode 100644 index 00000000..bbf22be1 --- /dev/null +++ b/api/metadata/databases/default/functions/public_create_prize_with_image.yaml @@ -0,0 +1,3 @@ +function: + name: create_prize_with_image + schema: public diff --git a/api/migrations/default/1720521696814_auto/up.sql b/api/migrations/default/1720521696814_auto/up.sql index 7106e117..447d2be9 100644 --- a/api/migrations/default/1720521696814_auto/up.sql +++ b/api/migrations/default/1720521696814_auto/up.sql @@ -1,4 +1,40 @@ SET check_function_bodies = false; +CREATE TABLE public.prizes ( + id integer NOT NULL, + is_won boolean DEFAULT false NOT NULL, + image_id integer DEFAULT '-1'::integer NOT NULL, + name_jp text DEFAULT '""'::text NOT NULL, + name_en text, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL +); +COMMENT ON TABLE public.prizes IS 'ビンゴの景品データを格納'; +COMMENT ON COLUMN public.prizes.is_won IS '当選した景品はTrueになる'; +COMMENT ON COLUMN public.prizes.image_id IS 'imagesのidが入る'; +COMMENT ON COLUMN public.prizes.name_jp IS '景品の日本語名'; +COMMENT ON COLUMN public.prizes.name_en IS '景品の英語名'; +CREATE FUNCTION public.create_prize_with_image(p_is_won boolean, p_name_jp text, p_name_en text, p_bucket_name text, p_file_name text, p_file_type text) RETURNS SETOF public.prizes + LANGUAGE plpgsql + AS $$ +DECLARE + new_image_id int; + new_prize_id int; +BEGIN + -- images テーブルにレコードを挿入し、挿入したレコードのIDを取得 + INSERT INTO public.images(bucket_name, file_name, file_type, created_at, updated_at) + VALUES(p_bucket_name, p_file_name, p_file_type, now(), now()) + RETURNING id INTO new_image_id; + -- prizes テーブルにレコードを挿入し、挿入したレコードのIDを取得 + INSERT INTO public.prizes(is_won, image_id, name_jp, name_en, created_at, updated_at) + VALUES(p_is_won, new_image_id, p_name_jp, p_name_en, now(), now()) + RETURNING id INTO new_prize_id; + -- public.prizes テーブルから、挿入したレコードを返す + RETURN QUERY + SELECT * + FROM public.prizes + WHERE id = new_prize_id; +END; +$$; CREATE TABLE public.reach_logs ( id integer NOT NULL, status boolean DEFAULT false NOT NULL, @@ -58,6 +94,28 @@ BEGIN WHERE id = (SELECT id FROM reach_logs ORDER BY created_at DESC LIMIT 1); END; $$; +CREATE FUNCTION public.insert_prize_with_image(p_is_won boolean, p_name_jp text, p_name_en text, p_bucket_name text, p_file_name text, p_file_type text) RETURNS SETOF public.prizes + LANGUAGE plpgsql STABLE + AS $$ +DECLARE + new_image_id int; + new_prize_id int; +BEGIN + -- images テーブルにレコードを挿入し、挿入したレコードのIDを取得 + INSERT INTO public.images(bucket_name, file_name, file_type, created_at, updated_at) + VALUES(p_bucket_name, p_file_name, p_file_type, now(), now()) + RETURNING id INTO new_image_id; + -- prizes テーブルにレコードを挿入し、挿入したレコードのIDを取得 + INSERT INTO public.prizes(is_won, image_id, name_jp, name_en, created_at, updated_at) + VALUES(p_is_won, new_image_id, p_name_jp, p_name_en, now(), now()) + RETURNING id INTO new_prize_id; + -- public.prizes テーブルから、挿入したレコードを返す + RETURN QUERY + SELECT * + FROM public.prizes + WHERE id = new_prize_id; +END; +$$; CREATE FUNCTION public.set_current_timestamp_updated_at() RETURNS trigger LANGUAGE plpgsql AS $$ @@ -102,20 +160,6 @@ CREATE SEQUENCE public.numbers_id_seq NO MAXVALUE CACHE 1; ALTER SEQUENCE public.numbers_id_seq OWNED BY public.numbers.id; -CREATE TABLE public.prizes ( - id integer NOT NULL, - is_won boolean DEFAULT false NOT NULL, - image_id integer DEFAULT '-1'::integer NOT NULL, - name_jp text DEFAULT '""'::text NOT NULL, - name_en text, - created_at timestamp with time zone DEFAULT now() NOT NULL, - updated_at timestamp with time zone DEFAULT now() NOT NULL -); -COMMENT ON TABLE public.prizes IS 'ビンゴの景品データを格納'; -COMMENT ON COLUMN public.prizes.is_won IS '当選した景品はTrueになる'; -COMMENT ON COLUMN public.prizes.image_id IS 'imagesのidが入る'; -COMMENT ON COLUMN public.prizes.name_jp IS '景品の日本語名'; -COMMENT ON COLUMN public.prizes.name_en IS '景品の英語名'; CREATE SEQUENCE public.prizes_id_seq AS integer START WITH 1 @@ -153,6 +197,8 @@ ALTER TABLE ONLY public.reach_logs ALTER COLUMN id SET DEFAULT nextval('public.r ALTER TABLE ONLY public.stamp_triggers ALTER COLUMN id SET DEFAULT nextval('public.stamp_triggers_id_seq'::regclass); ALTER TABLE ONLY public.images ADD CONSTRAINT images_pkey PRIMARY KEY (id); +ALTER TABLE ONLY public.numbers + ADD CONSTRAINT numbers_number_key UNIQUE (number); ALTER TABLE ONLY public.numbers ADD CONSTRAINT numbers_pkey PRIMARY KEY (id); ALTER TABLE ONLY public.prizes From fdbb409d0b6fd95d1a31558ebae82e416f7b4889 Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Tue, 4 Feb 2025 01:56:00 +0900 Subject: [PATCH 2/6] =?UTF-8?q?[fix]=20setBingoPrize=E3=82=92=E3=82=AA?= =?UTF-8?q?=E3=83=97=E3=82=B7=E3=83=A7=E3=83=8A=E3=83=AB=E3=81=AB=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/common/PrizeResult/PrizeResult.tsx | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/view-admin/src/components/common/PrizeResult/PrizeResult.tsx b/view-admin/src/components/common/PrizeResult/PrizeResult.tsx index 2ded830d..6c62c4c7 100644 --- a/view-admin/src/components/common/PrizeResult/PrizeResult.tsx +++ b/view-admin/src/components/common/PrizeResult/PrizeResult.tsx @@ -11,7 +11,7 @@ import type { interface PrizeResultProps { prizeResult: GetListPrizesQuery["prizes"]; - setBingoPrize: React.Dispatch< + setBingoPrize?: React.Dispatch< React.SetStateAction >; showOverlay: boolean; @@ -41,11 +41,13 @@ export const PrizeResult = (props: PrizeResultProps) => { const handleToggleChange = (id: number, isWon: boolean) => { updatePrize({ variables: { id: id, isWon: isWon } }); - props.setBingoPrize((prev) => - prev.map((prize) => - prize.id === id ? { ...prize, isWon: isWon } : prize, - ), - ); + if (props.setBingoPrize) { + props.setBingoPrize((prev) => + prev.map((prize) => + prize.id === id ? { ...prize, isWon: isWon } : prize, + ), + ); + } }; return ( From b30adf307687bb368a773287b07dfd6cfe03d0f7 Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Tue, 4 Feb 2025 01:56:40 +0900 Subject: [PATCH 3/6] =?UTF-8?q?[feat]=20CreatePrizeWithImage=E3=82=AF?= =?UTF-8?q?=E3=82=A8=E3=83=AA=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-admin/src/gql/prize_with_image.gql | 27 +++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 view-admin/src/gql/prize_with_image.gql diff --git a/view-admin/src/gql/prize_with_image.gql b/view-admin/src/gql/prize_with_image.gql new file mode 100644 index 00000000..282131b6 --- /dev/null +++ b/view-admin/src/gql/prize_with_image.gql @@ -0,0 +1,27 @@ +mutation CreatePrizeWithImage( + $isWon: Boolean! + $nameJp: String! + $nameEn: String! + $bucketName: String! + $fileName: String! + $fileType: String! +) { + createPrizeWithImage( + args: { + p_is_won: $isWon + p_name_jp: $nameJp + p_name_en: $nameEn + p_bucket_name: $bucketName + p_file_name: $fileName + p_file_type: $fileType + } + ) { + id + isWon + imageId + nameJp + nameEn + createdAt + updatedAt + } +} From a5f753d427d8380ebe23912fcfaf6766deea50aa Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Tue, 4 Feb 2025 01:57:14 +0900 Subject: [PATCH 4/6] =?UTF-8?q?[fix]=20200=E6=99=82=E3=81=AEreturn?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-admin/src/pages/api/minio.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/view-admin/src/pages/api/minio.ts b/view-admin/src/pages/api/minio.ts index 2097a8e7..36844831 100644 --- a/view-admin/src/pages/api/minio.ts +++ b/view-admin/src/pages/api/minio.ts @@ -68,7 +68,12 @@ export default async function handler( undefined, metaData, ); - return res.status(200).json({ message: "Upload successful" }); + return res.status(200).json({ + message: "Upload successful", + bucketName, + fileName, + fileType: mimetype, + }); } catch (uploadError) { return res.status(500).json({ message: uploadError }); } From 5b428f9daaf117d842b3ca57501fc4ed1fb47a4e Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Tue, 4 Feb 2025 01:57:46 +0900 Subject: [PATCH 5/6] =?UTF-8?q?[fix]=20=E3=83=88=E3=83=A9=E3=83=B3?= =?UTF-8?q?=E3=82=B6=E3=82=AF=E3=82=B7=E3=83=A7=E3=83=B3=E3=81=AE=E4=BD=BF?= =?UTF-8?q?=E7=94=A8&=E3=83=AA=E3=83=95=E3=82=A1=E3=82=AF=E3=82=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view-admin/src/pages/postPrizes/index.tsx | 149 +++++++++------------- 1 file changed, 58 insertions(+), 91 deletions(-) diff --git a/view-admin/src/pages/postPrizes/index.tsx b/view-admin/src/pages/postPrizes/index.tsx index 70b379b5..34e07c3d 100644 --- a/view-admin/src/pages/postPrizes/index.tsx +++ b/view-admin/src/pages/postPrizes/index.tsx @@ -2,57 +2,37 @@ import { useQuery, useMutation } from "@apollo/client"; /* eslint-disable @next/next/no-img-element */ import type { NextPage } from "next"; import styles from "./postPrizes.module.css"; -import { useState, useCallback, useRef, useEffect } from "react"; +import { useState, useCallback, useRef } from "react"; import { Header, PrizeResult, Loading } from "@/components/common"; import { IoCloudUploadOutline } from "react-icons/io5"; import { GetListPrizesDocument, - CreateOnePrizeDocument, - CreateOneImageDocument, -} from "@/type/graphql"; -import type { GetListPrizesQuery, - CreateOneImageMutation, - CreateOnePrizeMutation, - CreateOneImageMutationVariables, - CreateOnePrizeMutationVariables, + CreatePrizeWithImageMutation, + CreatePrizeWithImageDocument, } from "@/type/graphql"; import { useRouter } from "next/router"; +type PrizeName = { + nameJp: string; + nameEn: string; +}; + const Page: NextPage = () => { - const [bingoPrize, setBingoPrize] = useState( - [], - ); - const [prizeNameJp, setPrizeNameJp] = useState(""); - const [prizeNameEn, setPrizeNameEn] = useState(""); + const [prizeName, setPrizeName] = useState({ + nameJp: "", + nameEn: "", + }); const fileInputRef = useRef(null); const [imageFile, setImageFile] = useState(); const [preview, setPreview] = useState({ uploadImageURL: "", type: "" }); - const [bucketName, setBucketName] = useState(""); - const [fileName, setFileName] = useState(""); - const [fileType, setFileType] = useState(""); const [isDisabled, setIsDisabled] = useState(false); - const [isLoading, setIsLoading] = useState(false); const { data } = useQuery(GetListPrizesDocument); - const [postPrize] = useMutation< - CreateOnePrizeMutation, - CreateOnePrizeMutationVariables - >(CreateOnePrizeDocument); - const [postImage] = useMutation< - CreateOneImageMutation, - CreateOneImageMutationVariables - >(CreateOneImageDocument); - + const bingoPrizes: GetListPrizesQuery["prizes"] = data?.prizes ?? []; const router = useRouter(); - useEffect(() => { - if (data) { - setBingoPrize(data.prizes); - } - }, [data]); - const handleFileChange = useCallback( (e: React.ChangeEvent) => { const targetFile = e.target.files![0]!; @@ -65,77 +45,62 @@ const Page: NextPage = () => { uploadImageURL: URL.createObjectURL(targetFile), type: targetFile.type, }); - - const bucketName = process.env.NEXT_PUBLIC_BUCKET_NAME; - const fileName = targetFile.name; - const fileType = targetFile.type; - - setBucketName(bucketName || ""); - setFileName(fileName); - setFileType(fileType); }, [], ); - - const insertPrize = async (imageId: number) => { - postPrize({ - variables: { - isWon: false, - imageId: imageId, - nameJp: prizeNameJp, - nameEn: prizeNameEn, - }, - }); - setPrizeNameJp(""); - setPrizeNameEn(""); - setPreview({ uploadImageURL: "", type: "" }); - if (fileInputRef.current) { - fileInputRef.current.value = ""; - } - setIsDisabled(false); - setIsLoading(false); - }; - - const insertImage = async () => { - const result = await postImage({ - variables: { - bucketName: bucketName, - fileName: fileName, - fileType: fileType, - }, - }); - // ここでimageIdをuseStateに設定する - const imageId = result.data?.insertImagesOne?.id; - if (imageId) { - insertPrize(imageId); - } - }; + const [createPrizeWithImage, loading] = + useMutation(CreatePrizeWithImageDocument); const postMinio = async () => { if (!imageFile) { return alert("画像を選択してください"); } - if (prizeNameJp === "") { + if (prizeName.nameJp === "") { alert("景品名を入力してください。"); - setIsLoading(false); router.reload(); return; } const formData = new FormData(); formData.append("file", imageFile); - const fileName = imageFile?.name || ""; - formData.append("fileName", fileName); - - const response = await fetch("/api/minio", { - method: "POST", - body: formData, - }); - insertImage(); + const fileNameFromImage = imageFile.name || ""; + formData.append("fileName", fileNameFromImage); + + try { + const response = await fetch("/api/minio", { + method: "POST", + body: formData, + }); + if (!response.ok) { + throw new Error("MinIOへのアップロードに失敗しました"); + } + const minioData = await response.json(); + + await createPrizeWithImage({ + variables: { + isWon: false, + nameJp: prizeName.nameJp, + nameEn: prizeName.nameEn, + bucketName: minioData.bucketName, + fileName: minioData.fileName, + fileType: minioData.fileType, + }, + }); + + // 登録成功時の処理 + setPrizeName({ nameJp: "", nameEn: "" }); + setPreview({ uploadImageURL: "", type: "" }); + if (fileInputRef.current) { + fileInputRef.current.value = ""; + } + } catch (error) { + console.error("画像送信エラー:", error); + alert("画像アップロードに失敗しました"); + } + setIsDisabled(false); }; const submit = async () => { setIsDisabled(true); - setIsLoading(true); postMinio(); }; @@ -177,7 +142,7 @@ const Page: NextPage = () => { return (
- {isLoading && } + {loading && }
From cb2a7e012f8e505aa5c1643400cbfe084062ad4e Mon Sep 17 00:00:00 2001 From: hikahana <22.h.hanada.nutfes@gmail.com> Date: Tue, 4 Feb 2025 01:58:20 +0900 Subject: [PATCH 6/6] [generated] codegen generated --- view-admin/src/type/graphql.ts | 97 +++++++++++++++++++++++++++++++--- view-user/src/types/graphql.ts | 23 ++++++++ 2 files changed, 114 insertions(+), 6 deletions(-) diff --git a/view-admin/src/type/graphql.ts b/view-admin/src/type/graphql.ts index 26ab7f7d..4718b10b 100644 --- a/view-admin/src/type/graphql.ts +++ b/view-admin/src/type/graphql.ts @@ -375,6 +375,8 @@ export type NumbersBoolExp = { /** unique or primary key constraints on table "numbers" */ export enum NumbersConstraint { + /** unique or primary key constraint on columns "number" */ + numbersNumberKey = "numbers_number_key", /** unique or primary key constraint on columns "id" */ numbersPkey = "numbers_pkey", } @@ -1327,9 +1329,20 @@ export type TimestamptzComparisonExp = { _nin?: InputMaybe>; }; +export type CreatePrizeWithImageArgs = { + p_bucket_name?: InputMaybe; + p_file_name?: InputMaybe; + p_file_type?: InputMaybe; + p_is_won?: InputMaybe; + p_name_en?: InputMaybe; + p_name_jp?: InputMaybe; +}; + /** mutation root */ export type MutationRoot = { __typename?: "mutation_root"; + /** execute VOLATILE function "create_prize_with_image" which returns "prizes" */ + createPrizeWithImage: Array; /** execute VOLATILE function "decrement_latest_reach_log" which returns "reach_logs" */ decrementLatestReachLog: Array; /** delete data from the table: "images" */ @@ -1402,6 +1415,16 @@ export type MutationRoot = { updateStampTriggersMany?: Maybe>>; }; +/** mutation root */ +export type MutationRootCreatePrizeWithImageArgs = { + args: CreatePrizeWithImageArgs; + distinctOn?: InputMaybe>; + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + /** mutation root */ export type MutationRootDecrementLatestReachLogArgs = { distinctOn?: InputMaybe>; @@ -2023,6 +2046,29 @@ export type SubscribeListNumbersSubscription = { }>; }; +export type CreatePrizeWithImageMutationVariables = Exact<{ + isWon: Scalars["Boolean"]["input"]; + nameJp: Scalars["String"]["input"]; + nameEn: Scalars["String"]["input"]; + bucketName: Scalars["String"]["input"]; + fileName: Scalars["String"]["input"]; + fileType: Scalars["String"]["input"]; +}>; + +export type CreatePrizeWithImageMutation = { + __typename?: "mutation_root"; + createPrizeWithImage: Array<{ + __typename?: "Prizes"; + id: number; + isWon: boolean; + imageId: number; + nameJp: string; + nameEn?: string | null; + createdAt: any; + updatedAt: any; + }>; +}; + export type GetListPrizesQueryVariables = Exact<{ [key: string]: never }>; export type GetListPrizesQuery = { @@ -2116,11 +2162,11 @@ export type GetOneLatestReachLogQuery = { reachLogs: Array<{ __typename?: "ReachLogs"; reachNum: number }>; }; -export type SubscribeOneLatestReachlogSubscriptionVariables = Exact<{ +export type SubscribeOneLatestReachLogSubscriptionVariables = Exact<{ [key: string]: never; }>; -export type SubscribeOneLatestReachlogSubscription = { +export type SubscribeOneLatestReachLogSubscription = { __typename?: "subscription_root"; reachLogs: Array<{ __typename?: "ReachLogs"; reachNum: number }>; }; @@ -2334,6 +2380,45 @@ export const SubscribeListNumbersDocument = gql` `; export type SubscribeListNumbersSubscriptionResult = Apollo.SubscriptionResult; +export const CreatePrizeWithImageDocument = gql` + mutation CreatePrizeWithImage( + $isWon: Boolean! + $nameJp: String! + $nameEn: String! + $bucketName: String! + $fileName: String! + $fileType: String! + ) { + createPrizeWithImage( + args: { + p_is_won: $isWon + p_name_jp: $nameJp + p_name_en: $nameEn + p_bucket_name: $bucketName + p_file_name: $fileName + p_file_type: $fileType + } + ) { + id + isWon + imageId + nameJp + nameEn + createdAt + updatedAt + } + } +`; +export type CreatePrizeWithImageMutationFn = Apollo.MutationFunction< + CreatePrizeWithImageMutation, + CreatePrizeWithImageMutationVariables +>; +export type CreatePrizeWithImageMutationResult = + Apollo.MutationResult; +export type CreatePrizeWithImageMutationOptions = Apollo.BaseMutationOptions< + CreatePrizeWithImageMutation, + CreatePrizeWithImageMutationVariables +>; export const GetListPrizesDocument = gql` query GetListPrizes { prizes { @@ -2451,15 +2536,15 @@ export type GetOneLatestReachLogQueryResult = Apollo.QueryResult< GetOneLatestReachLogQuery, GetOneLatestReachLogQueryVariables >; -export const SubscribeOneLatestReachlogDocument = gql` - subscription SubscribeOneLatestReachlog { +export const SubscribeOneLatestReachLogDocument = gql` + subscription SubscribeOneLatestReachLog { reachLogs(orderBy: { createdAt: DESC }, limit: 1) { reachNum } } `; -export type SubscribeOneLatestReachlogSubscriptionResult = - Apollo.SubscriptionResult; +export type SubscribeOneLatestReachLogSubscriptionResult = + Apollo.SubscriptionResult; export const GetListReachLogsAfterTimestampDocument = gql` query GetListReachLogsAfterTimestamp($timestamp: timestamptz!) { reachLogs( diff --git a/view-user/src/types/graphql.ts b/view-user/src/types/graphql.ts index 5dacf6e1..7a95a52f 100644 --- a/view-user/src/types/graphql.ts +++ b/view-user/src/types/graphql.ts @@ -375,6 +375,8 @@ export type NumbersBoolExp = { /** unique or primary key constraints on table "numbers" */ export enum NumbersConstraint { + /** unique or primary key constraint on columns "number" */ + numbersNumberKey = "numbers_number_key", /** unique or primary key constraint on columns "id" */ numbersPkey = "numbers_pkey", } @@ -1327,9 +1329,20 @@ export type TimestamptzComparisonExp = { _nin?: InputMaybe>; }; +export type CreatePrizeWithImageArgs = { + p_bucket_name?: InputMaybe; + p_file_name?: InputMaybe; + p_file_type?: InputMaybe; + p_is_won?: InputMaybe; + p_name_en?: InputMaybe; + p_name_jp?: InputMaybe; +}; + /** mutation root */ export type MutationRoot = { __typename?: "mutation_root"; + /** execute VOLATILE function "create_prize_with_image" which returns "prizes" */ + createPrizeWithImage: Array; /** execute VOLATILE function "decrement_latest_reach_log" which returns "reach_logs" */ decrementLatestReachLog: Array; /** delete data from the table: "images" */ @@ -1402,6 +1415,16 @@ export type MutationRoot = { updateStampTriggersMany?: Maybe>>; }; +/** mutation root */ +export type MutationRootCreatePrizeWithImageArgs = { + args: CreatePrizeWithImageArgs; + distinctOn?: InputMaybe>; + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + where?: InputMaybe; +}; + /** mutation root */ export type MutationRootDecrementLatestReachLogArgs = { distinctOn?: InputMaybe>;