45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
/**
|
|
* Copyright 2025 LY Corporation
|
|
*
|
|
* LY Corporation licenses this file to you under the Apache License,
|
|
* version 2.0 (the "License"); you may not use this file except in compliance
|
|
* with the License. You may obtain a copy of the License at:
|
|
*
|
|
* https://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
* License for the specific language governing permissions and limitations
|
|
* under the License.
|
|
*/
|
|
|
|
import { z } from 'zod';
|
|
|
|
import { categorySchema } from '../category/category.schema';
|
|
|
|
export const issueSchema = z.object({
|
|
id: z.number(),
|
|
name: z.string().trim().min(1).max(30),
|
|
description: z.string().trim().max(50).nullable(),
|
|
feedbackCount: z.number(),
|
|
status: z.union([
|
|
z.literal('INIT'),
|
|
z.literal('ON_REVIEW'),
|
|
z.literal('IN_PROGRESS'),
|
|
z.literal('RESOLVED'),
|
|
z.literal('PENDING'),
|
|
]),
|
|
externalIssueId: z.string().trim().optional(),
|
|
createdAt: z.string(),
|
|
updatedAt: z.string().nullable(),
|
|
category: categorySchema.nullable(),
|
|
});
|
|
|
|
export const issueFormSchema = issueSchema.pick({
|
|
name: true,
|
|
description: true,
|
|
status: true,
|
|
externalIssueId: true,
|
|
});
|