From 801b54d975db21807892586cda9a41c94028f95e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9B=90=EB=8D=94?= Date: Sun, 31 Jan 2021 12:47:18 +0900 Subject: [PATCH] feat: added Yup Schema --- utils/Yup.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/utils/Yup.ts b/utils/Yup.ts index eea21c4..4b601a4 100644 --- a/utils/Yup.ts +++ b/utils/Yup.ts @@ -1,6 +1,7 @@ import * as Yup from 'yup' import YupKorean from 'yup-locales-ko' import { ListType } from '../types' +import { categories, library } from './Constants' Yup.setLocale(YupKorean) @@ -41,5 +42,19 @@ interface OauthCallback { code: string } +export const AddBotSubmitSchema = Yup.object({ + agree: Yup.boolean().oneOf([true], '상단의 동의 버튼을 클릭해주세요.').required('상단의 동의 버튼을 클릭해주세요.'), + id: Yup.string().matches(/[0-9]{17,}/, '올바른 봇 ID를 입력해주세요.').required('봇 ID는 필수 항목입니다.'), + prefix: Yup.string().min(1, '접두사는 최소 1자여야합니다.').max(32, '접두사는 최대 32자여야합니다.').required('접두사는 필수 항목입니다.'), + library: Yup.string().oneOf(library).required('라이브러리는 필수 항목입니다.'), + website: Yup.string().matches(/((https?):\/\/)?(www.)?[a-z0-9]+(\.[a-z]{2,}){1,3}(#?\/?[a-zA-Z0-9#]+)*\/?(\?[a-zA-Z0-9-_]+=[a-zA-Z0-9-%]+&?)?$/, '올바른 웹사이트 URL을 입력해주세요.'), + url: Yup.string().matches(/((https?):\/\/)?(www.)?[a-z0-9]+(\.[a-z]{2,}){1,3}(#?\/?[a-zA-Z0-9#]+)*\/?(\?[a-zA-Z0-9-_]+=[a-zA-Z0-9-%]+&?)?$/, '올바른 초대링크 URL을 입력해주세요.'), + git: Yup.string().matches(/((https?):\/\/)?(www.)?[a-z0-9]+(\.[a-z]{2,}){1,3}(#?\/?[a-zA-Z0-9#]+)*\/?(\?[a-zA-Z0-9-_]+=[a-zA-Z0-9-%]+&?)?$/, '올바른 깃을 입력해주세요.'), + discord: Yup.string().max(32, '지원 디스코드는 최대 32자여야합니다.'), + category: Yup.array(Yup.string().oneOf(categories)).min(1, '최소 한 개의 카테고리를 선택해주세요.').required(), + intro: Yup.string().min(2, '봇 소개는 최소 2자여야합니다.').max(60, '봇 소개는 최대 60자여야합니다.').required('봇 소개는 필수 항목입니다.'), + desc: Yup.string().min(100, '봇 설명은 최소 100자여야합니다.').max(1500, '봇 설명은 최대 1500자여야합니다.').required('봇 설명은 필수 항목입니다.') +}) + export default Yup \ No newline at end of file