690327:1235 Fixing Refactor ADR-019 Naming convention uuid #15
CI / CD Pipeline / build (push) Successful in 5m27s
CI / CD Pipeline / deploy (push) Successful in 11m21s

This commit is contained in:
2026-03-27 12:35:08 +07:00
parent 2eab2e73d6
commit bb33e542c7
7 changed files with 45 additions and 7 deletions
@@ -93,6 +93,16 @@ export class MasterController {
return this.masterService.deleteDiscipline(id); return this.masterService.deleteDiscipline(id);
} }
@Patch('disciplines/:id')
@RequirePermission('master_data.manage')
@ApiOperation({ summary: 'Update a discipline' })
updateDiscipline(
@Param('id', ParseIntPipe) id: number,
@Body() dto: Partial<CreateDisciplineDto> & { contractId?: number | string }
) {
return this.masterService.updateDiscipline(id, dto);
}
// --- Sub Types --- // --- Sub Types ---
@Get('sub-types') @Get('sub-types')
@ApiOperation({ summary: 'Get all sub-types' }) @ApiOperation({ summary: 'Get all sub-types' })
@@ -206,6 +206,25 @@ export class MasterService {
return { deleted: true }; return { deleted: true };
} }
async updateDiscipline(
id: number,
dto: Partial<CreateDisciplineDto> & { contractId?: number | string }
) {
const discipline = await this.disciplineRepo.findOne({ where: { id } });
if (!discipline)
throw new NotFoundException(`Discipline ID ${id} not found`);
// Resolve contractId if provided
if (dto.contractId) {
dto.contractId = await this.uuidResolver.resolveContractId(
dto.contractId
);
}
Object.assign(discipline, dto);
return this.disciplineRepo.save(discipline);
}
// ================================================================= // =================================================================
// 📑 Sub-Types Logic // 📑 Sub-Types Logic
// ================================================================= // =================================================================
@@ -32,7 +32,7 @@ export default function EditTemplatePage() {
const { data: disciplines = [] } = useDisciplines(contractId); const { data: disciplines = [] } = useDisciplines(contractId);
const selectedProjectName = const selectedProjectName =
projects.find((p: { id?: number; publicId?: string; projectCode: string; projectName: string }) => (projects as Array<{ id?: number; publicId?: string; projectCode: string; projectName: string }>).find((p) =>
String(p.publicId ?? p.id) === String(projectId)) String(p.publicId ?? p.id) === String(projectId))
?.projectName || 'LCBP3'; ?.projectName || 'LCBP3';
@@ -22,7 +22,7 @@ export default function NewTemplatePage() {
const { data: disciplines = [] } = useDisciplines(contractId); const { data: disciplines = [] } = useDisciplines(contractId);
const selectedProjectName = const selectedProjectName =
projects.find((p: { id?: number; publicId?: string; projectName: string }) => (projects as Array<{ id?: number; publicId?: string; projectName: string }>).find((p) =>
String(p.publicId ?? p.id) === String(projectId))?.projectName || 'LCBP3'; String(p.publicId ?? p.id) === String(projectId))?.projectName || 'LCBP3';
const handleSave = async (data: Partial<NumberingTemplate>) => { const handleSave = async (data: Partial<NumberingTemplate>) => {
@@ -33,12 +33,12 @@ import {
import { Skeleton } from '@/components/ui/skeleton'; import { Skeleton } from '@/components/ui/skeleton';
interface Project { interface Project {
publicId: string; // ADR-019: uuid exposed as 'publicId' publicId: string;
projectCode: string; projectCode: string;
projectName: string; projectName: string;
isActive: boolean; isActive: boolean;
createdAt: string; createdAt?: string;
updatedAt: string; updatedAt?: string;
} }
const projectSchema = z.object({ const projectSchema = z.object({
+1 -1
View File
@@ -40,7 +40,7 @@ export default function DrawingsPage() {
)} )}
</SelectTrigger> </SelectTrigger>
<SelectContent> <SelectContent>
{projects.map((project: { id?: number; publicId?: string; projectName: string; projectCode: string }) => ( {(projects as Array<{ id?: number; publicId?: string; projectName: string; projectCode: string }>).map((project) => (
<SelectItem key={project.publicId || project.id} value={String(project.publicId || project.id)}> <SelectItem key={project.publicId || project.id} value={String(project.publicId || project.id)}>
{project.projectCode} - {project.projectName} {project.projectCode} - {project.projectName}
</SelectItem> </SelectItem>
+10 -1
View File
@@ -4,6 +4,15 @@ import { CreateProjectDto, UpdateProjectDto, SearchProjectDto } from '@/types/dt
import { toast } from 'sonner'; import { toast } from 'sonner';
import { getApiErrorMessage } from '@/types/api-error'; import { getApiErrorMessage } from '@/types/api-error';
export interface Project {
publicId: string;
projectCode: string;
projectName: string;
isActive: boolean;
createdAt?: string;
updatedAt?: string;
}
export const projectKeys = { export const projectKeys = {
all: ['projects'] as const, all: ['projects'] as const,
list: (params: SearchProjectDto) => [...projectKeys.all, 'list', params] as const, list: (params: SearchProjectDto) => [...projectKeys.all, 'list', params] as const,
@@ -11,7 +20,7 @@ export const projectKeys = {
}; };
export function useProjects(params?: SearchProjectDto) { export function useProjects(params?: SearchProjectDto) {
return useQuery({ return useQuery<Project[]>({
queryKey: projectKeys.list(params || {}), queryKey: projectKeys.list(params || {}),
queryFn: () => projectService.getAll(params), queryFn: () => projectService.getAll(params),
}); });