UNPKG

@directus/api

Version:

Directus is a real-time API and App dashboard for managing SQL database content

44 lines (42 loc) 1.46 kB
import { useLogger } from "../logger/index.js"; import getLocalType from "./get-local-type.js"; import { parseJSON } from "@directus/utils"; import { getNodeEnv } from "@directus/utils/node"; //#region src/utils/get-default-value.ts function getDefaultValue(column, field) { const type = getLocalType(column, field); const defaultValue = column.default_value ?? null; if (defaultValue === null) return null; if (defaultValue === "0000-00-00 00:00:00") return null; switch (type) { case "bigInteger": case "integer": case "decimal": case "float": return Number.isNaN(Number(defaultValue)) === false ? Number(defaultValue) : defaultValue; case "boolean": return castToBoolean(defaultValue); case "json": return castToObject(defaultValue); default: return defaultValue; } } function castToBoolean(value) { if (typeof value === "boolean") return value; if (value === 0 || value === "0") return false; if (value === 1 || value === "1") return true; if (value === "false" || value === false) return false; if (value === "true" || value === true) return true; return Boolean(value); } function castToObject(value) { const logger = useLogger(); if (!value) return value; if (typeof value === "object") return value; if (typeof value === "string") try { return parseJSON(value); } catch (err) { if (getNodeEnv() === "development") logger.error(err); return value; } return {}; } //#endregion export { getDefaultValue as default };