basic csv support

+ csv imports
+ import options
+ type detection
+ bool, number, date, text, email and json types supported
This commit is contained in:
michal-kapala
2023-03-06 01:39:18 +01:00
commit ac857af125
12 changed files with 800 additions and 0 deletions

21
types/csv.ts Normal file
View File

@ -0,0 +1,21 @@
import { CommonCSVReaderOptions } from "https://deno.land/x/csv@v0.8.0/reader.ts";
/**
* Options object of `csv.readCSVObjects`.
*/
export type ParserOptions = Partial<CommonCSVReaderOptions>;
/**
* Raw row object with string properties returned by `csv.readCSVObjects`.
*/
export type RawRow = {
[key: string]: string;
};
/**
* Row object with values parsed accordingly to collection schema.
*/
export type ParsedRow = {
// deno-lint-ignore no-explicit-any
[key: string]: any;
};

34
types/pocketbase.ts Normal file
View File

@ -0,0 +1,34 @@
/**
* All the Pocketbase types supported by this tool.
*/
export const POCKETBASE_TYPE = {
BOOL: "bool",
NUMBER: "number",
PLAIN_TEXT: "text",
EMAIL: "email",
JSON: "json",
DATETIME: "date",
} as const;
type ObjectValues<T> = T[keyof T];
/**
* Supported Pocketbase data types.
*/
export type PocketbaseType = ObjectValues<typeof POCKETBASE_TYPE>;
/**
* A row type schema for column value parsing.
*/
export type PocketbaseRowSchema = {
[key: string]: PocketbaseType;
};
/**
* PocketBase system fields with autogenerated values that cannot be overriden (`base` collection type).
*/
export const POCKETBASE_SYSFIELD = [
"id",
"created",
"updated",
];