summaryrefslogtreecommitdiff
path: root/lib/forms-plant/services.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/forms-plant/services.ts')
-rw-r--r--lib/forms-plant/services.ts161
1 files changed, 82 insertions, 79 deletions
diff --git a/lib/forms-plant/services.ts b/lib/forms-plant/services.ts
index 3f50bd47..64d353de 100644
--- a/lib/forms-plant/services.ts
+++ b/lib/forms-plant/services.ts
@@ -21,7 +21,7 @@ import {
VendorDataReportTempsPlant,
} from "@/db/schema/vendorData";
import { eq, and, desc, sql, DrizzleError, inArray, or, type SQL, type InferSelectModel } from "drizzle-orm";
-import { unstable_cache } from "next/cache";
+import { unstable_cache ,unstable_noStore } from "next/cache";
import { revalidateTag } from "next/cache";
import { getErrorMessage } from "../handle-error";
import { DataTableColumnJSON } from "@/components/form-data/form-data-table-columns";
@@ -234,9 +234,10 @@ export async function getEditableFieldsByTag(
* 그리고 이 로직 전체를 unstable_cache로 감싸 캐싱.
*/
export async function getFormData(formCode: string, projectCode: string, packageCode:string) {
+ unstable_noStore();
try {
- console.log(formCode,projectCode, packageCode)
+ // console.log(formCode,projectCode, packageCode)
const project = await db.query.projects.findFirst({
where: eq(projects.code, projectCode),
@@ -329,83 +330,84 @@ export async function getFormData(formCode: string, projectCode: string, package
console.error(`[getFormData] Cache operation failed:`, cacheError);
// Fallback logic (기존과 동일하게 editableFieldsMap 추가)
- try {
- console.log(`[getFormData] Fallback DB query for (${formCode}, ${packageCode})`);
-
- const project = await db.query.projects.findFirst({
- where: eq(projects.code, projectCode),
- columns: {
- id: true
- }
- });
-
- const projectId = project.id;
-
- const metaRows = await db
- .select()
- .from(formMetas)
- .where(
- and(
- eq(formMetas.formCode, formCode),
- eq(formMetas.projectId, projectId)
- )
- )
- .orderBy(desc(formMetas.updatedAt))
- .limit(1);
-
- const meta = metaRows[0] ?? null;
- if (!meta) {
- console.warn(`[getFormData] Fallback: No form meta found for formCode: ${formCode} and projectId: ${projectId}`);
- return { columns: null, data: [], editableFieldsMap: new Map() };
- }
-
- const entryRows = await db
- .select()
- .from(formEntriesPlant)
- .where(
- and(
- eq(formEntriesPlant.formCode, formCode),
- eq(formEntriesPlant.projectCode, projectCode),
- eq(formEntriesPlant.packageCode, packageCode)
- )
- )
- .orderBy(desc(formEntriesPlant.updatedAt))
- .limit(1);
-
- const entry = entryRows[0] ?? null;
-
- let columns = meta.columns as DataTableColumnJSON[];
- const excludeKeys = ['BF_TAG_NO', 'TAG_TYPE_ID', 'PIC_NO'];
- columns = columns.filter(col => !excludeKeys.includes(col.key));
-
- columns.forEach((col) => {
- if (!col.displayLabel) {
- if (col.uom) {
- col.displayLabel = `${col.label} (${col.uom})`;
- } else {
- col.displayLabel = col.label;
- }
- }
- });
-
- let data: Array<Record<string, any>> = [];
- if (entry) {
- if (Array.isArray(entry.data)) {
- data = entry.data;
- } else {
- console.warn("formEntries data was not an array. Using empty array (fallback).");
- }
- }
-
- // Fallback에서도 편집 가능 필드 정보 계산
- const editableFieldsMap = await getEditableFieldsByTag(projectCode, packageCode, projectId);
-
- return { columns, data, projectId, editableFieldsMap };
- } catch (dbError) {
- console.error(`[getFormData] Fallback DB query failed:`, dbError);
- return { columns: null, data: [], editableFieldsMap: new Map() };
- }
- }
+ // try {
+ // console.log(`[getFormData] Fallback DB query for (${formCode}, ${packageCode})`);
+
+ // const project = await db.query.projects.findFirst({
+ // where: eq(projects.code, projectCode),
+ // columns: {
+ // id: true
+ // }
+ // });
+
+ // const projectId = project.id;
+
+ // const metaRows = await db
+ // .select()
+ // .from(formMetas)
+ // .where(
+ // and(
+ // eq(formMetas.formCode, formCode),
+ // eq(formMetas.projectId, projectId)
+ // )
+ // )
+ // .orderBy(desc(formMetas.updatedAt))
+ // .limit(1);
+
+ // const meta = metaRows[0] ?? null;
+ // if (!meta) {
+ // console.warn(`[getFormData] Fallback: No form meta found for formCode: ${formCode} and projectId: ${projectId}`);
+ // return { columns: null, data: [], editableFieldsMap: new Map() };
+ // }
+
+ // const entryRows = await db
+ // .select()
+ // .from(formEntriesPlant)
+ // .where(
+ // and(
+ // eq(formEntriesPlant.formCode, formCode),
+ // eq(formEntriesPlant.projectCode, projectCode),
+ // eq(formEntriesPlant.packageCode, packageCode)
+ // )
+ // )
+ // .orderBy(desc(formEntriesPlant.updatedAt))
+ // .limit(1);
+
+ // const entry = entryRows[0] ?? null;
+
+ // let columns = meta.columns as DataTableColumnJSON[];
+ // const excludeKeys = ['BF_TAG_NO', 'TAG_TYPE_ID', 'PIC_NO'];
+ // columns = columns.filter(col => !excludeKeys.includes(col.key));
+
+ // columns.forEach((col) => {
+ // if (!col.displayLabel) {
+ // if (col.uom) {
+ // col.displayLabel = `${col.label} (${col.uom})`;
+ // } else {
+ // col.displayLabel = col.label;
+ // }
+ // }
+ // });
+
+ // let data: Array<Record<string, any>> = [];
+ // if (entry) {
+ // if (Array.isArray(entry.data)) {
+ // data = entry.data;
+ // } else {
+ // console.warn("formEntries data was not an array. Using empty array (fallback).");
+ // }
+ // }
+
+ // // Fallback에서도 편집 가능 필드 정보 계산
+ // const editableFieldsMap = await getEditableFieldsByTag(projectCode, packageCode, projectId);
+
+ // return { columns, data, projectId, editableFieldsMap };
+ // } catch (dbError) {
+ // console.error(`[getFormData] Fallback DB query failed:`, dbError);
+ // return { columns: null, data: [], editableFieldsMap: new Map() };
+ // }
+ // }
+}
}
/**
* contractId와 formCode(itemCode)를 사용하여 contractItemId를 찾는 서버 액션
@@ -1052,6 +1054,7 @@ type GetReportFileList = (
}>;
export const getFormId: GetReportFileList = async (projectCode, packageCode, formCode, mode) => {
+ unstable_noStore();
const result: { formId: number } = {
formId: 0,
};