import { ok, type ReadonlyDB } from "@tailor-platform/erp-kit/core";
import type { DB } from "../generated/kysely-tailordb";
import { decodeJson } from "../lib/domain";

export interface GetSyncJobInput {
  id: string;
}

export async function run(db: ReadonlyDB<DB>, input: GetSyncJobInput) {
  const syncJob = await db
    .selectFrom("SyncJob")
    .selectAll()
    .where("id", "=", input.id)
    .executeTakeFirst();
  if (!syncJob) {
    return ok({ syncJob: null });
  }
  return ok({
    syncJob: {
      ...syncJob,
      context: decodeJson<Record<string, unknown> | null>(syncJob.context, null),
    },
  });
}
