import { SqlUiFactory, UITypes, isVirtualCol, ColumnType } from "nocodb-sdk"; import useProject from "~/composables/useProject"; export default (column: ColumnType) => { const { project } = useProject(); const uiDatatype: UITypes = (column && column.uidt) as UITypes; const abstractType = isVirtualCol(column) ? null : SqlUiFactory.create(project.value?.bases?.[0]?.config || { client: "mysql2" }).getAbstractType(column); const dataTypeLow = column && column.dt && column.dt.toLowerCase(); const isBoolean = abstractType === "boolean"; const isString = abstractType === "string"; const isTextArea = uiDatatype === UITypes.LongText; const isInt = abstractType === "integer"; const isFloat = abstractType === "float"; const isDate = abstractType === "date" || uiDatatype === "Date"; const isTime = abstractType === "time" || uiDatatype === "Time"; const isDateTime = abstractType === "datetime" || uiDatatype === "DateTime"; const isJSON = uiDatatype === "JSON"; const isEnum = uiDatatype === "SingleSelect"; const isSet = uiDatatype === "MultiSelect"; const isURL = uiDatatype === "URL"; const isEmail = uiDatatype === UITypes.Email; const isAttachment = uiDatatype === "Attachment"; const isRating = uiDatatype === UITypes.Rating; const isCurrency = uiDatatype === "Currency"; const isDuration = uiDatatype === UITypes.Duration; const isAutoSaved = [ UITypes.SingleLineText, UITypes.LongText, UITypes.PhoneNumber, UITypes.Email, UITypes.URL, UITypes.Number, UITypes.Decimal, UITypes.Percent, UITypes.Count, UITypes.AutoNumber, UITypes.SpecificDBType, UITypes.Geometry ].includes(uiDatatype); const isManualSaved = [ UITypes.Currency, UITypes.Year, UITypes.Time, UITypes.Duration ].includes(uiDatatype); return { abstractType, dataTypeLow, isBoolean, isString, isTextArea, isInt, isFloat, isDate, isTime, isDateTime, isJSON, isEnum, isSet, isURL, isEmail, isAttachment, isRating, isCurrency, isDuration, isAutoSaved, isManualSaved }; };