@cran/lib.gql.core
Version:
GQL Core Functionality
32 lines (24 loc) • 673 B
text/typescript
import { createScalar } from "../utilities";
const allowed: Record<string, true> = {
epoch : true,
infinity : true,
"-infinity": true,
now : true,
today : true,
tomorrow : true,
yesterday : true,
};
function asTstz ( value: number | string, invalid: createScalar.Invalid ) {
const date = new Date(value);
if (isNaN(date.valueOf())) { return invalid(); }
return date.toISOString();
}
export const TstzScalar = createScalar(
"tstz", "timestamp with time zone", {
string ( value, invalid ) {
if (allowed[value.toLowerCase()]) { return value; }
return asTstz(value, invalid);
},
number: asTstz,
}
);