teableio/teable

View on GitHub
apps/nestjs-backend/src/features/field/model/field-dto/date-field.dto.ts

Summary

Maintainability
A
35 mins
Test Coverage
import { DateFieldCore } from '@teable/core';
import type { FieldBase } from '../field-base';

export class DateFieldDto extends DateFieldCore implements FieldBase {
  get isStructuredCellValue() {
    return false;
  }

  convertCellValue2DBValue(value: unknown): unknown {
    if (this.isMultipleCellValue) {
      return value == null ? value : JSON.stringify(value);
    }
    return value;
  }

  convertDBValue2CellValue(value: unknown): unknown {
    if (this.isMultipleCellValue) {
      return value == null || typeof value === 'object' ? value : JSON.parse(value as string);
    }
    if (value instanceof Date) {
      return value.toISOString();
    }

    if (typeof value === 'string' || typeof value === 'number') {
      return new Date(value).toISOString();
    }

    return value;
  }
}