@jackchuka/gql-ingest
Version:
A CLI tool for ingesting data from CSV files into a GraphQL API
29 lines (23 loc) • 735 B
text/typescript
import fs from "fs/promises";
import { DataReader, DataRow } from "./data-reader";
export class JsonlReader extends DataReader {
getSupportedExtensions(): string[] {
return ["jsonl", "ndjson"];
}
async readFile(filePath: string): Promise<DataRow[]> {
const content = await fs.readFile(filePath, "utf8");
const lines = content.split("\n").filter((line) => line.trim());
const results: DataRow[] = [];
for (let i = 0; i < lines.length; i++) {
try {
const data = JSON.parse(lines[i]);
results.push(data);
} catch (error) {
throw new Error(
`Invalid JSON at line ${i + 1} in file: ${filePath}. Error: ${error}`
);
}
}
return results;
}
}