diff options
| author | joonhoekim <26rote@gmail.com> | 2025-12-08 12:08:00 +0900 |
|---|---|---|
| committer | joonhoekim <26rote@gmail.com> | 2025-12-08 12:08:00 +0900 |
| commit | 71c0ba1f01b98770ec2c60cdb935ffb36c1830a9 (patch) | |
| tree | 01b5dab4888f865d605c46d41896a2432e53015f /components/client-table-v3/preset-actions.ts | |
| parent | 298e166eebeba3276403f14f9b9b1e3f8f3d735e (diff) | |
(김준회) 테이블 커스텀 훅 버전 생성
Diffstat (limited to 'components/client-table-v3/preset-actions.ts')
| -rw-r--r-- | components/client-table-v3/preset-actions.ts | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/components/client-table-v3/preset-actions.ts b/components/client-table-v3/preset-actions.ts new file mode 100644 index 00000000..3ef4d239 --- /dev/null +++ b/components/client-table-v3/preset-actions.ts @@ -0,0 +1,84 @@ +"use server"; + +import db from "@/db/db"; +import { userCustomData } from "@/db/schema/user-custom-data/userCustomData"; +import { eq, and } from "drizzle-orm"; +import { Preset } from "./preset-types"; + +export async function getPresets(tableKey: string, userId: number): Promise<{ success: boolean; data?: Preset[]; error?: string }> { + try { + const settings = await db + .select() + .from(userCustomData) + .where( + and( + eq(userCustomData.tableKey, tableKey), + eq(userCustomData.userId, userId) + ) + ) + .orderBy(userCustomData.createdDate); + + const data: Preset[] = settings.map(s => ({ + id: s.id, + name: s.customSettingName, + setting: s.customSetting, + createdAt: s.createdDate, + updatedAt: s.updatedDate, + })); + + return { success: true, data }; + } catch (error) { + console.error("Failed to fetch presets:", error); + return { success: false, error: "Failed to fetch presets" }; + } +} + +export async function savePreset( + userId: number, + tableKey: string, + name: string, + setting: any +): Promise<{ success: boolean; error?: string }> { + try { + const existing = await db.query.userCustomData.findFirst({ + where: and( + eq(userCustomData.userId, userId), + eq(userCustomData.tableKey, tableKey), + eq(userCustomData.customSettingName, name) + ) + }); + + if (existing) { + await db.update(userCustomData) + .set({ + customSetting: setting, + updatedDate: new Date() + }) + .where(eq(userCustomData.id, existing.id)); + } else { + await db.insert(userCustomData).values({ + userId, + tableKey, + customSettingName: name, + customSetting: setting, + }); + } + + return { success: true }; + } catch (error) { + console.error("Failed to save preset:", error); + return { success: false, error: "Failed to save preset" }; + } +} + +export async function deletePreset(id: string): Promise<{ success: boolean; error?: string }> { + try { + await db.delete(userCustomData).where(eq(userCustomData.id, id)); + return { success: true }; + } catch (error) { + console.error("Failed to delete preset:", error); + return { success: false, error: "Failed to delete preset" }; + } +} + + |
