import { FlowExecCtx } from "@/core/flow.execution.context"; import { ERROR_CODES, type Err } from "@pkg/result"; import { getError } from "@pkg/logger"; export const linkErrors = { dbError: (fctx: FlowExecCtx, detail: string): Err => getError({ flowId: fctx.flowId, code: ERROR_CODES.DATABASE_ERROR, message: "Database operation failed", description: "Please try again later", detail, }), linkNotFound: (fctx: FlowExecCtx, identifier: string | number): Err => getError({ flowId: fctx.flowId, code: ERROR_CODES.NOT_FOUND, message: "Link not found", description: "The requested link does not exist", detail: `No link found for: ${identifier}`, }), listFailed: (fctx: FlowExecCtx, detail: string): Err => getError({ flowId: fctx.flowId, code: ERROR_CODES.DATABASE_ERROR, message: "Failed to list links", description: "Try again later", detail, }), createFailed: (fctx: FlowExecCtx, detail: string): Err => getError({ flowId: fctx.flowId, code: ERROR_CODES.DATABASE_ERROR, message: "Failed to create link", description: "Try again later", detail, }), updateFailed: (fctx: FlowExecCtx, detail: string): Err => getError({ flowId: fctx.flowId, code: ERROR_CODES.DATABASE_ERROR, message: "Failed to update link", description: "Try again later", detail, }), deleteFailed: (fctx: FlowExecCtx, detail: string): Err => getError({ flowId: fctx.flowId, code: ERROR_CODES.DATABASE_ERROR, message: "Failed to delete link", description: "Try again later", detail, }), linkNotActive: (fctx: FlowExecCtx, token: string): Err => getError({ flowId: fctx.flowId, code: ERROR_CODES.NOT_ALLOWED, message: "Link is not active", description: "This link has been revoked, expired, or deactivated", detail: `Link with token ${token} is not in an active state`, actionable: true, }), linkExpired: (fctx: FlowExecCtx, token: string): Err => getError({ flowId: fctx.flowId, code: ERROR_CODES.NOT_ALLOWED, message: "Link has expired", description: "This link is no longer valid", detail: `Link with token ${token} has passed its expiry date`, actionable: true, }), };